[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