Author: schor Date: Thu Oct 13 15:56:35 2016 New Revision: 1764719 URL: http://svn.apache.org/viewvc?rev=1764719&view=rev Log: [UIMA-5038] consolidation of repeated code snips for doing class loading in resources, into single methods.
Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/impl/CasConsumerFactory_impl.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/impl/CasInitializerFactory_impl.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/impl/CollectionReaderFactory_impl.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/impl/ResourceSpecifierFactory_impl.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/resource/impl/ResourceManager_impl.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/impl/CasConsumerFactory_impl.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/impl/CasConsumerFactory_impl.java?rev=1764719&r1=1764718&r2=1764719&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/impl/CasConsumerFactory_impl.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/impl/CasConsumerFactory_impl.java Thu Oct 13 15:56:35 2016 @@ -31,6 +31,7 @@ import org.apache.uima.resource.Resource import org.apache.uima.resource.ResourceInitializationException; import org.apache.uima.resource.ResourceManager; import org.apache.uima.resource.ResourceSpecifier; +import org.apache.uima.resource.impl.ResourceManager_impl; import org.apache.uima.uimacpp.UimacppAnalysisComponent; /** @@ -72,19 +73,8 @@ public class CasConsumerFactory_impl imp 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); - } catch (ClassNotFoundException e) { - throw new ResourceInitializationException( - ResourceInitializationException.CLASS_NOT_FOUND, new Object[] { className, - aSpecifier.getSourceUrlString() }, e); - } + + implClass = ResourceManager_impl.loadUserClassOrThrow(className, resourceManager, aSpecifier); // check to see if this is a subclass of Cas[Data]Consumer and of aResourceClass if (!CasConsumer.class.isAssignableFrom(implClass) Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/impl/CasInitializerFactory_impl.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/impl/CasInitializerFactory_impl.java?rev=1764719&r1=1764718&r2=1764719&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/impl/CasInitializerFactory_impl.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/impl/CasInitializerFactory_impl.java Thu Oct 13 15:56:35 2016 @@ -29,6 +29,7 @@ import org.apache.uima.resource.Resource import org.apache.uima.resource.ResourceInitializationException; import org.apache.uima.resource.ResourceManager; import org.apache.uima.resource.ResourceSpecifier; +import org.apache.uima.resource.impl.ResourceManager_impl; /** * Specialized Resource Factory for producing CasInitializers. @@ -54,16 +55,8 @@ public class CasInitializerFactory_impl 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 = ResourceManager_impl.loadUserClassOrThrow(className, resourceManager, aSpecifier); // check to see if this is a subclass of BaseCollectionReader and of aResourceClass if (!CasInitializer.class.isAssignableFrom(implClass) && !CasDataInitializer.class.isAssignableFrom(implClass)) { @@ -90,11 +83,8 @@ public class CasInitializerFactory_impl ResourceInitializationException.ERROR_INITIALIZING_FROM_DESCRIPTOR, new Object[] { className, aSpecifier.getSourceUrlString() }); } - } + // if an exception occurs, log it but do not throw it... yet - catch (ClassNotFoundException e) { - throw new ResourceInitializationException(ResourceInitializationException.CLASS_NOT_FOUND, - new Object[] { className, aSpecifier.getSourceUrlString() }, e); } catch (IllegalAccessException e) { throw new ResourceInitializationException( ResourceInitializationException.COULD_NOT_INSTANTIATE, new Object[] { className, Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/impl/CollectionReaderFactory_impl.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/impl/CollectionReaderFactory_impl.java?rev=1764719&r1=1764718&r2=1764719&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/impl/CollectionReaderFactory_impl.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/impl/CollectionReaderFactory_impl.java Thu Oct 13 15:56:35 2016 @@ -30,6 +30,7 @@ import org.apache.uima.resource.Resource import org.apache.uima.resource.ResourceInitializationException; import org.apache.uima.resource.ResourceManager; import org.apache.uima.resource.ResourceSpecifier; +import org.apache.uima.resource.impl.ResourceManager_impl; import org.apache.uima.resource.metadata.ProcessingResourceMetaData; /** @@ -69,20 +70,14 @@ 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 = ResourceManager_impl.loadUserClassOrThrow(className, resourceManager, aSpecifier); // check to see if this is a subclass of BaseCollectionReader and of aResourceClass if (!BaseCollectionReader.class.isAssignableFrom(implClass)) { @@ -112,11 +107,6 @@ public class CollectionReaderFactory_imp ResourceInitializationException.ERROR_INITIALIZING_FROM_DESCRIPTOR, new Object[] { className, aSpecifier.getSourceUrlString() }); } - } - // if an exception occurs, log it but do not throw it... yet - catch (ClassNotFoundException e) { - throw new ResourceInitializationException(ResourceInitializationException.CLASS_NOT_FOUND, - new Object[] { className, aSpecifier.getSourceUrlString() }, e); } catch (IllegalAccessException e) { throw new ResourceInitializationException( ResourceInitializationException.COULD_NOT_INSTANTIATE, new Object[] { className, Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/impl/ResourceSpecifierFactory_impl.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/impl/ResourceSpecifierFactory_impl.java?rev=1764719&r1=1764718&r2=1764719&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/impl/ResourceSpecifierFactory_impl.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/impl/ResourceSpecifierFactory_impl.java Thu Oct 13 15:56:35 2016 @@ -121,6 +121,7 @@ public class ResourceSpecifierFactory_im } /** + * only used for uima framework things, setting up the mappings between intfc and impl for the framework parts * @see org.apache.uima.ResourceSpecifierFactory#addMapping(String, String) */ public void addMapping(String aInterfaceName, String aClassName) throws ClassNotFoundException { Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/resource/impl/ResourceManager_impl.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/resource/impl/ResourceManager_impl.java?rev=1764719&r1=1764718&r2=1764719&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/resource/impl/ResourceManager_impl.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/resource/impl/ResourceManager_impl.java Thu Oct 13 15:56:35 2016 @@ -46,6 +46,7 @@ import org.apache.uima.resource.Resource import org.apache.uima.resource.ResourceAccessException; import org.apache.uima.resource.ResourceInitializationException; import org.apache.uima.resource.ResourceManager; +import org.apache.uima.resource.ResourceSpecifier; import org.apache.uima.resource.SharedResourceObject; import org.apache.uima.resource.metadata.ExternalResourceBinding; import org.apache.uima.resource.metadata.ResourceManagerConfiguration; @@ -712,5 +713,25 @@ public class ResourceManager_impl implem } return Class.forName(name, true, cl); } + + public static Class<?> loadUserClass(String name, ResourceManager rm) throws ClassNotFoundException { + return (rm == null) + ? Class.forName(name, true, ResourceManager_impl.class.getClassLoader()) + : rm.loadUserClass(name); + } + + 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); + } catch (ClassNotFoundException e) { + throw new ResourceInitializationException( + ResourceInitializationException.CLASS_NOT_FOUND, new Object[] { name, + aSpecifier.getSourceUrlString() }, e); + } + } + }