[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