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/19 15:28:21 UTC

svn commit: r1765665 - in /uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima: analysis_engine/impl/PearAnalysisEngineWrapper.java resource/impl/ResourceManagerPearWrapper_impl.java resource/impl/ResourceManager_impl.java

Author: schor
Date: Wed Oct 19 15:28:20 2016
New Revision: 1765665

URL: http://svn.apache.org/viewvc?rev=1765665&view=rev
Log:
[UIMA-5146] add ResourceManager_impl copy(boolean) method, swtich PearAEwrapper to use it in place of threadlocal hack.  Remove now unused ResourceManagerPearWrapper_impl

Removed:
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ResourceManagerPearWrapper_impl.java
Modified:
    uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/PearAnalysisEngineWrapper.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/impl/PearAnalysisEngineWrapper.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/PearAnalysisEngineWrapper.java?rev=1765665&r1=1765664&r2=1765665&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/PearAnalysisEngineWrapper.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/PearAnalysisEngineWrapper.java Wed Oct 19 15:28:20 2016
@@ -101,7 +101,8 @@ public class PearAnalysisEngineWrapper e
       return result;
    }
 
-   public static final ThreadLocal<ResourceManager_impl> newPearsParent = new ThreadLocal<ResourceManager_impl>();
+   // Threadlocal trick replaced with call to ResourceManager_impl copy(true)
+//   public static final ThreadLocal<ResourceManager_impl> newPearsParent = new ThreadLocal<ResourceManager_impl>();
    private synchronized ResourceManager createRM(StringPair sp, PackageBrowser pkgBrowser, ResourceManager parentResourceManager)
          throws MalformedURLException {
       // create UIMA resource manager and apply pear settings
@@ -111,12 +112,14 @@ public class PearAnalysisEngineWrapper e
        // could be null for top level Pear not in an aggregate
        rsrcMgr = UIMAFramework.newDefaultResourceManager();
      } else {
-       newPearsParent.set((ResourceManager_impl) parentResourceManager);
-       rsrcMgr = UIMAFramework.newDefaultResourceManagerPearWrapper();
-       newPearsParent.remove();
+       rsrcMgr = ((ResourceManager_impl) parentResourceManager).copy(true);
+//       newPearsParent.set((ResourceManager_impl) parentResourceManager);
+//       rsrcMgr = UIMAFramework.newDefaultResourceManagerPearWrapper();
+//       newPearsParent.remove();
 //       ((ResourceManagerPearWrapper)rsrcMgr).initializeFromParentResourceManager(parentResourceManager);
      }
      rsrcMgr.setExtensionClassPath(sp.classPath, true);
+     rsrcMgr.setCasManager(parentResourceManager.getCasManager());  // shares the same merged type system
      UIMAFramework.getLogger(this.getClass()).logrb(
             Level.CONFIG,
             this.getClass().getName(),

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=1765665&r1=1765664&r2=1765665&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 Wed Oct 19 15:28:20 2016
@@ -142,13 +142,13 @@ public class ResourceManager_impl implem
   //   Because internal users do a sync, only one thread at a time is using this
   //   (for internal calls) anyways, so there's no advantage to the extra overhead
   //   of making this a ConcurrentHashMap  (March 2014)
-  final private Map<String,XMLizable> importCache = Collections.synchronizedMap(new HashMap<String,XMLizable>());
+  private Map<String, XMLizable> importCache = Collections.synchronizedMap(new HashMap<String,XMLizable>());
   
   /**
    * Cache of imported descriptor URLs from which the parsed objects in importCache
    * were created, so that these URLs are not re-parsed if the same URL is imported again.
    */
-  final private Map<String,Set<String>> importUrlsCache = Collections.synchronizedMap(new HashMap<String,Set<String>>());
+  private Map<String, Set<String>> importUrlsCache = Collections.synchronizedMap(new HashMap<String,Set<String>>());
   
   /**
    * Creates a new <code>ResourceManager_impl</code>.
@@ -193,6 +193,24 @@ public class ResourceManager_impl implem
     mRelativePathResolver = new RelativePathResolver_impl(); 
   }
   
+  public ResourceManager_impl copy(boolean allowClassPathChange) {
+    ResourceManager_impl rm = new ResourceManager_impl(
+        this.mResourceMap,
+        this.mInternalResourceRegistrationMap,
+        this.mParameterizedResourceImplClassMap,
+        this.mInternalParameterizedResourceImplClassMap,
+        this.mParameterizedResourceInstanceMap
+        );
+    // non-final fields init
+    rm.uimaCL = this.uimaCL;
+    if (!allowClassPathChange) {
+      rm.importCache = this.importCache;
+      rm.importUrlsCache = this.importUrlsCache;
+    }
+    return rm; 
+  }
+  
+  
  /**
   * Support reusing UIMA Class Loader instances to speed up
   * things including the Component Description Editor when