[jboss-svn-commits] JBL Code SVN: r36173 - in labs/jbossrules/trunk: drools-compiler/src/main/java/org/drools/compiler and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Dec 2 21:44:52 EST 2010
Author: mark.proctor at jboss.com
Date: 2010-12-02 21:44:51 -0500 (Thu, 02 Dec 2010)
New Revision: 36173
Modified:
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/util/ClassLoaderUtil.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/util/CompositeClassLoader.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/SessionConfiguration.java
Log:
JBRULES-2813 Unify two Composite ClassLoader implementations
-Fixed failing test, we need the classloader to be cloned if the configuration is to be shared among kbases.
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/util/ClassLoaderUtil.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/util/ClassLoaderUtil.java 2010-12-03 01:27:10 UTC (rev 36172)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/util/ClassLoaderUtil.java 2010-12-03 02:44:51 UTC (rev 36173)
@@ -24,7 +24,7 @@
ClassLoader currentClassLoader = (cls != null) ? cls.getClassLoader() : ClassLoaderUtil.class.getClassLoader();
ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
- CompositeClassLoader cl = new CompositeClassLoader( null );
+ CompositeClassLoader cl = new CompositeClassLoader( );
// ClassLoaders are added to the head of the list, so add in reverse
if ( systemClassLoader != null ) {
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/util/CompositeClassLoader.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/util/CompositeClassLoader.java 2010-12-03 01:27:10 UTC (rev 36172)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/util/CompositeClassLoader.java 2010-12-03 02:44:51 UTC (rev 36173)
@@ -38,7 +38,7 @@
private final List<ClassLoader> classLoaders = new CopyOnWriteArrayList<ClassLoader>();
private final AtomicReference<Loader> loader = new AtomicReference<Loader>();
- public CompositeClassLoader(final ClassLoader parentClassLoader) {
+ public CompositeClassLoader() {
super( null );
loader.set( new DefaultLoader() );
}
@@ -344,4 +344,13 @@
return it.next();
}
}
+
+ public CompositeClassLoader clone() {
+ CompositeClassLoader classLoader = new CompositeClassLoader();
+ classLoader.classLoaders.addAll( this.classLoaders );
+ if ( this.loader.get() instanceof CachingLoader ) {
+ classLoader.setCachingEnabled( true );
+ }
+ return classLoader;
+ }
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java 2010-12-03 01:27:10 UTC (rev 36172)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/PackageBuilderConfiguration.java 2010-12-03 02:44:51 UTC (rev 36173)
@@ -318,7 +318,7 @@
}
public CompositeClassLoader getClassLoader() {
- return this.classLoader;
+ return this.classLoader.clone();
}
/** Use this to override the classLoader that will be used for the rules. */
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java 2010-12-03 01:27:10 UTC (rev 36172)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java 2010-12-03 02:44:51 UTC (rev 36173)
@@ -782,7 +782,7 @@
}
public CompositeClassLoader getClassLoader() {
- return classLoader;
+ return this.classLoader.clone();
}
public void setClassLoader(ClassLoader... classLoaders) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/SessionConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/SessionConfiguration.java 2010-12-03 01:27:10 UTC (rev 36172)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/SessionConfiguration.java 2010-12-03 02:44:51 UTC (rev 36173)
@@ -44,6 +44,7 @@
import org.drools.time.TimerService;
import org.drools.util.ChainedProperties;
import org.drools.util.ClassLoaderUtil;
+import org.drools.util.CompositeClassLoader;
import org.mvel2.MVEL;
/**
@@ -68,30 +69,30 @@
implements
KnowledgeSessionConfiguration,
Externalizable {
- private static final long serialVersionUID = 510l;
+ private static final long serialVersionUID = 510l;
- private ChainedProperties chainedProperties;
+ private ChainedProperties chainedProperties;
- private volatile boolean immutable;
+ private volatile boolean immutable;
- private boolean keepReference;
+ private boolean keepReference;
- private ClockType clockType;
+ private ClockType clockType;
- private QueryListenerOption queryListener;
+ private QueryListenerOption queryListener;
- private Map<String, WorkItemHandler> workItemHandlers;
- private WorkItemManagerFactory workItemManagerFactory;
- private CommandService commandService;
+ private Map<String, WorkItemHandler> workItemHandlers;
+ private WorkItemManagerFactory workItemManagerFactory;
+ private CommandService commandService;
- private transient ClassLoader classLoader;
-
+ private transient CompositeClassLoader classLoader;
+
public void writeExternal(ObjectOutput out) throws IOException {
out.writeObject( chainedProperties );
out.writeBoolean( immutable );
out.writeBoolean( keepReference );
out.writeObject( clockType );
- out.writeObject( queryListener );
+ out.writeObject( queryListener );
}
@SuppressWarnings("unchecked")
@@ -101,7 +102,7 @@
immutable = in.readBoolean();
keepReference = in.readBoolean();
clockType = (ClockType) in.readObject();
- queryListener = (QueryListenerOption) in.readObject();
+ queryListener = (QueryListenerOption) in.readObject();
}
/**
@@ -124,7 +125,7 @@
}
public SessionConfiguration(ClassLoader... classLoader) {
- init( null,
+ init( null,
classLoader );
}
@@ -237,11 +238,11 @@
this.queryListener = QueryListenerOption.determineQueryListenerClassOption( property );
}
- private void setQueryListenerClass( QueryListenerOption option ) {
+ private void setQueryListenerClass(QueryListenerOption option) {
checkCanChange();
this.queryListener = option;
}
-
+
public Map<String, WorkItemHandler> getWorkItemHandlers() {
if ( this.workItemHandlers == null ) {
initWorkItemHandlers();
@@ -312,18 +313,17 @@
throw new IllegalArgumentException( "Work item manager factory '" + className + "' not found" );
}
}
-
+
public String getProcessInstanceManagerFactory() {
return this.chainedProperties.getProperty( "drools.processInstanceManagerFactory",
"org.drools.process.instance.impl.DefaultProcessInstanceManagerFactory" );
}
public String getSignalManagerFactory() {
- return this.chainedProperties.getProperty( "drools.processSignalManagerFactory",
+ return this.chainedProperties.getProperty( "drools.processSignalManagerFactory",
"org.drools.process.instance.event.DefaultSignalManagerFactory" );
}
-
public CommandService getCommandService(KnowledgeBase kbase,
Environment environment) {
if ( this.commandService == null ) {
@@ -348,7 +348,6 @@
} catch ( ClassNotFoundException e ) {
}
-
if ( clazz != null ) {
try {
this.commandService = clazz.getConstructor( KnowledgeBase.class,
@@ -365,33 +364,34 @@
}
}
- public TimerService newTimerService() {
- String className = this.chainedProperties.getProperty(
- "drools.timerService",
- "org.drools.time.impl.JDKTimerService");
- if (className == null) {
- return null;
- }
+ public TimerService newTimerService() {
+ String className = this.chainedProperties.getProperty(
+ "drools.timerService",
+ "org.drools.time.impl.JDKTimerService" );
+ if ( className == null ) {
+ return null;
+ }
- Class<TimerService> clazz = null;
- try {
- clazz = (Class<TimerService>) this.classLoader.loadClass(className);
- } catch (ClassNotFoundException e) {
- }
+ Class<TimerService> clazz = null;
+ try {
+ clazz = (Class<TimerService>) this.classLoader.loadClass( className );
+ } catch ( ClassNotFoundException e ) {
+ }
- if (clazz != null) {
- try {
- return clazz.newInstance();
- } catch (Exception e) {
- throw new IllegalArgumentException(
- "Unable to instantiate timer service '" + className
- + "'", e);
- }
- } else {
- throw new IllegalArgumentException("Timer service '" + className
- + "' not found");
- }
- }
+ if ( clazz != null ) {
+ try {
+ return clazz.newInstance();
+ } catch ( Exception e ) {
+ throw new IllegalArgumentException(
+ "Unable to instantiate timer service '" + className
+ + "'",
+ e );
+ }
+ } else {
+ throw new IllegalArgumentException( "Timer service '" + className
+ + "' not found" );
+ }
+ }
@SuppressWarnings("unchecked")
public <T extends SingleValueKnowledgeSessionOption> T getOption(Class<T> option) {
@@ -429,15 +429,15 @@
}
public ClassLoader getClassLoader() {
- return classLoader;
+ return this.classLoader.clone();
}
- public void setClassLoader(ClassLoader classLoader) {
+ public void setClassLoader(CompositeClassLoader classLoader) {
this.classLoader = classLoader;
}
public QueryListenerOption getQueryListenerOption() {
return this.queryListener;
}
-
+
}
More information about the jboss-svn-commits
mailing list