[jboss-svn-commits] JBL Code SVN: r11065 - in labs/jbossrules/trunk/drools-jbrms/src: test/java/org/drools/brms/server/builder and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Apr 17 08:46:00 EDT 2007


Author: michael.neale at jboss.com
Date: 2007-04-17 08:46:00 -0400 (Tue, 17 Apr 2007)
New Revision: 11065

Modified:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/builder/ContentPackageAssembler.java
   labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/builder/ContentPackageAssemblerTest.java
Log:
JBRULES-773 BRMS assembler - package parsing working, now onto the assets

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/builder/ContentPackageAssembler.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/builder/ContentPackageAssembler.java	2007-04-17 11:52:14 UTC (rev 11064)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/builder/ContentPackageAssembler.java	2007-04-17 12:46:00 UTC (rev 11065)
@@ -2,14 +2,18 @@
 
 import java.io.IOException;
 import java.io.StringReader;
+import java.security.KeyStore.Builder;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.jar.JarInputStream;
 
+import org.drools.brms.client.common.AssetFormats;
 import org.drools.compiler.DroolsError;
 import org.drools.compiler.DroolsParserException;
 import org.drools.lang.descr.PackageDescr;
 import org.drools.lang.dsl.DSLMappingFile;
+import org.drools.repository.AssetItem;
+import org.drools.repository.AssetItemIterator;
 import org.drools.repository.PackageItem;
 import org.drools.repository.RulesRepositoryException;
 import org.drools.rule.Package;
@@ -23,11 +27,10 @@
 public class ContentPackageAssembler {
 
     private PackageItem pkg;
-    private Package binaryPackage;
     private List errors = new ArrayList();
 
     private BRMSPackageBuilder builder;
-    private List<DSLMappingFile> dslFiles;
+    List<DSLMappingFile> dslFiles;
     
     public ContentPackageAssembler(PackageItem assetPackage) {
         this.pkg = assetPackage;
@@ -54,28 +57,44 @@
         List<JarInputStream> jars = BRMSPackageBuilder.getJars( pkg );
         builder = BRMSPackageBuilder.getInstance( jars );
         builder.addPackage( new PackageDescr(pkg.getName()) );
-        try {
-            builder.addPackageFromDrl( new StringReader(pkg.getHeader()) );
-            if (builder.hasErrors()) {
-                recordBuilderErrors();
-                return false;
-            }
-        } catch ( DroolsParserException e ) {
-            throw new RulesRepositoryException("A serious error occurred trying to parser the package header.", e);
-        } catch ( IOException e ) {
-            throw new RulesRepositoryException(e);
+        addDrl(pkg.getHeader());
+        if (builder.hasErrors()) {
+            recordBuilderErrors();
+            return false;
         }
+
         
         this.dslFiles = BRMSPackageBuilder.getDSLMappingFiles( pkg, new BRMSPackageBuilder.ErrorEvent() {
             public void logError(String message) {
                 errors.add( new ContentAssemblyError(pkg, message) );
             }
         });
+        
+        AssetItemIterator it = this.pkg.listAssetsByFormat( new String[] {AssetFormats.FUNCTION} );
+        while(it.hasNext()) {
+            AssetItem func = (AssetItem) it.next();
+            addDrl( func.getContent() );
+            if (builder.hasErrors()) {
+                recordBuilderErrors();
+                return false;
+            }
+        }
+        
         return errors.size() == 0;
     }
 
+    private void addDrl(String drl) {
+        try {
+            builder.addPackageFromDrl( new StringReader(drl) );
+        } catch ( DroolsParserException e ) {
+            throw new RulesRepositoryException("Unexpected error when parsing package.", e);
+        } catch ( IOException e ) {
+            throw new RulesRepositoryException("IO Exception occurred when parsing package.", e);
+        }
+    }
 
 
+
     /**
      * This will accumulate the errors.
      */
@@ -94,7 +113,7 @@
         if (this.hasErrors()) {
             throw new IllegalStateException("There is no package available, as there were errors.");
         }
-        return binaryPackage;
+        return builder.getPackage();
     }
 
     

Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/builder/ContentPackageAssemblerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/builder/ContentPackageAssemblerTest.java	2007-04-17 11:52:14 UTC (rev 11064)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/builder/ContentPackageAssemblerTest.java	2007-04-17 12:46:00 UTC (rev 11065)
@@ -1,12 +1,56 @@
 package org.drools.brms.server.builder;
 
+import java.util.List;
+
+import org.drools.brms.client.common.AssetFormats;
+import org.drools.brms.client.ruleeditor.CheckinPopup;
+import org.drools.repository.AssetItem;
 import org.drools.repository.PackageItem;
+import org.drools.repository.RepositorySessionUtil;
+import org.drools.repository.RulesRepository;
+import org.drools.rule.Package;
 
 import junit.framework.TestCase;
 
 public class ContentPackageAssemblerTest extends TestCase {
 
     
+    public void testPackageConfig() throws Exception {
+        //test the config, no rule assets yet
+        RulesRepository repo = RepositorySessionUtil.getRepository();
+        PackageItem pkg = repo.createPackage( "testBuilderPackageConfig", "x" );
+        pkg.updateHeader( "import java.util.List" );
+        AssetItem func = pkg.addAsset( "func1", "a function" );
+        func.updateFormat( AssetFormats.FUNCTION );
+        func.updateContent( "function void doSomething() { \n System.err.println(List.class.toString()); }" );
+        func.checkin( "yeah" );
+        
+        func = pkg.addAsset( "func2", "q" );
+        func.updateFormat( AssetFormats.FUNCTION );
+        func.updateContent( "function void foo() { \nSystem.err.println(42); \n}");
+        func.checkin( "" );
+        
+        AssetItem ass = pkg.addAsset( "dsl", "m");
+        ass.updateFormat( AssetFormats.DSL );
+        ass.updateContent( "[when]Foo bar=String()" );
+        ass.checkin( "" );
+        repo.save();
+
+
+        //now lets light it up
+        ContentPackageAssembler assembler = new ContentPackageAssembler(pkg);
+        assertFalse(assembler.hasErrors());
+        Package bin = assembler.getBinaryPackage();
+        assertNotNull(bin);
+        assertEquals("testBuilderPackageConfig", bin.getName());
+        assertEquals(2, bin.getFunctions().size());
+        
+        assertTrue(bin.isValid());
+        assertEquals(1, assembler.dslFiles.size());
+        
+        
+    }
+    
     public void FIXME_testSimplePackage() throws Exception {
         PackageItem pkg = null;
         ContentPackageAssembler asm = new ContentPackageAssembler(pkg);




More information about the jboss-svn-commits mailing list