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 and Description
    --- | ---
    `protected Map<Class<? extends ResourceSpecifier>,List<Class<? extends Resource>>>` | `mClassMap` Map from ResourceSpecifier Class to List of Resource Classes.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SimpleResourceFactory()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and 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 Detail

    - #### 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 Detail

    - #### SimpleResourceFactory

          public SimpleResourceFactory()

  - ### Method Detail

    - #### 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` - -

Copyright © 2006–2022 The Apache Software Foundation. All rights reserved.