Class ProviderRegistryImpl

java.lang.Object
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 Details

  • Constructor Details

    • ProviderRegistryImpl

      public ProviderRegistryImpl(Activator activator)
  • Method Details

    • 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(ProviderRegistryImpl.BundleProviderLoader provider)
      Register an individual provivider item by its provider identifier.
      Parameters:
      provider - The loader used to resolve the provider class.
      id - The provider id.
    • unregisterProvider

      protected void unregisterProvider(ProviderRegistryImpl.BundleProviderLoader provider)
      Removed a provider registration for a named provider id.
      Parameters:
      provider - The provider registration instance
      id - The target id
    • registerService

      protected void registerService(ProviderRegistryImpl.BundleProviderLoader provider)
      Register an individual provivider item by its provider identifier.
      Parameters:
      provider - The loader used to resolve the provider class.
      id - The provider id.
    • unregisterService

      protected void unregisterService(ProviderRegistryImpl.BundleProviderLoader provider)
      Removed a provider registration for a named provider id.
      Parameters:
      provider - The provider registration instance
      id - The target id
    • 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
    • log

      private void log(int level, String message)
    • log

      private void log(int level, String message, Throwable th)