[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