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