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();