You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by bu...@apache.org on 2016/12/22 03:12:59 UTC
svn commit: r1775569 - in
/uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container:
common/classloader/ContextSwitch.java
jd/classload/ProxyJobDriverCollectionReader.java
Author: burn
Date: Thu Dec 22 03:12:59 2016
New Revision: 1775569
URL: http://svn.apache.org/viewvc?rev=1775569&view=rev
Log:
UIMA-5227 Set its context class-loader during construction of an object
Modified:
uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/common/classloader/ContextSwitch.java
uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/classload/ProxyJobDriverCollectionReader.java
Modified: uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/common/classloader/ContextSwitch.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/common/classloader/ContextSwitch.java?rev=1775569&r1=1775568&r2=1775569&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/common/classloader/ContextSwitch.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/common/classloader/ContextSwitch.java Thu Dec 22 03:12:59 2016
@@ -18,11 +18,23 @@
*/
package org.apache.uima.ducc.container.common.classloader;
+import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.net.URLClassLoader;
public class ContextSwitch {
+ public static Object construct(URLClassLoader urlClassLoader, Constructor<?> constructor, Object[] args) throws Exception {
+ ClassLoader saveThreadCCL = Thread.currentThread().getContextClassLoader();
+ try {
+ Thread.currentThread().setContextClassLoader(urlClassLoader);
+ return constructor.newInstance(args);
+ }
+ finally {
+ Thread.currentThread().setContextClassLoader(saveThreadCCL);
+ }
+ }
+
public static Object call(URLClassLoader urlClassLoader, Method method, Object instance, Object[] args) throws Exception {
ClassLoader saveThreadCCL = Thread.currentThread().getContextClassLoader();
try {
Modified: uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/classload/ProxyJobDriverCollectionReader.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/classload/ProxyJobDriverCollectionReader.java?rev=1775569&r1=1775568&r2=1775569&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/classload/ProxyJobDriverCollectionReader.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-container/src/main/java/org/apache/uima/ducc/container/jd/classload/ProxyJobDriverCollectionReader.java Thu Dec 22 03:12:59 2016
@@ -222,7 +222,8 @@ public class ProxyJobDriverCollectionRea
private void prepare() throws Exception {
class_JdUserCollectionReader = urlClassLoader.loadClass("org.apache.uima.ducc.user.jd.JdUserCollectionReader");
Constructor<?> constructor_JdUserCollectionReader = class_JdUserCollectionReader.getConstructor(String.class,String.class);
- instance_JdUserCollectionReader = constructor_JdUserCollectionReader.newInstance(new Object[] { crXml, crCfg });
+ instance_JdUserCollectionReader = ContextSwitch.construct(urlClassLoader, constructor_JdUserCollectionReader,
+ new Object[] { crXml, crCfg });
method_getTotal = class_JdUserCollectionReader.getMethod(name_getTotal, nullClassArray);
class_JdUserMetaCas = urlClassLoader.loadClass("org.apache.uima.ducc.user.jd.JdUserMetaCas");
method_getJdUserMetaCas = class_JdUserCollectionReader.getMethod(name_getJdUserMetaCas, nullClassArray);