[jboss-svn-commits] JBL Code SVN: r15526 - in labs/jbossrules/trunk/drools-compiler/src: test/java/org/drools/compiler and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Oct 2 20:18:43 EDT 2007


Author: KrisVerlaenen
Date: 2007-10-02 20:18:42 -0400 (Tue, 02 Oct 2007)
New Revision: 15526

Added:
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/empty_ruleflow.rfm
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/ProcessBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/ruleflow.rfm
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ruleflowClear.rfm
Log:
JBRULES-1244: Ruleflows should have a package name
 - Process now has a packageName

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-10-02 23:22:36 UTC (rev 15525)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2007-10-03 00:18:42 UTC (rev 15526)
@@ -217,9 +217,6 @@
         if ( this.processBuilder == null ) {
             this.processBuilder = new ProcessBuilder( this );
         }
-        if ( this.pkg == null) {
-        	this.pkg = new Package();
-        }
         try {
             this.processBuilder.addProcessFromFile( processSource );
         } catch ( Exception e ) {

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java	2007-10-02 23:22:36 UTC (rev 15525)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java	2007-10-03 00:18:42 UTC (rev 15526)
@@ -16,6 +16,7 @@
  * limitations under the License.
  */
 
+import java.io.IOException;
 import java.io.Reader;
 import java.io.StringReader;
 import java.util.ArrayList;
@@ -72,13 +73,15 @@
 	            this.processes.add( process );
 	            // generate and add rule for process
 	            String rules = generateRules( process );
-	            if (rules != null && rules.length() != 0) {
-	            	try {
-	            		packageBuilder.addPackageFromDrl(new StringReader(rules));
-	            	} catch (Throwable t) {
-	            		// should never occur
-	            	}
-	            }
+        		try {
+        			packageBuilder.addPackageFromDrl(new StringReader(rules));
+        		} catch (IOException e) {
+        			// should never occur
+        			e.printStackTrace(System.err);
+        		} catch (DroolsParserException e) {
+        			// should never occur
+        			e.printStackTrace(System.err);
+        		}
     		}
     	}
     }
@@ -86,17 +89,12 @@
     public void addProcessFromFile(final Reader reader) throws Exception {
         final XStream stream = new XStream();
         stream.setMode( XStream.ID_REFERENCES );
-
-        
         final ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();
         final ClassLoader newLoader = this.getClass().getClassLoader();
         try {
             Thread.currentThread().setContextClassLoader( newLoader );
             final RuleFlowProcess process = (RuleFlowProcess) stream.fromXML( reader );
             addProcess( process );
-        } catch ( final Exception t ) {
-            t.printStackTrace();
-            throw t;
         } finally {
             Thread.currentThread().setContextClassLoader( oldLoader );
         }
@@ -107,6 +105,7 @@
     	String result = "";
     	if (process instanceof RuleFlowProcessImpl) {
     		RuleFlowProcessImpl ruleFlow = (RuleFlowProcessImpl) process;
+    		result = "package " + ruleFlow.getPackageName() + "\n" + result;
     		List imports = ruleFlow.getImports();
     		if (imports != null) {
     			for (Iterator iterator = imports.iterator(); iterator.hasNext(); ) {
@@ -142,7 +141,7 @@
     
     private String createSplitRule(Process process, Connection connection, String constraint) {
 		return 
-    		"rule \"RuleFlow-" + process.getId() + "-"
+    		"rule \"RuleFlow-Split-" + process.getId() + "-"
     			+ connection.getFrom().getId() + "-" + connection.getTo().getId() + "\" \n" + 
 			"      ruleflow-group \"DROOLS_SYSTEM\" \n" + 
 			"    when \n" + 
@@ -153,7 +152,7 @@
     
     private String createMilestoneRule(Process process, MilestoneNode milestone) {
 		return 
-    		"rule \"RuleFlow-" + process.getId() + "-" + milestone.getId() + "\" \n" + 
+    		"rule \"RuleFlow-Milestone-" + process.getId() + "-" + milestone.getId() + "\" \n" + 
 			"      ruleflow-group \"DROOLS_SYSTEM\" \n" + 
 			"    when \n" + 
 			"      " + milestone.getConstraint() + "\n" +

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java	2007-10-02 23:22:36 UTC (rev 15525)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java	2007-10-03 00:18:42 UTC (rev 15526)
@@ -1284,6 +1284,10 @@
         public String getVersion() {
             return null;
         }
+        
+        public String getPackageName() {
+        	return null;
+        }
 
         public void setId(String id) {
         }
@@ -1296,6 +1300,9 @@
 
         public void setVersion(String version) {
         }
+        
+        public void setPackageName(String packageName) {
+        }
 
     }
 

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java	2007-10-02 23:22:36 UTC (rev 15525)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/ExecutionFlowControlTest.java	2007-10-03 00:18:42 UTC (rev 15526)
@@ -24,6 +24,7 @@
 import org.drools.compiler.DroolsParserException;
 import org.drools.compiler.PackageBuilder;
 import org.drools.compiler.ProcessBuilder;
+import org.drools.compiler.PackageBuilder.PackageMergeException;
 import org.drools.event.ActivationCancelledEvent;
 import org.drools.event.ActivationCreatedEvent;
 import org.drools.event.AgendaEventListener;
@@ -672,7 +673,65 @@
                       processInstance.getState() );
         
     }
+    
+    public void testLoadingRuleFlowInPackage1() throws Exception {
+    	// adding ruleflow before adding package
+        final PackageBuilder builder = new PackageBuilder();
+        builder.addRuleFlow( new InputStreamReader( getClass().getResourceAsStream( "ruleflow.rfm" ) ) );
+        builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "ruleflow.drl" ) ) );
+        builder.getPackage();
+    }
 
+    public void testLoadingRuleFlowInPackage2() throws Exception {
+    	// only adding ruleflow
+        final PackageBuilder builder = new PackageBuilder();
+        builder.addRuleFlow( new InputStreamReader( getClass().getResourceAsStream( "ruleflow.rfm" ) ) );
+        builder.getPackage();
+    }
+
+    public void testLoadingRuleFlowInPackage3() throws Exception {
+    	// only adding ruleflow without any generated rules
+        final PackageBuilder builder = new PackageBuilder();
+        builder.addRuleFlow( new InputStreamReader( getClass().getResourceAsStream( "empty_ruleflow.rfm" ) ) );
+        builder.getPackage();
+    }
+
+    public void testLoadingRuleFlowInPackage4() throws Exception {
+    	// adding ruleflows of different package
+        final PackageBuilder builder = new PackageBuilder();
+        builder.addRuleFlow( new InputStreamReader( getClass().getResourceAsStream( "empty_ruleflow.rfm" ) ) );
+        try {
+        	builder.addRuleFlow( new InputStreamReader( getClass().getResourceAsStream( "ruleflow.rfm" ) ) );
+        	throw new Exception("An exception should have been thrown.");
+        } catch (PackageMergeException e) {
+        	// do nothing
+        }
+    }
+
+    public void testLoadingRuleFlowInPackage5() throws Exception {
+    	// adding ruleflow of different package than rules
+        final PackageBuilder builder = new PackageBuilder();
+        builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "ruleflow.drl" ) ) );
+        try {
+        	builder.addRuleFlow( new InputStreamReader( getClass().getResourceAsStream( "empty_ruleflow.rfm" ) ) );
+        	throw new Exception("An exception should have been thrown.");
+        } catch (PackageMergeException e) {
+        	// do nothing
+        }
+    }
+
+    public void testLoadingRuleFlowInPackage6() throws Exception {
+    	// adding rules of different package than ruleflow
+        final PackageBuilder builder = new PackageBuilder();
+    	builder.addRuleFlow( new InputStreamReader( getClass().getResourceAsStream( "empty_ruleflow.rfm" ) ) );
+        try {
+            builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "ruleflow.drl" ) ) );
+        	throw new Exception("An exception should have been thrown.");
+        } catch (PackageMergeException e) {
+        	// do nothing
+        }
+    }
+
     private RuleBase loadRuleBase(final Reader reader) throws IOException,
                                                       DroolsParserException,
                                                       Exception {

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/empty_ruleflow.rfm
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/empty_ruleflow.rfm	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/empty_ruleflow.rfm	2007-10-03 00:18:42 UTC (rev 15526)
@@ -0,0 +1,46 @@
+<org.drools.ruleflow.core.impl.RuleFlowProcessImpl id="1">
+  <nodes id="2">
+    <entry>
+      <long>1</long>
+      <org.drools.ruleflow.core.impl.StartNodeImpl id="3">
+        <id>1</id>
+        <name>Start</name>
+        <incomingConnections id="4"/>
+        <outgoingConnections id="5">
+          <org.drools.ruleflow.core.impl.ConnectionImpl id="6">
+            <type>1</type>
+            <from class="org.drools.ruleflow.core.impl.StartNodeImpl" reference="3"/>
+            <to class="org.drools.ruleflow.core.impl.EndNodeImpl" id="7">
+              <id>4</id>
+              <name>End</name>
+              <incomingConnections id="8">
+                <org.drools.ruleflow.core.impl.ConnectionImpl reference="6"/>
+              </incomingConnections>
+              <outgoingConnections id="9"/>
+            </to>
+          </org.drools.ruleflow.core.impl.ConnectionImpl>
+        </outgoingConnections>
+      </org.drools.ruleflow.core.impl.StartNodeImpl>
+    </entry>
+    <entry>
+      <long>4</long>
+      <org.drools.ruleflow.core.impl.EndNodeImpl reference="7"/>
+    </entry>
+  </nodes>
+  <variables id="10"/>
+  <lastNodeId>9</lastNodeId>
+  <imports id="11">
+    <string>com.sample.Property</string>
+  </imports>
+  <globals id="12">
+    <entry>
+      <string>property</string>
+      <string>Property</string>
+    </entry>
+  </globals>
+  <id>com.sample.ruleflow</id>
+  <name>Ruleflow</name>
+  <version>1.0</version>
+  <type>RuleFlow</type>
+  <packageName>com.empty</packageName>
+</org.drools.ruleflow.core.impl.RuleFlowProcessImpl>
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/ruleflow.rfm
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/ruleflow.rfm	2007-10-02 23:22:36 UTC (rev 15525)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/ruleflow.rfm	2007-10-03 00:18:42 UTC (rev 15526)
@@ -147,4 +147,5 @@
   <id>0</id>
   <name>flow</name>
   <type>Workflow</type>
+  <packageName>com.sample</packageName>
 </org.drools.ruleflow.core.impl.RuleFlowProcessImpl>
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ruleflowClear.rfm
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ruleflowClear.rfm	2007-10-02 23:22:36 UTC (rev 15525)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ruleflowClear.rfm	2007-10-03 00:18:42 UTC (rev 15526)
@@ -50,4 +50,5 @@
   <id>ruleFlowClear</id>
   <name>test_ruleflowClear</name>
   <type>RuleFlow</type>
+  <packageName>com.sample</packageName>
 </org.drools.ruleflow.core.impl.RuleFlowProcessImpl>
\ No newline at end of file




More information about the jboss-svn-commits mailing list