[jboss-svn-commits] JBL Code SVN: r14325 - 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
Thu Aug 16 16:21:20 EDT 2007
Author: tirelli
Date: 2007-08-16 16:21:20 -0400 (Thu, 16 Aug 2007)
New Revision: 14325
Added:
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_FromInsideNotAndExists.drl
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/FromBuilder.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/GroupElementBuilder.java
Log:
JBRULES-1096: fixing nasty regression of 'from' nested inside 'not' and 'exists'
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java 2007-08-16 20:03:28 UTC (rev 14324)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java 2007-08-16 20:21:20 UTC (rev 14325)
@@ -707,4 +707,42 @@
assertEquals( 0,
list4.size() );
}
+
+ public void testFromInsideNotAndExists() throws Exception {
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_ExistsWithFrom.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 );
+
+ final Cheese cheddar = new Cheese( "cheddar",
+ 7 );
+ final Cheese provolone = new Cheese( "provolone",
+ 5 );
+ final Cheesery cheesery = new Cheesery();
+
+ cheesery.addCheese( cheddar );
+ cheesery.addCheese( provolone );
+
+ FactHandle handle = workingMemory.insert( cheesery );
+ workingMemory.fireAllRules();
+ assertEquals( 0,
+ list.size() );
+
+ cheesery.addCheese( new Cheese( "stilton", 10 ) );
+ cheesery.removeCheese( cheddar );
+ workingMemory.update( handle, cheesery );
+ workingMemory.fireAllRules();
+ assertEquals( 2,
+ list.size() );
+
+ }
+
+
}
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_FromInsideNotAndExists.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_FromInsideNotAndExists.drl (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_FromInsideNotAndExists.drl 2007-08-16 20:21:20 UTC (rev 14325)
@@ -0,0 +1,19 @@
+package org.drools;
+
+global java.util.List results;
+
+rule "exists with from"
+ when
+ Cheesery( $cheeses : cheeses )
+ exists( Cheese( type == "stilton" ) from $cheeses )
+ then
+ results.add( "1" );
+end
+
+rule "not with from"
+ when
+ Cheesery( $cheeses : cheeses )
+ not( Cheese( type == "cheddar" ) from $cheeses )
+ then
+ results.add( "2" );
+end
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/FromBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/FromBuilder.java 2007-08-16 20:03:28 UTC (rev 14324)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/FromBuilder.java 2007-08-16 20:21:20 UTC (rev 14325)
@@ -16,6 +16,8 @@
package org.drools.reteoo.builder;
+import java.util.Collections;
+
import org.drools.common.BetaConstraints;
import org.drools.reteoo.FromNode;
import org.drools.reteoo.TupleSource;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/GroupElementBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/GroupElementBuilder.java 2007-08-16 20:03:28 UTC (rev 14324)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/GroupElementBuilder.java 2007-08-16 20:21:20 UTC (rev 14325)
@@ -32,7 +32,6 @@
import org.drools.reteoo.ObjectSource;
import org.drools.reteoo.RightInputAdapterNode;
import org.drools.reteoo.TupleSource;
-import org.drools.rule.Pattern;
import org.drools.rule.GroupElement;
import org.drools.rule.RuleConditionElement;
@@ -209,8 +208,8 @@
utils,
child );
- // if child is not a pattern adapt it into a subnetwork
- if ( !(child instanceof Pattern) ) {
+ // if it is a subnetwork
+ if ( context.getObjectSource() == null && context.getTupleSource() != null ) {
// attach right input adapter node to convert tuple source into an object source
context.setObjectSource( (ObjectSource) utils.attachNode( context,
@@ -284,8 +283,8 @@
utils,
child );
- // if child is not a pattern adapt it into a subnetwork
- if ( !(child instanceof Pattern) ) {
+ // if it is a subnetwork
+ if ( context.getObjectSource() == null && context.getTupleSource() != null ) {
// attach right input adapter node to convert tuple source into an object source
context.setObjectSource( (ObjectSource) utils.attachNode( context,
More information about the jboss-svn-commits
mailing list