[jboss-svn-commits] JBL Code SVN: r14166 - in labs/jbossrules/trunk/drools-compiler/src: test/java/org/drools/compiler and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sun Aug 12 23:29:39 EDT 2007
Author: mark.proctor at jboss.com
Date: 2007-08-12 23:29:39 -0400 (Sun, 12 Aug 2007)
New Revision: 14166
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java
Log:
JBRULES-1056 Performance of RuleBase().addPackage(.) goes down on sub sequent instances of RuleBase with large number of packages.
-I have rewritten the system so that the PackageCompilationData only marks itself as dirty and the RuleBase now handles reload() on the execution of a WorkingMemoryAction.
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java 2007-08-13 03:29:33 UTC (rev 14165)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java 2007-08-13 03:29:39 UTC (rev 14166)
@@ -446,6 +446,10 @@
* Compiled packages are serializable.
*/
public Package getPackage() {
+ if ( this.pkg != null && this.pkg.getPackageCompilationData() != null ) {
+ this.pkg.getPackageCompilationData().reload();
+ }
+
addRuleFlowsToPackage( this.processBuilder, pkg );
if ( hasErrors() ) {
this.pkg.setError( getErrors().toString() );
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java 2007-08-13 03:29:33 UTC (rev 14165)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java 2007-08-13 03:29:39 UTC (rev 14166)
@@ -155,7 +155,7 @@
builder.addPackage( packageDescr );
- final Package pkg = builder.getPackage();
+ Package pkg = builder.getPackage();
Rule rule = pkg.getRule( "rule-1" );
assertLength( 0,
@@ -192,6 +192,8 @@
pkg.getPackageCompilationData().list().length );
builder.addPackage( packageDescr );
+
+ pkg = builder.getPackage();
rule = pkg.getRule( "rule-1" );
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java 2007-08-13 03:29:33 UTC (rev 14165)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java 2007-08-13 03:29:39 UTC (rev 14166)
@@ -208,16 +208,10 @@
final Package pkg = builder.getPackage();
org.drools.reteoo.ReteooRuleBase reteooRuleBase = null;
- // org.drools.leaps.LeapsRuleBase leapsRuleBase = null;
+
final RuleBase ruleBase = getRuleBase();
- // org.drools.reteoo.RuleBaseImpl ruleBase = new
- // org.drools.reteoo.RuleBaseImpl();
- if ( ruleBase instanceof org.drools.reteoo.ReteooRuleBase ) {
- reteooRuleBase = (org.drools.reteoo.ReteooRuleBase) ruleBase;
- // } else if ( ruleBase instanceof org.drools.leaps.LeapsRuleBase )
- // {
- // leapsRuleBase = (org.drools.leaps.LeapsRuleBase) ruleBase;
- }
+ reteooRuleBase = (org.drools.reteoo.ReteooRuleBase) ruleBase;
+
ruleBase.addPackage( pkg );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
@@ -241,25 +235,6 @@
reteooRuleBase.removePackage( "org.drools.test" );
assertEquals( 0,
reteooRuleBase.getPackages().length );
- // } else if ( leapsRuleBase != null ) {
- // assertEquals( 1,
- // leapsRuleBase.getPackages().length );
- // assertEquals( 4,
- // leapsRuleBase.getPackages()[0].getRules().length );
- //
- // leapsRuleBase.removeRule( "org.drools.test",
- // "Who likes Stilton" );
- // assertEquals( 3,
- // leapsRuleBase.getPackages()[0].getRules().length );
- //
- // leapsRuleBase.removeRule( "org.drools.test",
- // "like cheese" );
- // assertEquals( 2,
- // leapsRuleBase.getPackages()[0].getRules().length );
- //
- // leapsRuleBase.removePackage( "org.drools.test" );
- // assertEquals( 0,
- // leapsRuleBase.getPackages().length );
}
}
@@ -284,10 +259,10 @@
assertEquals( new Integer( 5 ),
list.get( 0 ) );
-
+
// Check a function can be removed from a package.
// Once removed any efforts to use it should throw an Exception
- pkg.removeFunction( "addFive" );
+ ruleBase.removeFunction( "org.drools.test", "addFive" );
final Cheese cheddar = new Cheese( "cheddar",
5 );
More information about the jboss-svn-commits
mailing list