org.apache.geronimo.osgi.registry
Class ProviderRegistryImpl

java.lang.Object
  extended by org.apache.geronimo.osgi.registry.ProviderRegistryImpl
All Implemented Interfaces:
ProviderRegistry

public class ProviderRegistryImpl
extends Object
implements ProviderRegistry

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


Field Summary
static String EXPORT_PROVIDER_HEADER
           
static String OPT_IN_HEADER
           
 
Constructor Summary
ProviderRegistryImpl(Activator activator)
           
 
Method Summary
 Object addBundle(org.osgi.framework.Bundle bundle)
          Add a bundle to the provider registry.
 Object getService(String providerId)
          Locate and instantiate an instance of a service provider defined in the META-INF/services directory of tracked bundles.
 Class<?> getServiceClass(String providerId)
          Locate and return the class for a service provider defined in the META-INF/services directory of tracked bundles.
 List<Class<?>> getServiceClasses(String providerId)
          Locate all services that match a given provider id and return the implementation classes
 List<Object> getServices(String providerId)
          Locate all services that match a given provider id and create instances.
 Class<?> locate(String providerId)
          Locate a class by its provider id indicator.
 List<Class<?>> locateAll(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, 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 String OPT_IN_HEADER
See Also:
Constant Field Values

EXPORT_PROVIDER_HEADER

public static final String EXPORT_PROVIDER_HEADER
See Also:
Constant Field Values
Constructor Detail

ProviderRegistryImpl

public ProviderRegistryImpl(Activator activator)
Method Detail

addBundle

public 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,
                         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 Class<?> locate(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 List<Class<?>> locateAll(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 Object getService(String providerId)
                  throws 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:
Exception - Any classloading or other exceptions thrown during the process of creating this service instance.

getServices

public List<Object> getServices(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 List<Class<?>> getServiceClasses(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 Class<?> getServiceClass(String providerId)
                         throws 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:
Exception - Any classloading or other exceptions thrown during the process of loading this service provider class.
ClassNotFoundException


Copyright © 2003-2012 The Apache Software Foundation. All Rights Reserved.