[jboss-svn-commits] JBL Code SVN: r12953 - in labs/jbossrules/trunk: 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
Fri Jun 29 13:20:01 EDT 2007


Author: tirelli
Date: 2007-06-29 13:20:01 -0400 (Fri, 29 Jun 2007)
New Revision: 12953

Modified:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ConstraintConnectors.drl
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/AbstractCompositeConstraint.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/AndConstraint.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/OrConstraint.java
Log:
JBRULES-909: Fixing problem with variable constraint contexts.

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	2007-06-29 16:59:23 UTC (rev 12952)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2007-06-29 17:20:01 UTC (rev 12953)
@@ -2711,20 +2711,26 @@
         oldChili2.setAge( 48 );
         oldChili2.setHair( "blue" );
 
+        final Person veryold = new Person( "very old" );
+        veryold.setAge( 99 );
+        veryold.setHair( "gray" );
+
         workingMemory.insert( youngChili1 );
         workingMemory.insert( youngChili2 );
         workingMemory.insert( chili1 );
         workingMemory.insert( chili2 );
         workingMemory.insert( oldChili1 );
         workingMemory.insert( oldChili2 );
+        workingMemory.insert( veryold );
 
         workingMemory.fireAllRules();
 
-        assertEquals( 3,
+        assertEquals( 4,
                       results.size() );
         assertEquals( chili1, results.get( 0 ) );
         assertEquals( oldChili1, results.get( 1 ) );
         assertEquals( youngChili1, results.get( 2 ) );
+        assertEquals( veryold, results.get( 3 ) );
 
     }
 
@@ -3030,6 +3036,4 @@
         assertEquals( "not memberOf", results.get( 1 ));
     }
 
-    
-    
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ConstraintConnectors.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ConstraintConnectors.drl	2007-06-29 16:59:23 UTC (rev 12952)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ConstraintConnectors.drl	2007-06-29 17:20:01 UTC (rev 12953)
@@ -29,3 +29,13 @@
     then
         results.add( $person );
 end    
+
+rule "4. Constraint connectors"
+	salience 5
+	when
+	    # forcing a variable restriction so we can trigger the issue reported in JBRULES-909
+	    Person( $age : age == 48, hair == "blue" )  
+		$person : Person( age > $age || hair == "gray" )
+	then
+		results.add( $person );
+end

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/AbstractCompositeConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/AbstractCompositeConstraint.java	2007-06-29 16:59:23 UTC (rev 12952)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/AbstractCompositeConstraint.java	2007-06-29 17:20:01 UTC (rev 12953)
@@ -131,7 +131,7 @@
      * {@inheritDoc}
      */
     public ContextEntry getContextEntry() {
-        return new MultiFieldOrConstraintContextEntry( this.betaConstraints );
+        return new MultiFieldConstraintContextEntry( this.betaConstraints );
     }
 
     public int hashCode() {
@@ -167,16 +167,16 @@
      * 
      * @author etirelli
      */
-    protected static class MultiFieldOrConstraintContextEntry
+    protected static class MultiFieldConstraintContextEntry
         implements
         ContextEntry {
 
         private static final long    serialVersionUID = -612826751146514955L;
 
-        private final ContextEntry[] contexts;
+        public final ContextEntry[] contexts;
         public ContextEntry          next;
 
-        public MultiFieldOrConstraintContextEntry(BetaNodeFieldConstraint[] constraints) {
+        public MultiFieldConstraintContextEntry(BetaNodeFieldConstraint[] constraints) {
             contexts = new ContextEntry[constraints.length];
             for ( int i = 0; i < contexts.length; i++ ) {
                 contexts[i] = constraints[i].getContextEntry();

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/AndConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/AndConstraint.java	2007-06-29 16:59:23 UTC (rev 12952)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/AndConstraint.java	2007-06-29 17:20:01 UTC (rev 12953)
@@ -21,6 +21,7 @@
 
 import org.drools.common.InternalWorkingMemory;
 import org.drools.reteoo.ReteTuple;
+import org.drools.rule.AbstractCompositeConstraint.MultiFieldConstraintContextEntry;
 import org.drools.util.ArrayUtils;
 
 /**
@@ -58,7 +59,7 @@
                                        Object object) {
         if ( this.betaConstraints.length > 0 ) {
             for ( int i = 0; i < this.betaConstraints.length; i++ ) {
-                if ( !this.betaConstraints[i].isAllowedCachedLeft( context,
+                if ( !this.betaConstraints[i].isAllowedCachedLeft( ((MultiFieldConstraintContextEntry)context).contexts[i],
                                                                    object ) ) {
                     return false;
                 }
@@ -75,7 +76,7 @@
         if ( this.betaConstraints.length > 0 ) {
             for ( int i = 0; i < this.betaConstraints.length; i++ ) {
                 if ( !this.betaConstraints[i].isAllowedCachedRight( tuple,
-                                                                    context ) ) {
+                                                                    ((MultiFieldConstraintContextEntry)context).contexts[i] ) ) {
                     return false;
                 }
             }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/OrConstraint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/OrConstraint.java	2007-06-29 16:59:23 UTC (rev 12952)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/OrConstraint.java	2007-06-29 17:20:01 UTC (rev 12953)
@@ -61,7 +61,7 @@
                                        Object object) {
         if ( this.betaConstraints.length > 0 ) {
             for ( int i = 0; i < this.betaConstraints.length; i++ ) {
-                if ( this.betaConstraints[i].isAllowedCachedLeft( context,
+                if ( this.betaConstraints[i].isAllowedCachedLeft( ((MultiFieldConstraintContextEntry)context).contexts[i],
                                                                   object ) ) {
                     return true;
                 }
@@ -79,7 +79,7 @@
         if ( this.betaConstraints.length > 0 ) {
             for ( int i = 0; i < this.betaConstraints.length; i++ ) {
                 if ( this.betaConstraints[i].isAllowedCachedRight( tuple,
-                                                                   context ) ) {
+                                                                   ((MultiFieldConstraintContextEntry)context).contexts[i] ) ) {
                     return true;
                 }
             }




More information about the jboss-svn-commits mailing list