[jboss-svn-commits] JBL Code SVN: r13185 - 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 Jul 6 15:39:19 EDT 2007
Author: tirelli
Date: 2007-07-06 15:39:19 -0400 (Fri, 06 Jul 2007)
New Revision: 13185
Added:
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_alphaNodeSharing.drl
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Person.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/BuildUtils.java
Log:
JBRULES-859: fixing strange behavior when switching alpha node sharing off
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Person.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Person.java 2007-07-06 19:36:19 UTC (rev 13184)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Person.java 2007-07-06 19:39:19 UTC (rev 13185)
@@ -43,6 +43,13 @@
}
+ public Person(String name,
+ int age) {
+ super();
+ this.name = name;
+ this.age = age;
+ }
+
public Person(final String name) {
this( name,
"",
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-07-06 19:36:19 UTC (rev 13184)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2007-07-06 19:39:19 UTC (rev 13185)
@@ -3142,5 +3142,31 @@
}
+ public void testAlphaNodeSharing() throws Exception {
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_alphaNodeSharing.drl" ) ) );
+ final Package pkg = builder.getPackage();
+
+ final RuleBaseConfiguration conf = new RuleBaseConfiguration();
+ conf.setShareAlphaNodes( false );
+ final RuleBase ruleBase = getRuleBase(conf);
+ ruleBase.addPackage( pkg );
+ final WorkingMemory workingMemory = ruleBase.newStatefulSession();
+
+ final List results = new ArrayList();
+ workingMemory.setGlobal( "results",
+ results );
+
+ Person p1 = new Person( "bob", 5 );
+ workingMemory.insert( p1 );
+
+ workingMemory.fireAllRules();
+
+ assertEquals( 2, results.size() );
+ assertEquals( "1", results.get( 0 ));
+ assertEquals( "2", results.get( 1 ));
+
+ }
+
}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_alphaNodeSharing.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_alphaNodeSharing.drl (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_alphaNodeSharing.drl 2007-07-06 19:39:19 UTC (rev 13185)
@@ -0,0 +1,19 @@
+package org.drools;
+
+global java.util.List results;
+
+rule "First"
+salience 10
+ when
+ c: Person(age <= 10)
+ then
+ results.add("1");
+end
+
+rule "Second"
+salience 5
+ when
+ c: Person(age <= 10)
+ then
+ results.add("2");
+end
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/BuildUtils.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/BuildUtils.java 2007-07-06 19:36:19 UTC (rev 13184)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/BuildUtils.java 2007-07-06 19:39:19 UTC (rev 13185)
@@ -87,14 +87,15 @@
public BaseNode attachNode(final BuildContext context,
final BaseNode candidate) {
BaseNode node = null;
- if( isSharingEnabledForNode( context, candidate ) ) {
- if ( candidate instanceof ObjectTypeNode ) {
- ObjectTypeNode otn = (ObjectTypeNode) candidate;
- otn = (ObjectTypeNode) context.getRuleBase().getRete().getObjectTypeNodes().get( otn.getObjectType() );
- if ( otn != null ) {
- node = otn;
- }
- } else if ( (context.getTupleSource() != null) && ( candidate instanceof TupleSink ) ) {
+ if( candidate instanceof ObjectTypeNode ) {
+ // object type nodes are always shared
+ ObjectTypeNode otn = (ObjectTypeNode) candidate;
+ otn = (ObjectTypeNode) context.getRuleBase().getRete().getObjectTypeNodes().get( otn.getObjectType() );
+ if ( otn != null ) {
+ node = otn;
+ }
+ } else if( isSharingEnabledForNode( context, candidate ) ) {
+ if ( (context.getTupleSource() != null) && ( candidate instanceof TupleSink ) ) {
TupleSink[] sinks = context.getTupleSource().getSinkPropagator().getSinks();
for( int i = 0; i < sinks.length; i++ ) {
if( candidate.equals( sinks[i] ) ) {
More information about the jboss-svn-commits
mailing list