[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