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 2016/10/13 15:56:35 UTC

svn commit: r1764719 - in /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima: impl/ resource/impl/

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);
+    }
+  }
+  
 
 }