[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