[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