[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