[jboss-svn-commits] JBL Code SVN: r18847 - in labs/jbossrules/trunk/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 13:37:16 EDT 2008


Author: fmeyer
Date: 2008-03-11 13:37:15 -0400 (Tue, 11 Mar 2008)
New Revision: 18847

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


Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.java	2008-03-11 17:35:28 UTC (rev 18846)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaConsequenceBuilder.java	2008-03-11 17:37:15 UTC (rev 18847)
@@ -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/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2008-03-11 17:35:28 UTC (rev 18846)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2008-03-11 17:37:15 UTC (rev 18847)
@@ -18,6 +18,7 @@
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
+import java.io.File;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.ObjectInput;
@@ -4478,7 +4479,35 @@
                       1,
                       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();

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ModifyBlock.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ModifyBlock.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ModifyBlock.drl	2008-03-11 17:37:15 UTC (rev 18847)
@@ -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