You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by sc...@apache.org on 2018/06/29 21:47:31 UTC
svn commit: r1834705 - in
/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima:
analysis_engine/asb/impl/ analysis_engine/impl/ collection/impl/ flow/impl/
impl/ internal/util/ resource/ resource/impl/
Author: schor
Date: Fri Jun 29 21:47:30 2018
New Revision: 1834705
URL: http://svn.apache.org/viewvc?rev=1834705&view=rev
Log:
[UIMA-5802] consolidate most class loading or setting extension class loader parents, include the Thread context class loader
Added:
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/Class_TCCL.java
Modified:
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/asb/impl/FlowControllerContainer.java
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/PrimitiveAnalysisEngine_impl.java
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/collection/impl/CasConsumerDescription_impl.java
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/collection/impl/CasInitializerDescription_impl.java
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/collection/impl/CollectionReaderDescription_impl.java
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/flow/impl/FlowControllerDescription_impl.java
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/CasConsumerFactory_impl.java
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/CasInitializerFactory_impl.java
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/CollectionReaderFactory_impl.java
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/CustomResourceFactory_impl.java
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceManagerPearWrapper.java
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ResourceManager_impl.java
Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/asb/impl/FlowControllerContainer.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/asb/impl/FlowControllerContainer.java?rev=1834705&r1=1834704&r2=1834705&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/asb/impl/FlowControllerContainer.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/asb/impl/FlowControllerContainer.java Fri Jun 29 21:47:30 2018
@@ -41,6 +41,7 @@ import org.apache.uima.flow.FlowControll
import org.apache.uima.flow.FlowControllerDescription;
import org.apache.uima.flow.JCasFlow_ImplBase;
import org.apache.uima.impl.Util;
+import org.apache.uima.internal.util.Class_TCCL;
import org.apache.uima.internal.util.JmxMBeanAgent;
import org.apache.uima.resource.ConfigurableResource_ImplBase;
import org.apache.uima.resource.ResourceConfigurationException;
@@ -315,16 +316,7 @@ public class FlowControllerContainer ext
// load FlowController class
Class<?> flowControllerClass = null;
try {
- // get UIMA extension ClassLoader if available
- ClassLoader cl = getUimaContextAdmin().getResourceManager().getExtensionClassLoader();
-
- if (cl != null) {
- // use UIMA extension ClassLoader to load the class
- flowControllerClass = cl.loadClass(flowControllerClassName);
- } else {
- // use application ClassLoader to load the class
- flowControllerClass = Class.forName(flowControllerClassName);
- }
+ flowControllerClass = Class_TCCL.forName(flowControllerClassName, getUimaContextAdmin().getResourceManager());
} catch (ClassNotFoundException e) {
throw new ResourceInitializationException(ResourceInitializationException.CLASS_NOT_FOUND,
new Object[] { flowControllerClassName, aDescriptor.getSourceUrlString() }, e);
Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/PrimitiveAnalysisEngine_impl.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/PrimitiveAnalysisEngine_impl.java?rev=1834705&r1=1834704&r2=1834705&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/PrimitiveAnalysisEngine_impl.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/PrimitiveAnalysisEngine_impl.java Fri Jun 29 21:47:30 2018
@@ -42,6 +42,7 @@ import org.apache.uima.cas.TypeSystem;
import org.apache.uima.cas.impl.CASImpl;
import org.apache.uima.impl.UimaContext_ImplBase;
import org.apache.uima.impl.Util;
+import org.apache.uima.internal.util.Class_TCCL;
import org.apache.uima.internal.util.UUIDGenerator;
import org.apache.uima.jcas.JCas;
import org.apache.uima.resource.ResourceConfigurationException;
@@ -208,16 +209,7 @@ public class PrimitiveAnalysisEngine_imp
// load annotator class
Class<?> annotatorClass = null;
try {
- // get UIMA extension ClassLoader if available
- final ClassLoader cl = getUimaContextAdmin().getResourceManager().getExtensionClassLoader();
-
- if (cl != null) {
- // use UIMA extension ClassLoader to load the class
- annotatorClass = cl.loadClass(annotatorClassName);
- } else {
- // use application ClassLoader to load the class
- annotatorClass = Class.forName(annotatorClassName);
- }
+ annotatorClass = Class_TCCL.forName(annotatorClassName, getUimaContextAdmin().getResourceManager());
} catch (ClassNotFoundException e) {
throw new ResourceInitializationException(
ResourceInitializationException.ANNOTATOR_CLASS_NOT_FOUND, new Object[] {
Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/collection/impl/CasConsumerDescription_impl.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/collection/impl/CasConsumerDescription_impl.java?rev=1834705&r1=1834704&r2=1834705&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/collection/impl/CasConsumerDescription_impl.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/collection/impl/CasConsumerDescription_impl.java Fri Jun 29 21:47:30 2018
@@ -26,6 +26,7 @@ import org.apache.uima.Constants;
import org.apache.uima.UIMAFramework;
import org.apache.uima.collection.CasConsumer;
import org.apache.uima.collection.CasConsumerDescription;
+import org.apache.uima.internal.util.Class_TCCL;
import org.apache.uima.resource.ResourceInitializationException;
import org.apache.uima.resource.ResourceManager;
import org.apache.uima.resource.impl.ResourceCreationSpecifier_impl;
@@ -88,13 +89,8 @@ public class CasConsumerDescription_impl
// try to load user class
// ust UIMA extension ClassLoader if available
Class<?> implClass;
- ClassLoader cl = aResourceManager.getExtensionClassLoader();
try {
- if (cl != null) {
- implClass = cl.loadClass(getImplementationName());
- } else {
- implClass = Class.forName(getImplementationName());
- }
+ implClass = Class_TCCL.forName(getImplementationName(), aResourceManager);
} catch (ClassNotFoundException e) {
throw new ResourceInitializationException(ResourceInitializationException.CLASS_NOT_FOUND,
new Object[] { getImplementationName(), getSourceUrlString() }, e);
Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/collection/impl/CasInitializerDescription_impl.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/collection/impl/CasInitializerDescription_impl.java?rev=1834705&r1=1834704&r2=1834705&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/collection/impl/CasInitializerDescription_impl.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/collection/impl/CasInitializerDescription_impl.java Fri Jun 29 21:47:30 2018
@@ -26,6 +26,7 @@ import org.apache.uima.Constants;
import org.apache.uima.UIMAFramework;
import org.apache.uima.collection.CasInitializer;
import org.apache.uima.collection.CasInitializerDescription;
+import org.apache.uima.internal.util.Class_TCCL;
import org.apache.uima.resource.ResourceInitializationException;
import org.apache.uima.resource.ResourceManager;
import org.apache.uima.resource.impl.ResourceCreationSpecifier_impl;
@@ -88,13 +89,13 @@ public class CasInitializerDescription_i
// try to load user class
// ust UIMA extension ClassLoader if available
Class<?> implClass;
- ClassLoader cl = aResourceManager.getExtensionClassLoader();
try {
- if (cl != null) {
- implClass = cl.loadClass(getImplementationName());
- } else {
- implClass = Class.forName(getImplementationName());
- }
+ implClass = Class_TCCL.forName(getImplementationName(), aResourceManager);
+// if (cl != null) {
+// implClass = cl.loadClass(getImplementationName());
+// } else {
+// implClass = Class.forName(getImplementationName());
+// }
} catch (ClassNotFoundException e) {
throw new ResourceInitializationException(ResourceInitializationException.CLASS_NOT_FOUND,
new Object[] { getImplementationName(), getSourceUrlString() }, e);
Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/collection/impl/CollectionReaderDescription_impl.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/collection/impl/CollectionReaderDescription_impl.java?rev=1834705&r1=1834704&r2=1834705&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/collection/impl/CollectionReaderDescription_impl.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/collection/impl/CollectionReaderDescription_impl.java Fri Jun 29 21:47:30 2018
@@ -25,6 +25,7 @@ import org.apache.uima.Constants;
import org.apache.uima.UIMAFramework;
import org.apache.uima.collection.CollectionReader;
import org.apache.uima.collection.CollectionReaderDescription;
+import org.apache.uima.internal.util.Class_TCCL;
import org.apache.uima.resource.ResourceInitializationException;
import org.apache.uima.resource.ResourceManager;
import org.apache.uima.resource.impl.ResourceCreationSpecifier_impl;
@@ -79,15 +80,10 @@ public class CollectionReaderDescription
new Object[] { getSourceUrlString() });
}
// try to load user class
- // ust UIMA extension ClassLoader if available
+ // use UIMA extension ClassLoader if available
Class<?> implClass;
- ClassLoader cl = aResourceManager.getExtensionClassLoader();
try {
- if (cl != null) {
- implClass = cl.loadClass(getImplementationName());
- } else {
- implClass = Class.forName(getImplementationName());
- }
+ implClass = Class_TCCL.forName(getImplementationName(), aResourceManager);
} catch (ClassNotFoundException e) {
throw new ResourceInitializationException(ResourceInitializationException.CLASS_NOT_FOUND,
new Object[] { getImplementationName(), getSourceUrlString() }, e);
Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/flow/impl/FlowControllerDescription_impl.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/flow/impl/FlowControllerDescription_impl.java?rev=1834705&r1=1834704&r2=1834705&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/flow/impl/FlowControllerDescription_impl.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/flow/impl/FlowControllerDescription_impl.java Fri Jun 29 21:47:30 2018
@@ -23,6 +23,7 @@ import org.apache.uima.Constants;
import org.apache.uima.UIMAFramework;
import org.apache.uima.flow.FlowController;
import org.apache.uima.flow.FlowControllerDescription;
+import org.apache.uima.internal.util.Class_TCCL;
import org.apache.uima.resource.ResourceInitializationException;
import org.apache.uima.resource.ResourceManager;
import org.apache.uima.resource.impl.ResourceCreationSpecifier_impl;
@@ -77,15 +78,10 @@ public class FlowControllerDescription_i
new Object[] { getSourceUrlString() });
}
// try to load user class
- // ust UIMA extension ClassLoader if available
+ // use UIMA extension ClassLoader if available
Class<?> implClass;
- ClassLoader cl = aResourceManager.getExtensionClassLoader();
try {
- if (cl != null) {
- implClass = cl.loadClass(getImplementationName());
- } else {
- implClass = Class.forName(getImplementationName());
- }
+ implClass = Class_TCCL.forName(getImplementationName(), aResourceManager);
} catch (ClassNotFoundException e) {
throw new ResourceInitializationException(ResourceInitializationException.CLASS_NOT_FOUND,
new Object[] { getImplementationName(), getSourceUrlString() }, e);
Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/CasConsumerFactory_impl.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/CasConsumerFactory_impl.java?rev=1834705&r1=1834704&r2=1834705&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/CasConsumerFactory_impl.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/CasConsumerFactory_impl.java Fri Jun 29 21:47:30 2018
@@ -27,6 +27,7 @@ import org.apache.uima.analysis_engine.i
import org.apache.uima.collection.CasConsumer;
import org.apache.uima.collection.CasConsumerDescription;
import org.apache.uima.collection.base_cpm.CasDataConsumer;
+import org.apache.uima.internal.util.Class_TCCL;
import org.apache.uima.resource.Resource;
import org.apache.uima.resource.ResourceInitializationException;
import org.apache.uima.resource.ResourceManager;
@@ -65,21 +66,9 @@ public class CasConsumerFactory_impl imp
}
// load class using UIMA Extension ClassLoader if there is one
- ClassLoader cl = null;
Class<?> implClass = null;
- ResourceManager resourceManager = null;
- if (aAdditionalParams != null) {
- resourceManager = (ResourceManager) aAdditionalParams
- .get(Resource.PARAM_RESOURCE_MANAGER);
- }
- if (resourceManager != null) {
- cl = resourceManager.getExtensionClassLoader();
- }
- if (cl == null) {
- cl = this.getClass().getClassLoader();
- }
try {
- implClass = Class.forName(className, true, cl);
+ implClass = Class_TCCL.forName(className, aAdditionalParams);
} catch (ClassNotFoundException e) {
throw new ResourceInitializationException(
ResourceInitializationException.CLASS_NOT_FOUND, new Object[] { className,
Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/CasInitializerFactory_impl.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/CasInitializerFactory_impl.java?rev=1834705&r1=1834704&r2=1834705&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/CasInitializerFactory_impl.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/CasInitializerFactory_impl.java Fri Jun 29 21:47:30 2018
@@ -25,6 +25,7 @@ import org.apache.uima.ResourceFactory;
import org.apache.uima.collection.CasInitializer;
import org.apache.uima.collection.CasInitializerDescription;
import org.apache.uima.collection.base_cpm.CasDataInitializer;
+import org.apache.uima.internal.util.Class_TCCL;
import org.apache.uima.resource.Resource;
import org.apache.uima.resource.ResourceInitializationException;
import org.apache.uima.resource.ResourceManager;
@@ -49,20 +50,8 @@ public class CasInitializerFactory_impl
String className = desc.getImplementationName();
// load class using UIMA Extension ClassLoader if there is one
- ClassLoader cl = null;
- ResourceManager resourceManager = null;
- if (aAdditionalParams != null) {
- resourceManager = (ResourceManager) aAdditionalParams.get(Resource.PARAM_RESOURCE_MANAGER);
- }
- if (resourceManager != null) {
- cl = resourceManager.getExtensionClassLoader();
- }
- if (cl == null) {
- cl = this.getClass().getClassLoader();
- }
-
try {
- Class<?> implClass = Class.forName(className, true, cl);
+ Class<?> implClass = Class_TCCL.forName(className, aAdditionalParams);
// check to see if this is a subclass of BaseCollectionReader and of aResourceClass
if (!CasInitializer.class.isAssignableFrom(implClass)
Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/CollectionReaderFactory_impl.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/CollectionReaderFactory_impl.java?rev=1834705&r1=1834704&r2=1834705&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/CollectionReaderFactory_impl.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/CollectionReaderFactory_impl.java Fri Jun 29 21:47:30 2018
@@ -26,6 +26,7 @@ import org.apache.uima.ResourceFactory;
import org.apache.uima.collection.CollectionReaderDescription;
import org.apache.uima.collection.CollectionReader_ImplBase;
import org.apache.uima.collection.base_cpm.BaseCollectionReader;
+import org.apache.uima.internal.util.Class_TCCL;
import org.apache.uima.resource.Resource;
import org.apache.uima.resource.ResourceInitializationException;
import org.apache.uima.resource.ResourceManager;
@@ -69,20 +70,8 @@ public class CollectionReaderFactory_imp
}
// load class using UIMA Extension ClassLoader if there is one
- ClassLoader cl = null;
- ResourceManager resourceManager = null;
- if (aAdditionalParams != null) {
- resourceManager = (ResourceManager) aAdditionalParams.get(Resource.PARAM_RESOURCE_MANAGER);
- }
- if (resourceManager != null) {
- cl = resourceManager.getExtensionClassLoader();
- }
- if (cl == null) {
- cl = this.getClass().getClassLoader();
- }
-
try {
- Class<?> implClass = Class.forName(className, true, cl);
+ Class<?> implClass = Class_TCCL.forName(className, aAdditionalParams);
// check to see if this is a subclass of BaseCollectionReader and of aResourceClass
if (!BaseCollectionReader.class.isAssignableFrom(implClass)) {
Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/CustomResourceFactory_impl.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/CustomResourceFactory_impl.java?rev=1834705&r1=1834704&r2=1834705&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/CustomResourceFactory_impl.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/impl/CustomResourceFactory_impl.java Fri Jun 29 21:47:30 2018
@@ -22,6 +22,7 @@ package org.apache.uima.impl;
import java.util.Map;
import org.apache.uima.ResourceFactory;
+import org.apache.uima.internal.util.Class_TCCL;
import org.apache.uima.resource.CustomResourceSpecifier;
import org.apache.uima.resource.Resource;
import org.apache.uima.resource.ResourceInitializationException;
@@ -43,22 +44,10 @@ public class CustomResourceFactory_impl
String className = ((CustomResourceSpecifier)aSpecifier).getResourceClassName();
//check additional params map for ResourceManager, and use the UIMA extension ClassLoader
//if one exists
- ClassLoader loader = null;
- ResourceManager resMgr = null;
- if (aAdditionalParams != null) {
- resMgr = (ResourceManager)aAdditionalParams.get(Resource.PARAM_RESOURCE_MANAGER);
- }
- if (resMgr != null) {
- loader = resMgr.getExtensionClassLoader();
- }
- if (loader == null) {
- loader = this.getClass().getClassLoader();
- }
-
//load the Resourceclass
Class<?> resourceClass;
try {
- resourceClass = Class.forName(className, true, loader);
+ resourceClass = Class_TCCL.forName(className, aAdditionalParams);
} catch (ClassNotFoundException e) {
throw new ResourceInitializationException(
ResourceInitializationException.CLASS_NOT_FOUND, new Object[] { className,
Added: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/Class_TCCL.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/Class_TCCL.java?rev=1834705&view=auto
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/Class_TCCL.java (added)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/Class_TCCL.java Fri Jun 29 21:47:30 2018
@@ -0,0 +1,91 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.uima.internal.util;
+
+import java.util.Map;
+import java.util.function.Supplier;
+
+import org.apache.uima.resource.Resource;
+import org.apache.uima.resource.ResourceInitializationException;
+import org.apache.uima.resource.ResourceManager;
+
+/**
+ * Utilities supporting a unified approach to loading classes,
+ * incorporating the resource manager's classloader if available,
+ * and making use of the Thread Context Class Loader (TCCL)
+ */
+public class Class_TCCL {
+
+ static public <T> Class<T> forName(String className)
+ throws ClassNotFoundException {
+ return forName(className, null, true);
+ }
+
+ static public <T> Class<T> forName(String className, ResourceManager rm)
+ throws ClassNotFoundException {
+ return forName(className, rm, true);
+ }
+
+ static public <T> Class<T> forName(String className, ResourceManager rm, boolean resolve)
+ throws ClassNotFoundException {
+ return (Class<T>) Class.forName(className, resolve, get_cl(rm));
+ }
+
+ static public <T> Class<T> forName(String className, Map<String, Object> additionalParams)
+ throws ClassNotFoundException {
+ ResourceManager rm = (additionalParams != null)
+ ? (ResourceManager) additionalParams.get(Resource.PARAM_RESOURCE_MANAGER)
+ : null;
+ return forName(className, rm);
+ }
+
+ static public ClassLoader get_cl(ResourceManager rm) {
+
+ ClassLoader cl = (rm == null) ? null : rm.getExtensionClassLoader();
+
+ if (cl == null)
+ cl = get_parent_cl();Thread.currentThread().getContextClassLoader();
+
+ if (cl == null)
+ cl = Class_TCCL.class.getClassLoader(); // this class's classloader
+
+ return cl;
+ }
+
+ static public ClassLoader get_parent_cl() {
+ ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ return (cl == null)
+ ? Class_TCCL.class.getClassLoader()
+ : cl;
+ }
+
+ // only for Java 8 + , needs lambda
+// static public <T> Class<T> loadclass_throw_if_not_found(
+// String className, ResourceManager rm, Supplier<String> sourceUrl)
+// throws ResourceInitializationException {
+// try {
+// Class<T> c = forName(className, rm);
+// return c;
+// } catch (ClassNotFoundException e) {
+// throw new ResourceInitializationException(ResourceInitializationException.CLASS_NOT_FOUND,
+// new Object[] { className, sourceUrl.get() }, e);
+// }
+// }
+}
Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceManagerPearWrapper.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceManagerPearWrapper.java?rev=1834705&r1=1834704&r2=1834705&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceManagerPearWrapper.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceManagerPearWrapper.java Fri Jun 29 21:47:30 2018
@@ -29,6 +29,8 @@ package org.apache.uima.resource;
*/
public interface ResourceManagerPearWrapper extends ResourceManager {
/**
+ * N O T E : N O L O N G E R U S E D 2018
+ *
* Pear Wrapper Resource Managers share all their values with their parent,
* except for the 2 values used to store the Classpath and Datapath.
*
Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ResourceManager_impl.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ResourceManager_impl.java?rev=1834705&r1=1834704&r2=1834705&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ResourceManager_impl.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ResourceManager_impl.java Fri Jun 29 21:47:30 2018
@@ -35,6 +35,7 @@ import java.util.concurrent.atomic.Atomi
import org.apache.uima.UIMAFramework;
import org.apache.uima.UIMA_IllegalStateException;
import org.apache.uima.analysis_engine.impl.AnalysisEngineImplBase;
+import org.apache.uima.internal.util.Class_TCCL;
import org.apache.uima.internal.util.UIMAClassLoader;
import org.apache.uima.resource.CasManager;
import org.apache.uima.resource.DataResource;
@@ -303,7 +304,7 @@ public class ResourceManager_impl implem
public synchronized void setExtensionClassPath(String classpath, boolean resolveResource)
throws MalformedURLException {
// create UIMA extension ClassLoader with the given classpath
- uimaCL = new UIMAClassLoader(classpath, this.getClass().getClassLoader());
+ uimaCL = new UIMAClassLoader(classpath, Class_TCCL.get_parent_cl());
if (resolveResource) {
// set UIMA extension ClassLoader also to resolve resources
@@ -835,25 +836,17 @@ public class ResourceManager_impl implem
@Override
public <N> Class<N> loadUserClass(String name) throws ClassNotFoundException {
- ClassLoader cl = getExtensionClassLoader();
- if (cl == null) {
- cl = this.getClass().getClassLoader();
- }
- return (Class<N>) Class.forName(name, true, cl);
+ return Class_TCCL.forName(name, this, true);
}
public static Class<?> loadUserClass(String name, ResourceManager rm) throws ClassNotFoundException {
- return (rm == null)
- ? Class.forName(name, true, ResourceManager_impl.class.getClassLoader())
- : rm.loadUserClass(name);
+ return Class_TCCL.forName(name, rm, true);
}
public static Class<?> loadUserClassOrThrow(String name, ResourceManager rm, ResourceSpecifier aSpecifier)
throws ResourceInitializationException {
try {
- return (rm == null)
- ? Class.forName(name, true, ResourceManager_impl.class.getClassLoader())
- : rm.loadUserClass(name);
+ return Class_TCCL.forName(name, rm, true);
} catch (ClassNotFoundException e) {
throw new ResourceInitializationException(
ResourceInitializationException.CLASS_NOT_FOUND, new Object[] { name,