ProviderRegistryImpl
Date: 2016-06-24

org.apache.geronimo.osgi.registry

## Class ProviderRegistryImpl

- java.lang.Object
- - org.apache.geronimo.osgi.registry.ProviderRegistryImpl

- All Implemented Interfaces:
    ProviderRegistry

      public class ProviderRegistryImpl
      extends java.lang.Object
      implements ProviderRegistry

  The implementation of the provider registry used to store the bundle registrations.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `EXPORT_PROVIDER_HEADER`
    `static java.lang.String` | `OPT_IN_HEADER`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ProviderRegistryImpl(Activator activator)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.lang.Object` | `addBundle(org.osgi.framework.Bundle bundle)` Add a bundle to the provider registry.
    `java.lang.Object` | `getService(java.lang.String providerId)` Locate and instantiate an instance of a service provider defined in the META-INF/services directory of tracked bundles.
    `java.lang.Class<?>` | `getServiceClass(java.lang.String providerId)` Locate and return the class for a service provider defined in the META-INF/services directory of tracked bundles.
    `java.util.List<java.lang.Class<?>>` | `getServiceClasses(java.lang.String providerId)` Locate all services that match a given provider id and return the implementation classes
    `java.util.List<java.lang.Object>` | `getServices(java.lang.String providerId)` Locate all services that match a given provider id and create instances.
    `java.lang.Class<?>` | `locate(java.lang.String providerId)` Locate a class by its provider id indicator.
    `java.util.List<java.lang.Class<?>>` | `locateAll(java.lang.String providerId)` Locate all class files that match a given provider id.
    `protected void` | `registerProvider(org.apache.geronimo.osgi.registry.ProviderRegistryImpl.BundleProviderLoader provider)` Register an individual provivider item by its provider identifier.
    `protected void` | `registerService(org.apache.geronimo.osgi.registry.ProviderRegistryImpl.BundleProviderLoader provider)` Register an individual provivider item by its provider identifier.
    `void` | `removeBundle(org.osgi.framework.Bundle bundle, java.lang.Object obj)` Remove a bundle from the registry.
    `protected void` | `unregisterProvider(org.apache.geronimo.osgi.registry.ProviderRegistryImpl.BundleProviderLoader provider)` Removed a provider registration for a named provider id.
    `protected void` | `unregisterService(org.apache.geronimo.osgi.registry.ProviderRegistryImpl.BundleProviderLoader provider)` Removed a provider registration for a named provider id.

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

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

- - ### Field Detail

    - #### OPT_IN_HEADER

          public static final java.lang.String OPT_IN_HEADER

      See Also:
        Constant Field Values

    - #### EXPORT_PROVIDER_HEADER

          public static final java.lang.String EXPORT_PROVIDER_HEADER

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### ProviderRegistryImpl

          public ProviderRegistryImpl(Activator activator)

  - ### Method Detail

    - #### addBundle

          public java.lang.Object addBundle(org.osgi.framework.Bundle bundle)

      Add a bundle to the provider registry. This searches for services information in the OSGI-INF/providers directory of the bundle and registers this information in a provider registry. Bundles that need to locate class instances can use the provider registry to locate classes that might reside in other bundles.
      Parameters:
        `bundle` - The source bundle.
      Returns:
        A map of the located registrations. Returns null if this bundle does not contain any providers.

    - #### removeBundle

          public void removeBundle(org.osgi.framework.Bundle bundle,
                          java.lang.Object obj)

      Remove a bundle from the registry.
      Parameters:
        `bundle` - The target bundle.

    - #### registerProvider

          protected void registerProvider(org.apache.geronimo.osgi.registry.ProviderRegistryImpl.BundleProviderLoader provider)

      Register an individual provivider item by its provider identifier.
      Parameters:
        `id` - The provider id.
        `provider` - The loader used to resolve the provider class.

    - #### unregisterProvider

          protected void unregisterProvider(org.apache.geronimo.osgi.registry.ProviderRegistryImpl.BundleProviderLoader provider)

      Removed a provider registration for a named provider id.
      Parameters:
        `id` - The target id
        `provider` - The provider registration instance

    - #### registerService

          protected void registerService(org.apache.geronimo.osgi.registry.ProviderRegistryImpl.BundleProviderLoader provider)

      Register an individual provivider item by its provider identifier.
      Parameters:
        `id` - The provider id.
        `provider` - The loader used to resolve the provider class.

    - #### unregisterService

          protected void unregisterService(org.apache.geronimo.osgi.registry.ProviderRegistryImpl.BundleProviderLoader provider)

      Removed a provider registration for a named provider id.
      Parameters:
        `id` - The target id
        `provider` - The provider registration instance

    - #### locate

          public java.lang.Class<?> locate(java.lang.String providerId)

      Locate a class by its provider id indicator. .
      Specified by:
        `locate` in interface `ProviderRegistry`
      Parameters:
        `providerId` - The provider id (generally, a fully qualified class name).
      Returns:
        The Class corresponding to this provider id. Returns null if this is not registered or the indicated class can't be loaded.

    - #### locateAll

          public java.util.List<java.lang.Class<?>> locateAll(java.lang.String providerId)

      Locate all class files that match a given provider id.
      Specified by:
        `locateAll` in interface `ProviderRegistry`
      Parameters:
        `providerId` - The target provider identifier.
      Returns:
        A List containing the class objects corresponding to the provider identifier. Returns an empty list if no matching classes can be located.

    - #### getService

          public java.lang.Object getService(java.lang.String providerId)
                                      throws java.lang.Exception

      Locate and instantiate an instance of a service provider defined in the META-INF/services directory of tracked bundles.
      Specified by:
        `getService` in interface `ProviderRegistry`
      Parameters:
        `providerId` - The name of the target interface class.
      Returns:
        The service instance. Returns null if no service defintions can be located.
      Throws:
        `java.lang.Exception` - Any classloading or other exceptions thrown during the process of creating this service instance.

    - #### getServices

          public java.util.List<java.lang.Object> getServices(java.lang.String providerId)

      Locate all services that match a given provider id and create instances.
      Specified by:
        `getServices` in interface `ProviderRegistry`
      Parameters:
        `providerId` - The target provider identifier.
      Returns:
        A List containing the instances corresponding to the provider identifier. Returns an empty list if no matching classes can be located or created

    - #### getServiceClasses

          public java.util.List<java.lang.Class<?>> getServiceClasses(java.lang.String providerId)

      Locate all services that match a given provider id and return the implementation classes
      Specified by:
        `getServiceClasses` in interface `ProviderRegistry`
      Parameters:
        `providerId` - The target provider identifier.
      Returns:
        A List containing the classes corresponding to the provider identifier. Returns an empty list if no matching classes can be located.

    - #### getServiceClass

          public java.lang.Class<?> getServiceClass(java.lang.String providerId)
                                             throws java.lang.ClassNotFoundException

      Locate and return the class for a service provider defined in the META-INF/services directory of tracked bundles.
      Specified by:
        `getServiceClass` in interface `ProviderRegistry`
      Parameters:
        `providerId` - The name of the target interface class.
      Returns:
        The provider class. Returns null if no service defintions can be located.
      Throws:
        `java.lang.Exception` - Any classloading or other exceptions thrown during the process of loading this service provider class.
        `java.lang.ClassNotFoundException`