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/11/05 18:26:05 UTC

svn commit: r1845830 - in /uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima: internal/util/Class_TCCL.java resource/ResourceManager.java

Author: schor
Date: Mon Nov  5 18:26:05 2018
New Revision: 1845830

URL: http://svn.apache.org/viewvc?rev=1845830&view=rev
Log:
[UIMA-5802] merge from v2

Modified:
    uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/Class_TCCL.java
    uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceManager.java   (contents, props changed)

Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/Class_TCCL.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/Class_TCCL.java?rev=1845830&r1=1845829&r2=1845830&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/Class_TCCL.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/Class_TCCL.java Mon Nov  5 18:26:05 2018
@@ -30,6 +30,14 @@ import org.apache.uima.resource.Resource
  * 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)
+ *
+ * For backwards compatibility, if a class is not found using the 
+ * Thread Context Class Loader, 
+ *   for classloading: try again using the 
+ *                     class loader for this class since that's what the previous impl did,
+ *                     and some applications will break otherwise, with class-not-found.
+ *   for resourceloading: try again using the Classloader.getSystemClassLoader, 
+ *                     since that's what the previous impl did
  */
 public class Class_TCCL {
 
@@ -45,7 +53,11 @@ public class Class_TCCL {
   
   static public <T> Class<T> forName(String className, ResourceManager rm, boolean resolve) 
       throws ClassNotFoundException {
-    return (Class<T>) Class.forName(className, resolve, get_cl(rm));
+    try {
+      return (Class<T>) Class.forName(className, resolve, get_cl(rm));
+    } catch (ClassNotFoundException x) {  // 
+      return (Class<T>) Class.forName(className, resolve, Class_TCCL.class.getClassLoader());
+    }
   }
   
   static public <T> Class<T> forName(String className, Map<String, Object> additionalParams) 
@@ -60,11 +72,13 @@ public class Class_TCCL {
     
     ClassLoader cl = (rm == null) ? null : rm.getExtensionClassLoader();
     
-    if (cl == null) 
+    if (cl == null) {
       cl = get_parent_cl();Thread.currentThread().getContextClassLoader();
+    }
     
-    if (cl == null) 
+    if (cl == null) { 
       cl = Class_TCCL.class.getClassLoader();  // this class's classloader
+    }
     
     return cl;
   }

Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceManager.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceManager.java?rev=1845830&r1=1845829&r2=1845830&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceManager.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceManager.java Mon Nov  5 18:26:05 2018
@@ -380,8 +380,12 @@ public interface ResourceManager {
   public Map<String,XMLizable> getImportCache();
   
   /**
-   * Loads a user class using either the UIMA extension class loader (if specified) or 
+   * Loads a user class using either the UIMA extension class loader (if specified) or
+   * the ThreadLocal Context Class Loader (if available) or 
    * the loader the UIMA framework is running in.
+   * 
+   * If the class is not found in the ThreadLocal COntext Class Loader, then 
+   * the loader the UIMA framework is running in will be searched.
    * @param name the class to load
    * @param <N> generic class of class
    * @return the class

Propchange: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceManager.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Nov  5 18:26:05 2018
@@ -5,4 +5,4 @@
 /uima/uimaj/branches/filteredCompress-uima-2498/uimaj-core/src/main/java/org/apache/uima/resource/ResourceManager.java:1436573-1462257
 /uima/uimaj/branches/mavenAlign/uimaj-core/src/main/java/org/apache/uima/resource/ResourceManager.java:933273-944396
 /uima/uimaj/branches/test-parent-pom-6/uimaj-core/src/main/java/org/apache/uima/resource/ResourceManager.java:1024030
-/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceManager.java:1690273-1834526
+/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/ResourceManager.java:1690273-1845800