[jboss-svn-commits] JBL Code SVN: r12196 - labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon May 28 23:50:26 EDT 2007


Author: michael.neale at jboss.com
Date: 2007-05-28 23:50:26 -0400 (Mon, 28 May 2007)
New Revision: 12196

Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
Log:
JBRULES-877 RuleFlow in package

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2007-05-29 03:45:58 UTC (rev 12195)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2007-05-29 03:50:26 UTC (rev 12196)
@@ -25,6 +25,7 @@
 import java.util.Set;
 
 import org.apache.commons.jci.problems.CompilationProblem;
+import org.drools.RuntimeDroolsException;
 import org.drools.base.ClassFieldExtractorCache;
 import org.drools.base.ClassTypeResolver;
 import org.drools.base.TypeResolver;
@@ -48,6 +49,8 @@
 import org.drools.rule.builder.RuleBuilder;
 import org.drools.rule.builder.dialect.java.JavaDialect;
 import org.drools.rule.builder.dialect.mvel.MVELDialect;
+import org.drools.ruleflow.common.core.IProcess;
+import org.drools.ruleflow.core.impl.RuleFlowProcess;
 import org.drools.xml.XmlPackageReader;
 import org.xml.sax.SAXException;
 
@@ -74,6 +77,8 @@
 
     private DialectRegistry             dialects;
 
+    private ProcessBuilder processBuilder;
+
     /**
      * Use this when package is starting from scratch.
      */
@@ -196,6 +201,23 @@
         this.results.addAll( parser.getErrors() );
         addPackage( pkg );
     }
+    
+    /**
+     * Add a ruleflow (.rt) asset to this package.
+     */
+    public void addRuleFlow(Reader processSource) {
+        if (this.processBuilder == null) {
+            this.processBuilder = new ProcessBuilder(this);
+        }
+        try {
+            this.processBuilder.addProcessFromFile( processSource );
+        } catch ( Exception e ) {
+            if (e instanceof RuntimeException) {
+                throw (RuntimeException) e;
+            }
+            throw new RuntimeDroolsException("Unable to load process.", e);
+        }
+    }
 
     /**
      * This adds a package from a Descr/AST This will also trigger a compile, if
@@ -378,10 +400,11 @@
      * Compiled packages are serializable.
      */
     public Package getPackage() {
-
         if ( hasErrors() ) {
             this.pkg.setError( getErrors().toString() );
         }
+        addRuleFlowsToPackage(this.processBuilder, pkg);
+        
         return this.pkg;
     }
     
@@ -389,10 +412,20 @@
         return this.configuration;
     }
 
+    private void addRuleFlowsToPackage(ProcessBuilder processBuilder, Package pkg) {
+        if ( processBuilder != null ) {
+            IProcess[] processes = processBuilder.getProcesses();
+            for ( int i = 0; i < processes.length; i++ ) {
+                pkg.addRuleFlow( processes[i] );
+            }
+        }
+    }
+
     
     public ClassFieldExtractorCache getClassFieldExtractorCache() {
         return this.classFieldExtractorCache;
     }
+
     /**
      * This will return true if there were errors in the package building and
      * compiling phase




More information about the jboss-svn-commits mailing list