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