Package org.apache.uima.util

# Class SimpleResourceFactory

java.lang.Object
org.apache.uima.util.SimpleResourceFactory

All Implemented Interfaces:
  `ResourceFactory`

public class SimpleResourceFactory extends Object implements ResourceFactory
A simple implementation of a `ResourceFactory`. This implementation maintains a Map between the `ResourceSpecifier` sub-interface name (e.g. `AnalysisEngineDescription`) and the class name of the resource to be constructed from specifiers of that type.

UIMA developers who introduce new types of `Resource`s or `ResourceSpecifier`s may create an instance of this class and use the `addMapping(Class,Class)` method to register a mapping between the ResourceSpecifier interface and the Class of the Resource that is to be constructed from it. The `SimpleResourceFactory` should then be registered with the framework by calling ``UIMAFramework.getResourceFactory()`.`registerFactory(Class,ResourceFactory)`;`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected Map<Class<? extends ResourceSpecifier>,List<Class<? extends Resource>>>`
  `mClassMap`
  Map from ResourceSpecifier Class to List of Resource Classes.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `SimpleResourceFactory()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addMapping(Class<? extends ResourceSpecifier> aSpecifierInterface, Class<? extends Resource> aResourceClass)`
  Configures this `SimpleResourceFactory` by adding a new mapping between a `ResourceSpecifier` class and a `Resource` class.
  `void`
  `addMapping(String aSpecifierInterfaceName, String aResourceClassName)`
  Configures this `SimpleResourceFactory` by adding a new mapping between a `ResourceSpecifier` class and a `Resource` class.
  `Resource`
  `produceResource(Class<? extends Resource> aResourceClass, ResourceSpecifier aSpecifier, Map<String,Object> aAdditionalParams)`
  Produces an appropriate `Resource` instance from a `ResourceSpecifier`.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### mClassMap

    protected Map<Class<? extends ResourceSpecifier>,List<Class<? extends Resource>>> mClassMap
    Map from ResourceSpecifier Class to List of Resource Classes. Resource initialization is attempted in reverse order through this List, so more recently registered classes are tried first.

- ## Constructor Details

  - ### SimpleResourceFactory

    public SimpleResourceFactory()

- ## Method Details

  - ### produceResource

    public Resource produceResource(Class<? extends Resource> aResourceClass, ResourceSpecifier aSpecifier, Map<String,Object> aAdditionalParams) throws ResourceInitializationException
    Produces an appropriate `Resource` instance from a `ResourceSpecifier`.
    Specified by:
      `produceResource` in interface `ResourceFactory`
    Parameters:
      `aResourceClass` - the interface of the resource to be produced. This is intended to be a standard UIMA interface such as `TextAnalysisEngine` or `ASB`.
      `aSpecifier` - an object that specifies how to acquire an instance of a `Resource`.
      `aAdditionalParams` - a Map containing additional parameters to pass to the `Resource.initialize(ResourceSpecifier,Map)` method. May be `null` if there are no parameters.
    Returns:
      a `Resource` instance. Returns `null` if this factory does not know how to create a Resource from the `ResourceSpecifier` provided.
    Throws:
      `ResourceInitializationException` - if a failure occurred during production of the resource
    See Also:
      - `ResourceFactory.produceResource(Class, ResourceSpecifier,Map)`

  - ### addMapping

    public void addMapping(Class<? extends ResourceSpecifier> aSpecifierInterface, Class<? extends Resource> aResourceClass)
    Configures this `SimpleResourceFactory` by adding a new mapping between a `ResourceSpecifier` class and a `Resource` class.
    Parameters:
      `aSpecifierInterface` - the subinterface of `ResourceSpecifier`.
      `aResourceClass` - a subclass of `Resource` that is to be instantiated from resource specifiers of the given class.

  - ### addMapping

    public void addMapping(String aSpecifierInterfaceName, String aResourceClassName) throws ClassNotFoundException
    Configures this `SimpleResourceFactory` by adding a new mapping between a `ResourceSpecifier` class and a `Resource` class.
    Parameters:
      `aSpecifierInterfaceName` - name of the subinterface of `ResourceSpecifier`.
      `aResourceClassName` - the name of a subclass of `Resource` that is to be instantiated from resource specifiers of the given class.
    Throws:
      `ClassNotFoundException` - -