[jboss-svn-commits] JBL Code SVN: r15741 - in labs/jbossrules/trunk/drools-jbrms/src: test/java/org/drools/brms/server/util and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Oct 11 03:49:06 EDT 2007
Author: michael.neale at jboss.com
Date: 2007-10-11 03:49:06 -0400 (Thu, 11 Oct 2007)
New Revision: 15741
Modified:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/FileManagerUtils.java
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/FileManagerUtilsTest.java
Log:
JBRULES-1269 Import DRL to update assets
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/FileManagerUtils.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/FileManagerUtils.java 2007-10-11 07:17:57 UTC (rev 15740)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/FileManagerUtils.java 2007-10-11 07:49:06 UTC (rev 15741)
@@ -192,7 +192,12 @@
for ( Asset as : imp.getAssets() ) {
if ( existing && pkg.containsAsset( as.name ) ) {
- //skip it
+ AssetItem asset = pkg.loadAsset(as.name);
+ if (asset.getFormat().equals(as.format)) {
+ asset.updateContent(as.content);
+ asset.checkin("Imported change form external DRL");
+ } //skip it if not the right format
+
} else {
AssetItem asset = pkg.addAsset( as.name, "<imported>" );
Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/FileManagerUtilsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/FileManagerUtilsTest.java 2007-10-11 07:17:57 UTC (rev 15740)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/FileManagerUtilsTest.java 2007-10-11 07:49:06 UTC (rev 15741)
@@ -1,13 +1,13 @@
package org.drools.brms.server.util;
/*
* Copyright 2005 JBoss Inc
- *
+ *
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -41,30 +41,30 @@
import org.drools.repository.RulesRepository;
public class FileManagerUtilsTest extends TestCase {
-
+
public void testAttachFile() throws Exception {
-
+
FileManagerUtils uploadHelper = new FileManagerUtils();
-
+
RulesRepository repo = new RulesRepository(TestEnvironmentSessionHelper.getSession());
uploadHelper.repository = repo;
AssetItem item = repo.loadDefaultPackage().addAsset( "testUploadFile", "description" );
FormData upload = new FormData();
-
+
upload.setFile( new MockFile() );
upload.setUuid( item.getUUID() );
-
-
+
+
uploadHelper.attachFile( upload );
-
+
AssetItem item2 = repo.loadDefaultPackage().loadAsset( "testUploadFile" );
byte[] data = item2.getBinaryContentAsBytes();
-
+
assertNotNull(data);
assertEquals("foo bar", new String(data));
assertEquals("foo.bar", item2.getBinaryContentAttachmentFileName());
}
-
+
public void testUploadXmlFile() throws Exception {
RulesRepository repo = new RulesRepository(TestEnvironmentSessionHelper.getSession());
@@ -72,7 +72,7 @@
repo.importRulesRepository( repo.dumpRepositoryXml() );
assertTrue( repo.containsPackage( "testUploadXmlFile" ) );
}
-
+
public void testGetFilebyUUID() throws Exception {
FileManagerUtils uploadHelper = new FileManagerUtils();
RulesRepository repo = new RulesRepository(TestEnvironmentSessionHelper.getSession());
@@ -93,14 +93,14 @@
assertEquals("foo bar", new String(out.toByteArray()));
assertEquals("foo.bar", filename);
}
-
+
public void testGetBinaryPackage() throws Exception {
RulesRepository repo = new RulesRepository(TestEnvironmentSessionHelper.getSession());
ServiceImplementation impl = new ServiceImplementation();
impl.repository = repo;
-
-
+
+
long before = System.currentTimeMillis();
Thread.sleep( 20 );
FileManagerUtils uploadHelper = new FileManagerUtils();
@@ -112,124 +112,139 @@
pkg.checkin( "" );
assertTrue(before < uploadHelper.getLastModified( pkg.getName(), "LATEST" ));
-
-
+
+
impl.createPackageSnapshot( pkg.getName(), "SNAPPY 1", false, "" );
-
+
ByteArrayOutputStream out = new ByteArrayOutputStream();
String fileName = uploadHelper.loadBinaryPackage( pkg.getName(), PackageSnapshotView.LATEST_SNAPSHOT, true, out );
assertEquals("testGetBinaryPackageServlet.pkg", fileName);
byte[] file = out.toByteArray();
assertNotNull(file);
assertEquals("foo", new String(file));
-
-
+
+
out = new ByteArrayOutputStream();
fileName = uploadHelper.loadBinaryPackage( pkg.getName(),"SNAPPY 1", false, out );
assertEquals("testGetBinaryPackageServlet_SNAPPY+1.pkg", fileName);
file = out.toByteArray();
assertNotNull(file);
- assertEquals("foo", new String(file));
-
+ assertEquals("foo", new String(file));
+
Thread.sleep( 100 );
impl.createPackageSnapshot( pkg.getName(), "SNAPX", false, "" );
-
-
+
+
long lastMod = uploadHelper.getLastModified( pkg.getName(), "SNAPPY 1");
assertTrue(pkg.getLastModified().getTimeInMillis() < lastMod);
-
+
Thread.sleep( 100 );
-
+
impl.createPackageSnapshot( pkg.getName(), "SNAPX", true, "yeah");
-
+
long lastMod2 = uploadHelper.getLastModified( pkg.getName(), "SNAPX");
assertTrue(lastMod < lastMod2);
-
+
}
-
+
public void testClassicDRLImport() throws Exception {
FileManagerUtils fm = new FileManagerUtils();
fm.repository = new RulesRepository(TestEnvironmentSessionHelper.getSession());
String drl = "package testClassicDRLImport\n import blah \n rule 'ola' \n when \n then \n end \n rule 'hola' \n when \n then \n end";
- InputStream in = new ByteArrayInputStream(drl.getBytes());
+ InputStream in = new ByteArrayInputStream(drl.getBytes());
fm.importClassicDRL( in );
-
+
PackageItem pkg = fm.repository.loadPackage( "testClassicDRLImport" );
assertNotNull(pkg);
-
-
+
+
List<AssetItem> rules = iteratorToList(pkg.getAssets());
assertEquals(2, rules.size());
-
+
final AssetItem rule1 = rules.get( 0 );
assertEquals("ola", rule1.getName());
assertNotNull(rule1.getContent());
assertEquals(AssetFormats.DRL, rule1.getFormat());
assertTrue(rule1.getContent().indexOf( "when" ) > -1);
-
-
+
+
final AssetItem rule2 = rules.get( 1 );
assertEquals("hola", rule2.getName());
assertNotNull(rule2.getContent());
assertEquals(AssetFormats.DRL, rule2.getFormat());
assertTrue(rule2.getContent().indexOf( "when" ) > -1);
-
+
assertNotNull(pkg.getHeader());
assertTrue(pkg.getHeader().indexOf( "import" ) > -1);
-
+
//now lets import an existing thing
drl = "package testClassicDRLImport\n import should not see \n rule 'ola2' \n when \n then \n end \n rule 'hola' \n when \n then \n end";
- in = new ByteArrayInputStream(drl.getBytes());
+ in = new ByteArrayInputStream(drl.getBytes());
fm.importClassicDRL( in );
-
+
pkg = fm.repository.loadPackage( "testClassicDRLImport" );
assertNotNull(pkg);
-
+
//it should not overwrite this.
assertTrue(pkg.getHeader().indexOf( "import should not see" ) == -1);
-
+
rules = iteratorToList(pkg.getAssets());
assertEquals(3, rules.size());
-
-
+
+
+ //now we will import a change, check that it appears. a change to the "ola" rule
+ AssetItem assetOriginal = fm.repository.loadPackage("testClassicDRLImport").loadAsset("ola");
+ long ver = assetOriginal.getVersionNumber();
+
+
+
+ drl = "package testClassicDRLImport\n import blah \n rule 'ola' \n when CHANGED\n then \n end \n rule 'hola' \n when \n then \n end";
+ in = new ByteArrayInputStream(drl.getBytes());
+ fm.importClassicDRL( in );
+ pkg = fm.repository.loadPackage("testClassicDRLImport");
+ AssetItem asset = pkg.loadAsset("ola");
+
+ assertTrue(asset.getContent().indexOf("CHANGED") > 0);
+ assertEquals(ver + 1, asset.getVersionNumber());
+
}
-
+
public void testClassicDRLImportWithDSL() throws Exception {
FileManagerUtils fm = new FileManagerUtils();
fm.repository = new RulesRepository(TestEnvironmentSessionHelper.getSession());
String drl = "package testClassicDRLImportDSL\n import blah \n expander goo \n rule 'ola' \n when \n then \n end \n rule 'hola' \n when \n then \n end";
- InputStream in = new ByteArrayInputStream(drl.getBytes());
+ InputStream in = new ByteArrayInputStream(drl.getBytes());
fm.importClassicDRL( in );
-
+
PackageItem pkg = fm.repository.loadPackage( "testClassicDRLImportDSL" );
assertNotNull(pkg);
-
-
+
+
List<AssetItem> rules = iteratorToList(pkg.getAssets());
assertEquals(2, rules.size());
-
+
final AssetItem rule1 = rules.get( 0 );
assertEquals("ola", rule1.getName());
assertNotNull(rule1.getContent());
assertEquals(AssetFormats.DSL_TEMPLATE_RULE, rule1.getFormat());
assertTrue(rule1.getContent().indexOf( "when" ) > -1);
-
-
+
+
final AssetItem rule2 = rules.get( 1 );
assertEquals("hola", rule2.getName());
assertNotNull(rule2.getContent());
assertEquals(AssetFormats.DSL_TEMPLATE_RULE, rule2.getFormat());
assertTrue(rule2.getContent().indexOf( "when" ) > -1);
-
+
assertNotNull(pkg.getHeader());
assertTrue(pkg.getHeader().indexOf( "import" ) > -1);
-
+
}
-
+
private List iteratorToList(Iterator assets) {
List<AssetItem> list = new ArrayList<AssetItem>();
for ( Iterator iter = assets; iter.hasNext(); ) {
@@ -239,19 +254,19 @@
return list;
}
-
+
}
class MockFile implements FileItem {
-
+
private static final long serialVersionUID = 400L;
InputStream stream = new ByteArrayInputStream("foo bar".getBytes());
-
+
public void setInputStream(InputStream is) throws IOException {
stream.close();
stream = is;
}
-
+
public void delete() {
}
@@ -305,16 +320,16 @@
public void setFieldName(String arg0) {
-
+
}
public void setFormField(boolean arg0) {
-
+
}
public void write(File arg0) throws Exception {
-
+
}
-
+
}
\ No newline at end of file
More information about the jboss-svn-commits
mailing list