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/25 21:32:38 UTC
svn commit: r1766605 - in
/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource:
Resource_ImplBase.java impl/ConfigurableDataResource_impl.java
impl/DataResource_impl.java impl/FileLanguageResource_impl.java
impl/ResourceManager_impl.java
Author: schor
Date: Tue Oct 25 21:32:38 2016
New Revision: 1766605
URL: http://svn.apache.org/viewvc?rev=1766605&view=rev
Log:
[UIMA-5153][UIMA-5148] pass in UIMA Context with valid Resoruce Manager when initializing external resources
Modified:
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/Resource_ImplBase.java
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ConfigurableDataResource_impl.java
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/DataResource_impl.java
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/FileLanguageResource_impl.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/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=1766605&r1=1766604&r2=1766605&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 Tue Oct 25 21:32:38 2016
@@ -26,12 +26,12 @@ import org.apache.uima.UIMAFramework;
import org.apache.uima.UIMA_IllegalStateException;
import org.apache.uima.UimaContext;
import org.apache.uima.UimaContextAdmin;
+import org.apache.uima.resource.impl.RelativePathResolver_impl;
import org.apache.uima.resource.metadata.ResourceManagerConfiguration;
import org.apache.uima.resource.metadata.ResourceMetaData;
import org.apache.uima.util.InvalidXMLException;
import org.apache.uima.util.Logger;
import org.apache.uima.util.Settings;
-import org.apache.uima.util.impl.Settings_impl;
/**
* Implementation base class for {@link org.apache.uima.resource.Resource}s. Provides access to
@@ -82,32 +82,38 @@ public abstract class Resource_ImplBase
if (aAdditionalParams != null) {
mUimaContextAdmin = (UimaContextAdmin) aAdditionalParams.get(PARAM_UIMA_CONTEXT);
}
- if (mUimaContextAdmin == null) {// no, we have to create one
- // get or create ResourceManager
- ResourceManager resMgr = null;
- if (aAdditionalParams != null) {
- resMgr = (ResourceManager) aAdditionalParams.get(PARAM_RESOURCE_MANAGER);
- }
- if (resMgr == null) {
- resMgr = UIMAFramework.newDefaultResourceManager();
- }
-
- // get a Logger for this class and set its ResourceManager so that
- // UIMA extension ClassLoader is used to locate message digests.
- Logger logger = UIMAFramework.getLogger(this.getClass());
- logger.setResourceManager(resMgr);
-
- ConfigurationManager configMgr = null;
- if (aAdditionalParams != null) {
- configMgr = (ConfigurationManager)aAdditionalParams.get(PARAM_CONFIG_MANAGER);
- }
- if (configMgr == null) {
- configMgr = UIMAFramework.newConfigurationManager();
+ if (mUimaContextAdmin == null) {// no, we have to create one
+
+ // skip this part if initializing an external resource
+ // https://issues.apache.org/jira/browse/UIMA-5153
+ if (!(aSpecifier instanceof ConfigurableDataResourceSpecifier) &&
+ !(aSpecifier instanceof FileLanguageResourceSpecifier) &&
+ !(aSpecifier instanceof FileResourceSpecifier)) {
+ // get or create ResourceManager
+ ResourceManager resMgr = null;
+ if (aAdditionalParams != null) {
+ resMgr = (ResourceManager) aAdditionalParams.get(PARAM_RESOURCE_MANAGER);
+ }
+ if (resMgr == null) {
+ resMgr = UIMAFramework.newDefaultResourceManager();
+ }
+
+ // get a Logger for this class and set its ResourceManager so that
+ // UIMA extension ClassLoader is used to locate message digests.
+ Logger logger = UIMAFramework.getLogger(this.getClass());
+ logger.setResourceManager(resMgr);
+
+ ConfigurationManager configMgr = null;
+ if (aAdditionalParams != null) {
+ configMgr = (ConfigurationManager)aAdditionalParams.get(PARAM_CONFIG_MANAGER);
+ }
+ if (configMgr == null) {
+ configMgr = UIMAFramework.newConfigurationManager();
+ }
+
+ // create and initialize UIMAContext
+ mUimaContextAdmin = UIMAFramework.newUimaContext(logger, resMgr, configMgr);
}
-
- // create and initialize UIMAContext
- mUimaContextAdmin = UIMAFramework.newUimaContext(logger, resMgr, configMgr);
-
} else {
// configure logger of the UIMA context so that class-specific logging
// levels and UIMA extension classLoader will work
@@ -190,8 +196,15 @@ public abstract class Resource_ImplBase
}
}
// initializeExternalResources is synchronized
+
+ // https://issues.apache.org/jira/browse/UIMA-5153
+ final HashMap<String, Object> aAdditionalParmsForExtResources = new HashMap<String, Object>(aAdditionalParams); // copy in case
+ if (aAdditionalParmsForExtResources.get(PARAM_UIMA_CONTEXT) == null) {
+ aAdditionalParmsForExtResources.put(PARAM_UIMA_CONTEXT, mUimaContextAdmin);
+ }
+
mUimaContextAdmin.getResourceManager().initializeExternalResources(resMgrCfg,
- mUimaContextAdmin.getQualifiedContextName(), aAdditionalParams);
+ mUimaContextAdmin.getQualifiedContextName(), aAdditionalParmsForExtResources);
}
// resolve and validate this component's external resource dependencies
@@ -285,4 +298,16 @@ public abstract class Resource_ImplBase
public CasManager getCasManager() {
return getResourceManager().getCasManager();
}
+
+ public RelativePathResolver getRelativePathResolver(Map<String, Object> aAdditionalParams) {
+ RelativePathResolver relPathResolver = null;
+ if (aAdditionalParams != null) {
+ relPathResolver = (RelativePathResolver) aAdditionalParams.get(DataResource.PARAM_RELATIVE_PATH_RESOLVER);
+ }
+ if (relPathResolver == null) {
+ relPathResolver = new RelativePathResolver_impl();
+ }
+ return relPathResolver;
+ }
+
}
Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ConfigurableDataResource_impl.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ConfigurableDataResource_impl.java?rev=1766605&r1=1766604&r2=1766605&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ConfigurableDataResource_impl.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/ConfigurableDataResource_impl.java Tue Oct 25 21:32:38 2016
@@ -85,13 +85,7 @@ public class ConfigurableDataResource_im
// now attempt to create a URL, which can actually be used to access the data
// Get Relative Path Resolver
- RelativePathResolver relPathResolver = null;
- if (aAdditionalParams != null) {
- relPathResolver = (RelativePathResolver) aAdditionalParams.get(PARAM_RELATIVE_PATH_RESOLVER);
- }
- if (relPathResolver == null) {
- relPathResolver = new RelativePathResolver_impl();
- }
+ RelativePathResolver relPathResolver = getRelativePathResolver(aAdditionalParams);
// Get the file URL, resolving relative path as necessary
try {
@@ -100,16 +94,15 @@ public class ConfigurableDataResource_im
// this is OK. The URI may not be a valid URL (e.g. it may use a non-standard protocol).
// in this case getUrl returns null but getUri can still be used to access the URI
}
+
+ // call super initialize to set uima context from additional params if available
+ // this context is to allow getting access to the Resource Manager.
+ // https://issues.apache.org/jira/browse/UIMA-5153
+ super.initialize(aSpecifier, aAdditionalParams);
return true;
}
/**
- * @see org.apache.uima.resource.Resource#destroy()
- */
- public void destroy() {
- }
-
- /**
* @see org.apache.uima.resource.DataResource#getInputStream()
*/
public InputStream getInputStream() throws IOException {
Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/DataResource_impl.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/DataResource_impl.java?rev=1766605&r1=1766604&r2=1766605&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/DataResource_impl.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/DataResource_impl.java Tue Oct 25 21:32:38 2016
@@ -76,13 +76,7 @@ public class DataResource_impl extends R
FileResourceSpecifier spec = (FileResourceSpecifier) aSpecifier;
// Get Relative Path Resolver
- RelativePathResolver relPathResolver = null;
- if (aAdditionalParams != null) {
- relPathResolver = (RelativePathResolver) aAdditionalParams.get(PARAM_RELATIVE_PATH_RESOLVER);
- }
- if (relPathResolver == null) {
- relPathResolver = new RelativePathResolver_impl();
- }
+ RelativePathResolver relPathResolver = getRelativePathResolver(aAdditionalParams);
// Get the file URL, resolving relative path as necessary
IOException ioEx = null;
@@ -128,17 +122,16 @@ public class DataResource_impl extends R
ResourceInitializationException.COULD_NOT_ACCESS_DATA, new Object[] { spec
.getFileUrl() }, ioEx);
}
+
+ // call super initialize to set uima context from additional params if available
+ // this context is to allow getting access to the Resource Manager.
+ // https://issues.apache.org/jira/browse/UIMA-5153
+ super.initialize(aSpecifier, aAdditionalParams);
return true;
}
/**
- * @see org.apache.uima.resource.Resource#destroy()
- */
- public void destroy() {
- }
-
- /**
* @see org.apache.uima.resource.DataResource#getInputStream()
*/
public InputStream getInputStream() throws IOException {
Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/FileLanguageResource_impl.java
URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/FileLanguageResource_impl.java?rev=1766605&r1=1766604&r2=1766605&view=diff
==============================================================================
--- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/FileLanguageResource_impl.java (original)
+++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/resource/impl/FileLanguageResource_impl.java Tue Oct 25 21:32:38 2016
@@ -70,6 +70,10 @@ public class FileLanguageResource_impl e
mResourceInitParams = (aAdditionalParams == null) ? new HashMap<String, Object>() : new HashMap<String, Object>(
aAdditionalParams);
+ // call super initialize to set uima context from additional params if available
+ // this context is to allow getting access to the Resource Manager.
+ // https://issues.apache.org/jira/browse/UIMA-5153
+ super.initialize(aSpecifier, aAdditionalParams);
return true;
}
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=1766605&r1=1766604&r2=1766605&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 Tue Oct 25 21:32:38 2016
@@ -579,6 +579,11 @@ public class ResourceManager_impl implem
aAdditionalParams.put(Resource.PARAM_RESOURCE_MANAGER, this);
}
+ // set up aAdditionalParams to have this resource manager if not already set
+ // so that External Resource instances created from this use this creating/owning
+ // UIMA Context so that getResourceManager works
+ // see https://issues.apache.org/jira/browse/UIMA-5153
+
ExternalResourceDescription[] resources = aConfiguration.getExternalResources();
for (int i = 0; i < resources.length; i++) {
String name = resources[i].getName();