[jboss-svn-commits] JBL Code SVN: r14206 - labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Aug 14 11:39:18 EDT 2007


Author: mark.proctor at jboss.com
Date: 2007-08-14 11:39:18 -0400 (Tue, 14 Aug 2007)
New Revision: 14206

Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java
Log:
JBRULES-1056 Performance of RuleBase().addPackage(.) goes down on sub sequent instances of RuleBase with large number of packages.
-Added in an isDirty check when adding new packages.

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-14 14:14:52 UTC (rev 14205)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilder.java	2007-08-14 15:39:18 UTC (rev 14206)
@@ -279,7 +279,7 @@
             // iterate and compile
             for ( final Iterator it = packageDescr.getFunctions().iterator(); it.hasNext(); ) {
                 addFunction( (FunctionDescr) it.next() );
-            }
+            }                            
 
             // iterate and compile
             for ( final Iterator it = packageDescr.getRules().iterator(); it.hasNext(); ) {
@@ -288,6 +288,11 @@
         }
 
         this.configuration.getDialectRegistry().compileAll();
+        
+        // some of the rules and functions may have been redefined
+        if ( this.pkg.getPackageCompilationData().isDirty() ) {
+            this.pkg.getPackageCompilationData().reload();
+        }
         this.results = this.configuration.getDialectRegistry().addResults( this.results );
     }
 
@@ -446,7 +451,7 @@
      * Compiled packages are serializable.
      */
     public Package getPackage() {
-        if ( this.pkg != null && this.pkg.getPackageCompilationData() != null ) {
+        if ( this.pkg != null && this.pkg.getPackageCompilationData() != null && this.pkg.getPackageCompilationData().isDirty() ) {
             this.pkg.getPackageCompilationData().reload();
         }
         




More information about the jboss-svn-commits mailing list