[jboss-svn-commits] JBL Code SVN: r33424 - in labs/jbossrules/trunk: drools-core/src/main/java/org/drools/agent/impl and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Jun 9 15:00:25 EDT 2010


Author: eaa
Date: 2010-06-09 15:00:25 -0400 (Wed, 09 Jun 2010)
New Revision: 33424

Modified:
   labs/jbossrules/trunk/drools-api/src/main/java/org/drools/agent/KnowledgeAgentConfiguration.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/impl/KnowledgeAgentConfigurationImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/impl/KnowledgeAgentImpl.java
Log:
JBRULES-2541: KnowledgeAgent: Add the possibility to add custom KnowledgeBuilderConfiguration
	- KnowledgeAgentConfiguration now has a new "drools.agent.useKBaseClassLoaderForCompiling" property.
	- KnowledgeAgentImpl uses this new property (if it is set to true) to reuse its kbase CompositeClassLoader whenever it creates a new KBuilder

Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/agent/KnowledgeAgentConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/agent/KnowledgeAgentConfiguration.java	2010-06-09 18:43:31 UTC (rev 33423)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/agent/KnowledgeAgentConfiguration.java	2010-06-09 19:00:25 UTC (rev 33424)
@@ -24,5 +24,7 @@
 
     public boolean isNewInstance();
 
+    public boolean isUseKBaseClassLoaderForCompiling();
 
+
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/impl/KnowledgeAgentConfigurationImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/impl/KnowledgeAgentConfigurationImpl.java	2010-06-09 18:43:31 UTC (rev 33423)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/impl/KnowledgeAgentConfigurationImpl.java	2010-06-09 19:00:25 UTC (rev 33424)
@@ -2,7 +2,6 @@
 
 import java.util.Properties;
 
-import org.drools.PropertiesConfiguration;
 import org.drools.agent.KnowledgeAgentConfiguration;
 import org.drools.core.util.StringUtils;
 
@@ -21,6 +20,7 @@
     private boolean scanDirectories        = true;
     private boolean monitorChangeSetEvents = true;
     private boolean newInstance            = true;
+    private boolean useKBaseClassLoaderForCompiling = false;
 
     public KnowledgeAgentConfigurationImpl() {
 
@@ -57,6 +57,8 @@
             }
         } else if ( name.equals( "drools.agent.newInstance" ) ) {
             setNewInstance( StringUtils.isEmpty( value ) ? true : Boolean.parseBoolean( value ) );
+        } else if ( name.equals( "drools.agent.useKBaseClassLoaderForCompiling" ) ) {
+            setUseKBaseClassLoaderForCompiling( StringUtils.isEmpty( value ) ? true : Boolean.parseBoolean( value ) );
         }
     }
 
@@ -74,6 +76,8 @@
             return Boolean.toString( this.monitorChangeSetEvents );
         } else if ( name.equals( "drools.agent.newInstance" ) ) {
             return Boolean.toString( this.newInstance );
+        } else if ( name.equals( "drools.agent.useKBaseClassLoaderForCompiling" ) ) {
+            return Boolean.toString( this.useKBaseClassLoaderForCompiling );
         }
 
         return null;
@@ -110,4 +114,15 @@
     public void setNewInstance(boolean newInstance) {
         this.newInstance = newInstance;
     }
+
+    public boolean isUseKBaseClassLoaderForCompiling() {
+        return this.useKBaseClassLoaderForCompiling;
+    }
+
+    public void setUseKBaseClassLoaderForCompiling(boolean useKBaseClassLoaderForCompiling) {
+        this.useKBaseClassLoaderForCompiling = useKBaseClassLoaderForCompiling;
+    }
+
+    
+
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/impl/KnowledgeAgentImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/impl/KnowledgeAgentImpl.java	2010-06-09 18:43:31 UTC (rev 33423)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/agent/impl/KnowledgeAgentImpl.java	2010-06-09 19:00:25 UTC (rev 33424)
@@ -39,6 +39,7 @@
 import org.drools.io.internal.InternalResource;
 import org.drools.agent.ResourceDiffProducer;
 import org.drools.builder.KnowledgeBuilderConfiguration;
+import org.drools.reteoo.ReteooRuleBase;
 import org.drools.rule.Function;
 import org.drools.rule.Package;
 import org.drools.rule.Rule;
@@ -67,6 +68,7 @@
     private boolean newInstance;
     private SystemEventListener listener;
     private boolean scanDirectories;
+    private boolean useKBaseClassLoaderForCompiling;
     private LinkedBlockingQueue<ChangeSet> queue;
     private Thread thread;
     private ChangeSetNotificationDetector changeSetNotificationDetector;
@@ -96,6 +98,7 @@
         if (configuration != null) {
             // New Instance describes if we do incremental builds or not
             this.newInstance = ((KnowledgeAgentConfigurationImpl) configuration).isNewInstance();
+            this.useKBaseClassLoaderForCompiling = ((KnowledgeAgentConfigurationImpl) configuration).isUseKBaseClassLoaderForCompiling();
             this.notifier = (ResourceChangeNotifierImpl) ResourceFactory.getResourceChangeNotifierService();
             if (((KnowledgeAgentConfigurationImpl) configuration).isMonitorChangeSetEvents()) {
                 monitor = true;
@@ -557,11 +560,7 @@
     private KnowledgePackageImp createPackageFromResource(Resource resource,KnowledgeBuilder kbuilder) {
 
         if (kbuilder == null){
-            if (this.builderConfiguration != null){
-                kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(this.builderConfiguration);
-            }else{
-                kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
-            }
+            kbuilder = this.createKBuilder();
         }
 
         if (((InternalResource) resource).getResourceType() != ResourceType.PKG) {
@@ -807,12 +806,7 @@
      */
     private void addResourcesToKnowledgeBase(ChangeSetState changeSetState) {
 
-        KnowledgeBuilder kbuilder =  null;
-        if (this.builderConfiguration != null){
-            kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(this.builderConfiguration);
-        }else{
-            kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
-        }
+        KnowledgeBuilder kbuilder = this.createKBuilder();
         List<Package> packages = new ArrayList<Package>();
 
 
@@ -1085,6 +1079,19 @@
         }
     }
 
+    private KnowledgeBuilder createKBuilder(){
+        if (this.builderConfiguration != null){
+            return KnowledgeBuilderFactory.newKnowledgeBuilder(this.builderConfiguration);
+        }
+
+        if (this.useKBaseClassLoaderForCompiling){
+            return  KnowledgeBuilderFactory.newKnowledgeBuilder(KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(null, ((ReteooRuleBase)((KnowledgeBaseImpl)this.getKnowledgeBase()).getRuleBase()).getRootClassLoader()));
+        }
+
+        return KnowledgeBuilderFactory.newKnowledgeBuilder();
+
+    }
+
     /*
      * (non-Javadoc)
      *



More information about the jboss-svn-commits mailing list