[jboss-svn-commits] JBL Code SVN: r18425 - in labs/jbossrules/branches/Branch_4_0_2_SOA_4_2: 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
Fri Feb 8 14:44:14 EST 2008


Author: fmeyer
Date: 2008-02-08 14:44:14 -0500 (Fri, 08 Feb 2008)
New Revision: 18425

Added:
   labs/jbossrules/branches/Branch_4_0_2_SOA_4_2/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesEd.drl
   labs/jbossrules/branches/Branch_4_0_2_SOA_4_2/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesFred.drl
   labs/jbossrules/branches/Branch_4_0_2_SOA_4_2/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesTom.drl
Modified:
   labs/jbossrules/branches/Branch_4_0_2_SOA_4_2/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java
   labs/jbossrules/branches/Branch_4_0_2_SOA_4_2/drools-core/src/main/java/org/drools/common/BaseNode.java
Log:
SOA-403  RuleBase.removeRule() prevents other rules from being applied JBRULES-1329


Modified: labs/jbossrules/branches/Branch_4_0_2_SOA_4_2/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java
===================================================================
--- labs/jbossrules/branches/Branch_4_0_2_SOA_4_2/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java	2008-02-08 19:27:14 UTC (rev 18424)
+++ labs/jbossrules/branches/Branch_4_0_2_SOA_4_2/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java	2008-02-08 19:44:14 UTC (rev 18425)
@@ -30,6 +30,7 @@
 import org.drools.RuleBaseFactory;
 import org.drools.StatefulSession;
 import org.drools.WorkingMemory;
+import org.drools.common.InternalFactHandle;
 import org.drools.compiler.PackageBuilder;
 import org.drools.compiler.PackageBuilderConfiguration;
 import org.drools.rule.Package;
@@ -718,7 +719,69 @@
         }
     }
 
-    
+    public void testDynamicRulesAddRemove() {
+        try {
+            RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+            
+            PackageBuilder tomBuilder = new PackageBuilder();
+            tomBuilder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_DynamicRulesTom.drl" ) ) );
+            ruleBase.addPackage( tomBuilder.getPackage() );
+
+            StatefulSession session = ruleBase.newStatefulSession();
+            List results = new ArrayList();
+            session.setGlobal( "results", results );
+            
+            InternalFactHandle h1 = (InternalFactHandle) session.insert( new Person( "tom", 1 ) );
+            InternalFactHandle h2 = (InternalFactHandle) session.insert( new Person( "fred", 2 ) );
+            InternalFactHandle h3 = (InternalFactHandle) session.insert( new Person( "harry", 3 ) );
+            InternalFactHandle h4 = (InternalFactHandle) session.insert( new Person( "fred", 4 ) );
+            InternalFactHandle h5 = (InternalFactHandle) session.insert( new Person( "ed", 5 ) );
+            InternalFactHandle h6 = (InternalFactHandle) session.insert( new Person( "tom", 6 ) );
+            InternalFactHandle h7 = (InternalFactHandle) session.insert( new Person( "sreeni", 7 ) );
+            InternalFactHandle h8 = (InternalFactHandle) session.insert( new Person( "jill", 8 ) );
+            InternalFactHandle h9 = (InternalFactHandle) session.insert( new Person( "ed", 9 ) );
+            InternalFactHandle h10 = (InternalFactHandle) session.insert( new Person( "tom", 10 ) );
+            
+            session.fireAllRules();
+            
+            assertEquals( 3, results.size() );
+            assertTrue( results.contains( h1.getObject() ) );
+            assertTrue( results.contains( h6.getObject() ) );
+            assertTrue( results.contains( h10.getObject() ) );
+            results.clear();
+
+            PackageBuilder fredBuilder = new PackageBuilder();
+            fredBuilder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_DynamicRulesFred.drl" ) ) );
+            ruleBase.addPackage( fredBuilder.getPackage() );
+
+            assertEquals( 2, results.size() );
+            assertTrue( results.contains( h2.getObject() ) );
+            assertTrue( results.contains( h4.getObject() ) );
+            results.clear();
+
+            ruleBase.removePackage( "tom" );
+
+            PackageBuilder edBuilder = new PackageBuilder();
+            edBuilder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_DynamicRulesEd.drl" ) ) );
+            ruleBase.addPackage( edBuilder.getPackage() );
+
+            assertEquals( 2, results.size() );
+            assertTrue( results.contains( h5.getObject() ) );
+            assertTrue( results.contains( h9.getObject() ) );
+            results.clear();
+
+            ((Person) h3.getObject()).setName( "ed" );
+            session.update( h3, h3.getObject() );
+            session.fireAllRules();
+            
+            assertEquals( 1, results.size() );
+            assertTrue( results.contains( h3.getObject() ) );
+        } catch( Exception e ) {
+            e.printStackTrace();
+            fail( "Should not raise any exception: "+e.getMessage() );
+        }
+    }
+
     public class SubvertedClassLoader extends URLClassLoader {
 
         private static final long serialVersionUID = 400L;

Copied: labs/jbossrules/branches/Branch_4_0_2_SOA_4_2/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesEd.drl (from rev 18301, labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesEd.drl)
===================================================================
--- labs/jbossrules/branches/Branch_4_0_2_SOA_4_2/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesEd.drl	                        (rev 0)
+++ labs/jbossrules/branches/Branch_4_0_2_SOA_4_2/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesEd.drl	2008-02-08 19:44:14 UTC (rev 18425)
@@ -0,0 +1,12 @@
+package ed;
+
+import org.drools.Person;
+
+global java.util.List results;
+
+rule "Find ed"
+when
+    $p : Person( name == "ed" )
+then
+    results.add( $p );
+end

Copied: labs/jbossrules/branches/Branch_4_0_2_SOA_4_2/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesFred.drl (from rev 18301, labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesFred.drl)
===================================================================
--- labs/jbossrules/branches/Branch_4_0_2_SOA_4_2/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesFred.drl	                        (rev 0)
+++ labs/jbossrules/branches/Branch_4_0_2_SOA_4_2/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesFred.drl	2008-02-08 19:44:14 UTC (rev 18425)
@@ -0,0 +1,12 @@
+package fred;
+
+import org.drools.Person;
+
+global java.util.List results;
+
+rule "Find fred"
+when
+    $p : Person( name == "fred" )
+then
+    results.add( $p );
+end

Copied: labs/jbossrules/branches/Branch_4_0_2_SOA_4_2/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesTom.drl (from rev 18301, labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesTom.drl)
===================================================================
--- labs/jbossrules/branches/Branch_4_0_2_SOA_4_2/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesTom.drl	                        (rev 0)
+++ labs/jbossrules/branches/Branch_4_0_2_SOA_4_2/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesTom.drl	2008-02-08 19:44:14 UTC (rev 18425)
@@ -0,0 +1,12 @@
+package tom;
+
+import org.drools.Person;
+
+global java.util.List results;
+
+rule "Find tom"
+when
+    $p : Person( name == "tom" )
+then
+    results.add( $p );
+end

Modified: labs/jbossrules/branches/Branch_4_0_2_SOA_4_2/drools-core/src/main/java/org/drools/common/BaseNode.java
===================================================================
--- labs/jbossrules/branches/Branch_4_0_2_SOA_4_2/drools-core/src/main/java/org/drools/common/BaseNode.java	2008-02-08 19:27:14 UTC (rev 18424)
+++ labs/jbossrules/branches/Branch_4_0_2_SOA_4_2/drools-core/src/main/java/org/drools/common/BaseNode.java	2008-02-08 19:44:14 UTC (rev 18425)
@@ -47,6 +47,7 @@
     public int getId() {
         return this.id;
     }
+        
 
     /**
      * Attaches the node into the network. Usually to the parent <code>ObjectSource</code> or <code>TupleSource</code>




More information about the jboss-svn-commits mailing list