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/04 15:52:14 UTC
svn commit: r1584692 -
/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/UIMAFramework.java
Author: schor
Date: Fri Apr 4 13:52:14 2014
New Revision: 1584692
URL: http://svn.apache.org/r1584692
Log:
[UIMA-3694] make uima context fields final
Modified:
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/UIMAFramework.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=1584692&r1=1584691&r2=1584692&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 Fri Apr 4 13:52:14 2014
@@ -1070,7 +1070,12 @@ public abstract class UIMAFramework {
public static ConfigurationManager newConfigurationManager() {
return getInstance()._newConfigurationManager();
}
-
+
+ // ugly way to pass vars to 0-arg constructors
+ // for root uima context
+ public static final ThreadLocal<ResourceManager> newContextResourceManager = new ThreadLocal<ResourceManager>();
+ public static final ThreadLocal<ConfigurationManager> newContextConfigManager = new ThreadLocal<ConfigurationManager>();
+
/**
* Gets a new instance of a {@link UimaContext}. Applications do not generally need to call this
* method.
@@ -1088,7 +1093,17 @@ public abstract class UIMAFramework {
*/
public static UimaContextAdmin newUimaContext(Logger aLogger, ResourceManager aResourceManager,
ConfigurationManager aConfigManager) {
- UimaContextAdmin context = getInstance()._newUimaContext();
+ // We use an ugly trick to make the 3 values available to the new UIMA context during its initialization -
+ // we put them in threadlocals for this class (UIMAFramework).
+ UimaContextAdmin context;
+ try {
+ newContextResourceManager.set(aResourceManager);
+ newContextConfigManager.set(aConfigManager);
+ context = getInstance()._newUimaContext();
+ } finally {
+ newContextResourceManager.set(null);
+ newContextConfigManager.set(null);
+ }
context.initializeRoot(aLogger, aResourceManager, aConfigManager);
return context;
}