[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