[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