[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