You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by re...@apache.org on 2016/08/31 16:39:42 UTC
svn commit: r1758651 -
/uima/uimafit/trunk/uimafit-core/src/main/java/org/apache/uima/fit/internal/ResourceManagerFactory.java
Author: rec
Date: Wed Aug 31 16:39:42 2016
New Revision: 1758651
URL: http://svn.apache.org/viewvc?rev=1758651&view=rev
Log:
[UIMA-5076] Respect UimaContextHolder if set
Modified:
uima/uimafit/trunk/uimafit-core/src/main/java/org/apache/uima/fit/internal/ResourceManagerFactory.java
Modified: uima/uimafit/trunk/uimafit-core/src/main/java/org/apache/uima/fit/internal/ResourceManagerFactory.java
URL: http://svn.apache.org/viewvc/uima/uimafit/trunk/uimafit-core/src/main/java/org/apache/uima/fit/internal/ResourceManagerFactory.java?rev=1758651&r1=1758650&r2=1758651&view=diff
==============================================================================
--- uima/uimafit/trunk/uimafit-core/src/main/java/org/apache/uima/fit/internal/ResourceManagerFactory.java (original)
+++ uima/uimafit/trunk/uimafit-core/src/main/java/org/apache/uima/fit/internal/ResourceManagerFactory.java Wed Aug 31 16:39:42 2016
@@ -21,6 +21,9 @@ package org.apache.uima.fit.internal;
import java.net.MalformedURLException;
import org.apache.uima.UIMAFramework;
+import org.apache.uima.UimaContext;
+import org.apache.uima.UimaContextAdmin;
+import org.apache.uima.UimaContextHolder;
import org.apache.uima.resource.ResourceInitializationException;
import org.apache.uima.resource.ResourceManager;
import org.springframework.util.ClassUtils;
@@ -58,9 +61,22 @@ public class ResourceManagerFactory {
public static class DefaultResourceManagerCreator implements ResourceManagerCreator {
public ResourceManager newResourceManager() throws ResourceInitializationException {
try {
- ResourceManager resMgr = UIMAFramework.newDefaultResourceManager();
- resMgr.setExtensionClassPath(ClassUtils.getDefaultClassLoader(), "", true);
- return resMgr;
+ UimaContext activeContext = UimaContextHolder.getContext();
+ if (activeContext != null) {
+ // If we are already in a UIMA context, then we re-use it. Mind that the JCas cannot
+ // handle switching across more than one classloader.
+ // This can be done since UIMA 2.9.0 and starts being handled in uimaFIT 2.3.0
+ // See https://issues.apache.org/jira/browse/UIMA-5056
+ return ((UimaContextAdmin) activeContext).getResourceManager();
+ }
+ else {
+ // If there is no UIMA context, then we create a new resource manager
+ // UIMA core still does not fall back to the context classloader in all cases.
+ // This was the default behavior until uimaFIT 2.2.0.
+ ResourceManager resMgr = UIMAFramework.newDefaultResourceManager();
+ resMgr.setExtensionClassPath(ClassUtils.getDefaultClassLoader(), "", true);
+ return resMgr;
+ }
}
catch (MalformedURLException e) {
throw new ResourceInitializationException(e);