[jboss-svn-commits] JBL Code SVN: r29883 - in labs/jbossrules/branches/4.0.x: drools-compiler/src/test/resources/org/drools/integrationtests and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sat Oct 31 11:55:12 EDT 2009
Author: tirelli
Date: 2009-10-31 11:55:11 -0400 (Sat, 31 Oct 2009)
New Revision: 29883
Added:
labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/notWithNesting.drl
Modified:
labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java
labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/rule/LogicTransformer.java
Log:
JBRULES-2323: fixing CCE when using implicit variables and OR CE
Modified: labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java 2009-10-31 05:37:27 UTC (rev 29882)
+++ labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java 2009-10-31 15:55:11 UTC (rev 29883)
@@ -19,6 +19,9 @@
import org.drools.Cheese;
import org.drools.Cheesery;
+import org.drools.FactA;
+import org.drools.FactB;
+import org.drools.FactC;
import org.drools.FactHandle;
import org.drools.Order;
import org.drools.OrderItem;
@@ -393,6 +396,26 @@
list.size() );
}
+ public void testImplicitBindingsAndNesting() throws Exception {
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "notWithNesting.drl" ) ) );
+ final Package pkg = builder.getPackage();
+
+ RuleBase ruleBase = getRuleBase();
+ ruleBase.addPackage( pkg );
+ StatefulSession workingMemory = ruleBase.newStatefulSession();
+
+ List list = new ArrayList();
+ workingMemory.setGlobal( "list",
+ list );
+
+ workingMemory.insert( new FactA("x") );
+ workingMemory.insert( new FactB("x") );
+ workingMemory.insert( new FactC("x") );
+
+ workingMemory.fireAllRules();
+ }
+
public void testExists() throws Exception {
RuleBase ruleBase = loadRuleBase( new InputStreamReader( getClass().getResourceAsStream( "exists_rule_test.drl" ) ) );
StatefulSession workingMemory = ruleBase.newStatefulSession();
Added: labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/notWithNesting.drl
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/notWithNesting.drl (rev 0)
+++ labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/notWithNesting.drl 2009-10-31 15:55:11 UTC (rev 29883)
@@ -0,0 +1,16 @@
+package org.drools
+
+import org.drools.Cheese
+import org.drools.Person
+
+global java.util.List list
+
+rule "not rule test"
+ when
+ $factA : FactA( $fA : field1 )
+ $factB : FactB( $fB : f1 )
+ (not FactC( f1 == $factB.f1 ) or FactC( ) )
+ then
+ list.add( $factB );
+end
+
Modified: labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/rule/LogicTransformer.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/rule/LogicTransformer.java 2009-10-31 05:37:27 UTC (rev 29882)
+++ labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/rule/LogicTransformer.java 2009-10-31 15:55:11 UTC (rev 29883)
@@ -160,6 +160,12 @@
if ( resolved != null && resolved != decl[i] ) {
constraint.replaceDeclaration( decl[i],
resolved );
+ } else if( resolved == null && decl[i].getPattern().getDeclaration() != null ) {
+ // it might be an implicit declaration, so fix the pattern
+ Declaration patDecl = resolver.getDeclaration( decl[i].getPattern().getDeclaration().getIdentifier() );
+ if( patDecl != null ) {
+ decl[i].setPattern( patDecl.getPattern() );
+ }
}
}
}
More information about the jboss-svn-commits
mailing list