Package org.apache.uima.resource
Interface ResourceManager
- All Known Subinterfaces:
ResourceManagerPearWrapper
- All Known Implementing Classes:
ResourceManager_impl
,ResourceManagerPearWrapper_impl
public interface ResourceManager
A
ResourceManager
holds a collection of Resource
objects, each registered under a specified key.-
Method Summary
Modifier and TypeMethodDescriptionGets the CasManager, which manages the creation and pooling of CASes.Gets the data path used to resolve relative paths.Returns the UIMA extension class loader.Gets a cache of imported descriptors, so that the parsed objects can be reused if the same URL is imported more than once.getResource
(String aName) Gets the Resource that has been registered under the specified name.getResource
(String aName, String[] aParams) Gets an instance of a parameterized Resource.getResourceAsStream
(String aKey) Retrieves an InputStream for reading from the named resource.getResourceAsStream
(String aKey, String[] aParams) Retrieves an InputStream for reading from the named resource.getResourceClass
(String aName) Gets the Class of the Resource that will be returned by a call togetResource(String)
orgetResource(String,String[])
.getResourceURL
(String aKey) Retrieves the URL to the named resource.getResourceURL
(String aKey, String[] aParams) Retrieves the URL to the named resource.void
initializeExternalResources
(ResourceManagerConfiguration aConfiguration, String aQualifiedContextName, Map<String, Object> aAdditionalParams) Initializes all external resources declared in a ResourceCreationSpecifier.void
resolveAndValidateResourceDependencies
(ExternalResourceDependency[] aDependencies, String aQualifiedContextName) Resolves a component's external resource dependencies using this resource manager.resolveRelativePath
(String aRelativePath) Attempts to resolve a relative path to an absolute path using the same mechanism that the ResourceManager uses to find resources -- a lookup in the datapath followed by a lookup in the classpath.void
setCasManager
(CasManager aCasManager) Sets the CasManager, which manages the creation and pooling of CASes.void
setDataPath
(String aPath) Sets the data path used to resolve relative paths.void
setExtensionClassPath
(ClassLoader parent, String classpath, boolean resolveResource) Sets the classpath for the UIMA extension ClassLoader and specifies if the extension ClassLoader should also be used to resolve resources.void
setExtensionClassPath
(String classpath, boolean resolveResource) Sets the classpath for the UIMA extension ClassLoader and specifies if the extension ClassLoader should also be used to resolve resources.
-
Method Details
-
getDataPath
String getDataPath()Gets the data path used to resolve relative paths. More than one directory may be specified by separating them with the Systempath.separator
character (; on windows, : on UNIX).- Returns:
- the data path
-
setDataPath
Sets the data path used to resolve relative paths. More than one directory may be specified by separating them with the Systempath.separator
character (; on windows, : on UNIX). The elements of this path may be URLs or File paths.- Parameters:
aPath
- the data path- Throws:
MalformedURLException
- if an element of the path is neither a valid URL or a valid file path
-
resolveRelativePath
Attempts to resolve a relative path to an absolute path using the same mechanism that the ResourceManager uses to find resources -- a lookup in the datapath followed by a lookup in the classpath.- Parameters:
aRelativePath
- a relative URL or file path- Returns:
- the absolute URL of an actual file in the datapath or classpath, null if no file
matching
aRelativePath
is found. - Throws:
MalformedURLException
- if the path cannot be converted to a URL
-
getResource
Gets the Resource that has been registered under the specified name.- Parameters:
aName
- the name of the resource to retrieve- Returns:
- the Resource registered under
aName
,null
if none exists. - Throws:
ResourceAccessException
- if the requested resource could not be initialized. A common cause is that it requires parameters and thegetResource(String,String[])
method should have been called instead of this method.ResourceAccessException
- tbd
-
getResource
Gets an instance of a parameterized Resource. An example of a parameterized Resource is a dictionary whose data depends on a specified language identifier.- Parameters:
aName
- the name of the resource to retrieveaParams
- the parameters determining which particular instance is returned- Returns:
- the requested Resource,
null
if there is no resource registered under the nameaName
. - Throws:
ResourceAccessException
- if there is a resource registered underaName
but it could not be instantiated for the specified parameters.
-
getResourceClass
Gets the Class of the Resource that will be returned by a call togetResource(String)
orgetResource(String,String[])
.- Parameters:
aName
- the name of a resource- Returns:
- the Class for the resource named
aName
,null
if there is no resource registered under that name.
-
getResourceURL
Retrieves the URL to the named resource. This can be used, for example, to locate configuration or authority files.- Parameters:
aKey
- the key by which the resource is identified. If this key was declared in the <externalResourceDependencies> section of the descriptor, then the resource manager is used to locate the resource. If not, the key is assumed to be the resource name and is looked up in thedata path
or in the class path usingClassLoader.getResource(String)
.- Returns:
- the
URL
at which the named resource is located,null
if the named resource could not be found. - Throws:
ResourceAccessException
- if a failure occurs in accessing the resource
-
getResourceAsStream
Retrieves an InputStream for reading from the named resource. This can be used, for example, to read configuration or authority files.- Parameters:
aKey
- the key by which the resource is identified. If this key was declared in the <externalResourceDependencies> section of the annotator's descriptor, then the resource manager is used to locate the resource. If not, the key is assumed to be the resource name and is looked up in thedata path
or in the class path usingClassLoader.getResource(String)
.- Returns:
- an
InputStream
for reading from the named resource,null
if the named resource could not be found. It is the caller's responsibility to close this stream once it is no longer needed. - Throws:
ResourceAccessException
- if a failure occurs in accessing the resource
-
getResourceURL
Retrieves the URL to the named resource. This can be used, for example, to locate configuration or authority files. This version of this method takes an array of parameters used to further identify the resource. This can be used, for example, with resources that vary depending on the language of the document being analyzed.- Parameters:
aKey
- the key by which the resource is identified. If this key was declared in the <externalResourceDependencies> section of the annotator's descriptor, then the resource manager is used to locate the resource. If not, the key is assumed to be the resource name and is looked up in thedata path
or in the class path usingClassLoader.getResource(String)
.aParams
- parameters used to further identify the resource- Returns:
- the
URL
at which the named resource is located,null
if the named resource could not be found. - Throws:
ResourceAccessException
- if a failure occurs in accessing the resource
-
getResourceAsStream
Retrieves an InputStream for reading from the named resource. This can be used, for example, to read configuration or authority files. This version of this method takes an array of parameters used to further identify the resource. This can be used, for example, with resources that vary depending on the language of the document being analyzed.- Parameters:
aKey
- the key by which the resource is identified. If this key was declared in the <externalResourceDependencies> section of the annotator's descriptor, then the resource manager is used to locate the resource. If not, the key is assumed to be the resource name and is looked up in thedata path
or in the class path usingClassLoader.getResource(String)
.aParams
- parameters used to further identify the resource- Returns:
- an
InputStream
for reading from the named resource,null
if the named resource could not be found. It is the caller's responsibility to close this stream once it is no longer needed. - Throws:
ResourceAccessException
- if a failure occurs in accessing the resource
-
initializeExternalResources
void initializeExternalResources(ResourceManagerConfiguration aConfiguration, String aQualifiedContextName, Map<String, Object> aAdditionalParams) throws ResourceInitializationExceptionInitializes all external resources declared in a ResourceCreationSpecifier. Multi-threading: may be called on multiple threads. Initialization should be done once, on the first call- Parameters:
aConfiguration
- the ResourceManagerConfiguration containing resource declarations and bindingsaQualifiedContextName
- qualified name of UimaContext for the component (e.g. analysis engine) that is declaring these external resourcesaAdditionalParams
- additional parameters to be passed to resource initialize methods- Throws:
ResourceInitializationException
- if an initialization failure occurs
-
resolveAndValidateResourceDependencies
void resolveAndValidateResourceDependencies(ExternalResourceDependency[] aDependencies, String aQualifiedContextName) throws ResourceInitializationException Resolves a component's external resource dependencies using this resource manager. Throws an exception if any required dependencies are not satisfied. Multi-threading: may be called on multiple threads, repeatedly for the same set of resources. Implementations should avoid wasting time do this work.- Parameters:
aDependencies
- declarations of a component's dependencies on external resourcesaQualifiedContextName
- qualified name of UimaContext for the component (e.g. analysis engine) that is declaring these dependencies- Throws:
ResourceInitializationException
- if a required dependency is not satisfied
-
setExtensionClassPath
Sets the classpath for the UIMA extension ClassLoader and specifies if the extension ClassLoader should also be used to resolve resources.- Parameters:
classpath
- extension ClassLoader classpathresolveResource
- if true ClassLoad resolves resources- Throws:
MalformedURLException
- if a malformed URL has occurred in the classpath string.
-
setExtensionClassPath
void setExtensionClassPath(ClassLoader parent, String classpath, boolean resolveResource) throws MalformedURLException Sets the classpath for the UIMA extension ClassLoader and specifies if the extension ClassLoader should also be used to resolve resources. Also allows a parent ClassLoader to be specified.- Parameters:
parent
- parent ClassLoader for the extension ClassLoaderclasspath
- extension ClassLoader classpathresolveResource
- if true ClassLoad resolves resources- Throws:
MalformedURLException
- if a malformed URL has occurred in the classpath string.
-
getExtensionClassLoader
ClassLoader getExtensionClassLoader()Returns the UIMA extension class loader.- Returns:
- ClassLoader - returns the UIMA extension class loader of null if it is not available.
-
getCasManager
CasManager getCasManager()Gets the CasManager, which manages the creation and pooling of CASes.- Returns:
- the CasManager
-
setCasManager
Sets the CasManager, which manages the creation and pooling of CASes. This method does not normally need to be called by an application. It allows a custom CAS Manager implementation to be substituted for the default one, which may be useful when embedding UIMA in other middleware where a different CAS Manager implementation may be desired.This method can only be called once, and must be called before creating any AnalysisEngines that use this ResourceManager. An Exception will be thrown if this method is called twice or is called after
getCasManager()
has already been called (which happens during AE initialization).- Parameters:
aCasManager
- CAS Manager instance to plug in
-
getImportCache
Gets a cache of imported descriptors, so that the parsed objects can be reused if the same URL is imported more than once.- Returns:
- A map from absolute URL to the XMLizable object that was parsed from that URL
-