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 2014/04/09 22:05:32 UTC
svn commit: r1586121 - in
/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima:
UIMAFramework.java analysis_engine/asb/impl/ASB_impl.java
resource/Resource_ImplBase.java
Author: schor
Date: Wed Apr 9 20:05:32 2014
New Revision: 1586121
URL: http://svn.apache.org/r1586121
Log:
[UIMA-3732] avoid modifying passed-in additional params map
Modified:
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/UIMAFramework.java
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/asb/impl/ASB_impl.java
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/Resource_ImplBase.java
Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/UIMAFramework.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/UIMAFramework.java?rev=1586121&r1=1586120&r2=1586121&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/UIMAFramework.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/UIMAFramework.java Wed Apr 9 20:05:32 2014
@@ -322,6 +322,8 @@ public abstract class UIMAFramework {
if (aResourceManager != null) {
if (aAdditionalParams == null) {
aAdditionalParams = new HashMap<String, Object>();
+ } else { // copy to avoid modifying the original which might be immutable
+ aAdditionalParams = new HashMap<String, Object>(aAdditionalParams);
}
aAdditionalParams.put(Resource.PARAM_RESOURCE_MANAGER, aResourceManager);
}
@@ -976,6 +978,9 @@ public abstract class UIMAFramework {
if (aResourceManager != null) {
if (aAdditionalParams == null) {
aAdditionalParams = new HashMap<String, Object>();
+ } else {
+ // copy to avoid modifying original, which might be immutable, etc.
+ aAdditionalParams = new HashMap<String, Object>(aAdditionalParams);
}
aAdditionalParams.put(Resource.PARAM_RESOURCE_MANAGER, aResourceManager);
}
Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/asb/impl/ASB_impl.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/asb/impl/ASB_impl.java?rev=1586121&r1=1586120&r2=1586121&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/asb/impl/ASB_impl.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/analysis_engine/asb/impl/ASB_impl.java Wed Apr 9 20:05:32 2014
@@ -146,7 +146,8 @@ public class ASB_impl extends Resource_I
return false;
}
- super.initialize(aSpecifier, aAdditionalParams);
+ // copy the additional parameters, since this method will modify them
+ super.initialize(aSpecifier, aAdditionalParams = new HashMap<String, Object>(aAdditionalParams));
// save parameters for later
mInitParams = aAdditionalParams;
Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/Resource_ImplBase.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/Resource_ImplBase.java?rev=1586121&r1=1586120&r2=1586121&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/Resource_ImplBase.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/Resource_ImplBase.java Wed Apr 9 20:05:32 2014
@@ -179,9 +179,15 @@ public abstract class Resource_ImplBase
}
if (aAdditionalParams == null) {
aAdditionalParams = new HashMap<String, Object>();
- }
- if (!aAdditionalParams.containsKey(PARAM_RESOURCE_MANAGER)) {
aAdditionalParams.put(PARAM_RESOURCE_MANAGER, mUimaContextAdmin.getResourceManager());
+ } else {
+ if (!aAdditionalParams.containsKey(PARAM_RESOURCE_MANAGER)) {
+ // copy in case original is shared on multi-threads, or
+ // is unmodifiable
+ // and to avoid updating passed - in map
+ aAdditionalParams = new HashMap<String, Object>(aAdditionalParams);
+ aAdditionalParams.put(PARAM_RESOURCE_MANAGER, mUimaContextAdmin.getResourceManager());
+ }
}
// initializeExternalResources is synchronized
mUimaContextAdmin.getResourceManager().initializeExternalResources(resMgrCfg,