[jboss-svn-commits] JBL Code SVN: r18848 - in labs/jbossrules/branches/4.0.x/drools-compiler/src: test/java/org/drools/integrationtests and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Mar 11 14:09:18 EDT 2008


Author: fmeyer
Date: 2008-03-11 14:09:18 -0400 (Tue, 11 Mar 2008)
New Revision: 18848

Added:
   labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_ModifyBlock.drl
Modified:
   labs/jbossrules/branches/4.0.x/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.java
   labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
Log:
JBRULES-1501 Multiples modify causes variable duplication exception 


Modified: labs/jbossrules/branches/4.0.x/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.java	2008-03-11 17:37:15 UTC (rev 18847)
+++ labs/jbossrules/branches/4.0.x/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.java	2008-03-11 18:09:18 UTC (rev 18848)
@@ -180,6 +180,7 @@
             }
 
             // adding modify expression
+            consequence.append( "{\n" );
             consequence.append( ret.getName() );
             consequence.append( " __obj__ = (" );
             consequence.append( ret.getName() );
@@ -188,6 +189,7 @@
             consequence.append( ";\n" );
             // adding the modifyRetract call:
             consequence.append( "modifyRetract( __obj__ );\n" );
+            
 
             // adding each of the expressions:
             for ( Iterator exprIt = d.getExpressions().iterator(); exprIt.hasNext(); ) {
@@ -197,6 +199,7 @@
             }
             // adding the modifyInsert call:
             consequence.append( "modifyInsert( __obj__ );" );
+            consequence.append( "}\n" );
         }
         consequence.append( originalCode.substring( lastAdded ) );
 

Modified: labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2008-03-11 17:37:15 UTC (rev 18847)
+++ labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2008-03-11 18:09:18 UTC (rev 18848)
@@ -4610,6 +4610,35 @@
                       list.size() );
     }
 
+
+	public void testModifyBlock() throws Exception {
+	        final PackageBuilder builder = new PackageBuilder();
+	        builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_ModifyBlock.drl" ) ) );
+	        final Package pkg = builder.getPackage();
+
+	        final RuleBase ruleBase = getRuleBase();
+	        ruleBase.addPackage( pkg );
+	        final WorkingMemory workingMemory = ruleBase.newStatefulSession();
+
+	        final List list = new ArrayList();
+	        workingMemory.setGlobal( "results",
+	                                 list );
+
+	        Person bob = new Person( "Bob" );
+	        bob.setStatus( "hungry" );
+
+	        Cheese c = new Cheese();
+
+	        workingMemory.insert( bob );
+	        workingMemory.insert( c );
+
+	        workingMemory.fireAllRules();
+
+	        assertEquals( 10, c.getPrice() );
+	        assertEquals( "fine", bob.getStatus() );
+	    }
+	
+
     // this test requires mvel 1.2.19. Leaving it commented until mvel is released.
     public void testJavaModifyBlock() throws Exception {
         final PackageBuilder builder = new PackageBuilder();

Copied: labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_ModifyBlock.drl (from rev 18847, labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ModifyBlock.drl)
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_ModifyBlock.drl	                        (rev 0)
+++ labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_ModifyBlock.drl	2008-03-11 18:09:18 UTC (rev 18848)
@@ -0,0 +1,12 @@
+package org.drools;
+
+global java.util.List results;
+
+rule "test modify block"
+when
+    $p: Person( status == "hungry" )
+    $c: Cheese( )
+then
+    modify( $c ) {setPrice (10) }
+    modify( $p ) {setStatus("fine") }
+end
\ No newline at end of file




More information about the jboss-svn-commits mailing list