[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