[jboss-svn-commits] JBL Code SVN: r18561 - in labs/jbossrules/trunk: drools-compiler/src/test/java/org/drools/integrationtests and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Feb 22 10:12:36 EST 2008
Author: tirelli
Date: 2008-02-22 10:12:36 -0500 (Fri, 22 Feb 2008)
New Revision: 18561
Added:
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_DeepNestedConstraints.drl
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/AbstractCompositeConstraint.java
Log:
JBRULES-1479: fixing bug in trunk
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java 2008-02-22 14:01:57 UTC (rev 18560)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/PatternBuilder.java 2008-02-22 15:12:36 UTC (rev 18561)
@@ -523,6 +523,9 @@
if ( container == null ) {
pattern.addConstraint( predicateConstraint );
} else {
+ if( predicateConstraint.getType().equals( Constraint.ConstraintType.UNKNOWN ) ) {
+ this.setConstraintType( pattern, (MutableTypeConstraint) predicateConstraint );
+ }
container.addConstraint( predicateConstraint );
}
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-02-22 14:01:57 UTC (rev 18560)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2008-02-22 15:12:36 UTC (rev 18561)
@@ -4841,6 +4841,33 @@
list.size() );
}
+ public void testDeepNestedConstraints() throws Exception {
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_DeepNestedConstraints.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 );
+
+ workingMemory.insert( new Person( "bob",
+ "muzzarela" ) );
+ workingMemory.insert( new Cheese( "brie",
+ 10 ) );
+ workingMemory.insert( new Cheese( "muzzarela",
+ 80 ) );
+
+ workingMemory.fireAllRules();
+
+ assertEquals( "should have fired twice",
+ 2,
+ list.size() );
+ }
+
public void testGetFactHandleEqualityBehavior() throws Exception {
final RuleBaseConfiguration conf = new RuleBaseConfiguration();
conf.setAssertBehaviour( RuleBaseConfiguration.AssertBehaviour.EQUALITY );
Copied: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_DeepNestedConstraints.drl (from rev 18559, labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_DeepNestedConstraints.drl)
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_DeepNestedConstraints.drl (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_DeepNestedConstraints.drl 2008-02-22 15:12:36 UTC (rev 18561)
@@ -0,0 +1,12 @@
+package org.drools;
+
+global java.util.List results;
+
+rule "deep nested constraints"
+when
+ Person( $likes : likes )
+ Cheese( ( ( type == "stilton" || type == $likes ) && ( price < 10 || price > 50 ) ) || eval( type.equals("brie") ) )
+then
+ results.add( "OK" );
+end
+
\ No newline at end of file
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 2008-02-22 14:01:57 UTC (rev 18560)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/AbstractCompositeConstraint.java 2008-02-22 15:12:36 UTC (rev 18561)
@@ -24,7 +24,6 @@
import org.drools.spi.AlphaNodeFieldConstraint;
import org.drools.spi.BetaNodeFieldConstraint;
import org.drools.spi.Constraint;
-import org.drools.spi.Constraint.ConstraintType;
import org.drools.util.ArrayUtils;
/**
@@ -38,6 +37,11 @@
protected BetaNodeFieldConstraint[] betaConstraints = new BetaNodeFieldConstraint[0];
protected Declaration[] requiredDeclarations = new Declaration[0];
+ public AbstractCompositeConstraint() {
+ super();
+ this.setType( Constraint.ConstraintType.ALPHA );
+ }
+
/**
* Adds an alpha constraint to the multi field OR constraint
*
@@ -72,6 +76,7 @@
tmp.length );
this.betaConstraints[this.betaConstraints.length - 1] = constraint;
this.updateRequiredDeclarations( constraint );
+ this.setType( Constraint.ConstraintType.BETA );
}
}
@@ -179,26 +184,8 @@
other.requiredDeclarations );
}
- public AbstractCompositeConstraint() {
- super();
- }
-
public abstract Object clone();
- public void setType(ConstraintType type) {
- super.setType( type );
- for( int i = 0; i < alphaConstraints.length; i++ ) {
- if( this.alphaConstraints[i] instanceof MutableTypeConstraint ) {
- ((MutableTypeConstraint)this.alphaConstraints[i]).setType( type );
- }
- }
- for( int i = 0; i < betaConstraints.length; i++ ) {
- if( this.betaConstraints[i] instanceof MutableTypeConstraint ) {
- ((MutableTypeConstraint)this.betaConstraints[i]).setType( type );
- }
- }
- }
-
/**
* A context entry for composite restrictions
*
More information about the jboss-svn-commits
mailing list