[jboss-svn-commits] JBL Code SVN: r36119 - labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Nov 29 13:37:42 EST 2010


Author: baunax
Date: 2010-11-29 13:37:42 -0500 (Mon, 29 Nov 2010)
New Revision: 36119

Modified:
   labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessRuntimeImpl.java
Log:
JBRULES-2795 ProcessRuntimeImpl uses the wrong classpath for instantiante implementations of managers
- changed initSignalManager and initProcessInstanceManager to use the rule base RootClassLoader

Modified: labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessRuntimeImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessRuntimeImpl.java	2010-11-29 18:37:08 UTC (rev 36118)
+++ labs/jbossrules/trunk/drools-flow-core/src/main/java/org/drools/process/instance/ProcessRuntimeImpl.java	2010-11-29 18:37:42 UTC (rev 36119)
@@ -9,12 +9,14 @@
 import org.drools.WorkingMemory;
 import org.drools.common.AbstractWorkingMemory;
 import org.drools.common.InternalKnowledgeRuntime;
+import org.drools.common.InternalRuleBase;
 import org.drools.definition.process.Process;
 import org.drools.event.ProcessEventSupport;
 import org.drools.event.RuleFlowGroupDeactivatedEvent;
 import org.drools.event.process.ProcessEventListener;
 import org.drools.event.rule.ActivationCreatedEvent;
 import org.drools.event.rule.DefaultAgendaEventListener;
+import org.drools.impl.KnowledgeBaseImpl;
 import org.drools.process.core.event.EventFilter;
 import org.drools.process.core.event.EventTypeFilter;
 import org.drools.process.instance.event.SignalManager;
@@ -62,29 +64,41 @@
 	private void initProcessInstanceManager() {
 		String processInstanceManagerClass = ((SessionConfiguration) kruntime.getSessionConfiguration()).getProcessInstanceManagerFactory();
 		try {
-			processInstanceManager = ((ProcessInstanceManagerFactory) Class.forName(processInstanceManagerClass).newInstance()).createProcessInstanceManager(kruntime);
+			processInstanceManager = ((ProcessInstanceManagerFactory) loadClass(processInstanceManagerClass)
+			        .newInstance())
+			        .createProcessInstanceManager(kruntime);
 		} catch (InstantiationException e) {
 			throw new RuntimeException(e);
 		} catch (IllegalAccessException e) {
 			throw new RuntimeException(e);
-		} catch (ClassNotFoundException e) {
-			throw new RuntimeException(e);
 		}
 	}
 	
 	private void initSignalManager() {
 		String signalManagerClass = ((SessionConfiguration) kruntime.getSessionConfiguration()).getSignalManagerFactory();
 		try {
-			signalManager = ((SignalManagerFactory) Class.forName(signalManagerClass).newInstance()).createSignalManager(kruntime);
+			signalManager = ((SignalManagerFactory) loadClass(signalManagerClass)
+			        .newInstance())
+			        .createSignalManager(kruntime);
 		} catch (InstantiationException e) {
 			throw new RuntimeException(e);
 		} catch (IllegalAccessException e) {
 			throw new RuntimeException(e);
-		} catch (ClassNotFoundException e) {
-			throw new RuntimeException(e);
 		}
 	}
 	
+	private Class<?> loadClass(String className) {
+	    try {
+            return getRootClassLoader().loadClass(className);
+        } catch (ClassNotFoundException e) {
+            throw new RuntimeException(e);
+        }
+	}
+	
+	private ClassLoader getRootClassLoader() {
+	    return ((InternalRuleBase) ((KnowledgeBaseImpl) kruntime.getKnowledgeBase()).getRuleBase()).getRootClassLoader();
+	}
+	
     public ProcessInstance startProcess(final String processId) {
         return startProcess(processId, null);
     }



More information about the jboss-svn-commits mailing list