Class ProviderLocator


  • public class ProviderLocator
    extends java.lang.Object
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static void destroy()
      Cleanup resources on bundle shutdown.
      static java.lang.Object getService​(java.lang.String iface, java.lang.Class<?> contextClass, java.lang.ClassLoader loader)
      Get a single service instance that matches an interface definition.
      static java.lang.Class<?> getServiceClass​(java.lang.String iface, java.lang.Class<?> contextClass, java.lang.ClassLoader loader)
      Locate a service class that matches an interface definition.
      static java.util.List<java.lang.Class<?>> getServiceClasses​(java.lang.String iface, java.lang.Class<?> contextClass, java.lang.ClassLoader loader)
      Get a list of service class implementations that match an interface name.
      static java.util.List<java.lang.Object> getServices​(java.lang.String iface, java.lang.Class<?> contextClass, java.lang.ClassLoader loader)
      Get a list of services that match a given interface name.
      static void init​(org.osgi.framework.BundleContext c)
      initialize the tracker statics for this bundle
      static java.lang.Class<?> loadClass​(java.lang.String className)
      Utility class for locating a class with OSGi registry support.
      static java.lang.Class<?> loadClass​(java.lang.String className, java.lang.Class<?> contextClass)
      Utility class for locating a class with OSGi registry support.
      static java.lang.Class<?> loadClass​(java.lang.String className, java.lang.Class<?> contextClass, java.lang.ClassLoader loader)
      Standardized utility method for performing class lookups with support for OSGi registry lookups.
      static java.lang.Class<?> locate​(java.lang.String providerId)
      Locate a class by its provider id indicator.
      static java.util.List<java.lang.Class<?>> locateAll​(java.lang.String providerId)
      Locate all class files that match a given factory id.
      static java.lang.String lookupByJREPropertyFile​(java.lang.String path, java.lang.String property)
      Perform a service class discovery by looking for a property in a target properties file located in the java.home directory.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • init

        public static void init​(org.osgi.framework.BundleContext c)
        initialize the tracker statics for this bundle
        Parameters:
        c - The starup BundleContext.
      • destroy

        public static void destroy()
        Cleanup resources on bundle shutdown.
      • locate

        public static java.lang.Class<?> locate​(java.lang.String providerId)
        Locate a class by its provider id indicator. .
        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 static java.util.List<java.lang.Class<?>> locateAll​(java.lang.String providerId)
        Locate all class files that match a given factory id.
        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.
      • loadClass

        public static java.lang.Class<?> loadClass​(java.lang.String className)
                                            throws java.lang.ClassNotFoundException
        Utility class for locating a class with OSGi registry support. Uses the thread context classloader as part of the search order.
        Parameters:
        className - The name of the target class.
        Returns:
        The loaded class.
        Throws:
        java.lang.ClassNotFoundException - Thrown if the class cannot be located.
      • loadClass

        public static java.lang.Class<?> loadClass​(java.lang.String className,
                                                   java.lang.Class<?> contextClass)
                                            throws java.lang.ClassNotFoundException
        Utility class for locating a class with OSGi registry support. Uses the thread context classloader as part of the search order.
        Parameters:
        className - The name of the target class.
        Returns:
        The loaded class.
        Throws:
        java.lang.ClassNotFoundException - Thrown if the class cannot be located.
      • loadClass

        public static java.lang.Class<?> loadClass​(java.lang.String className,
                                                   java.lang.Class<?> contextClass,
                                                   java.lang.ClassLoader loader)
                                            throws java.lang.ClassNotFoundException
        Standardized utility method for performing class lookups with support for OSGi registry lookups.
        Parameters:
        className - The name of the target class.
        loader - An optional class loader.
        Returns:
        The loaded class
        Throws:
        java.lang.ClassNotFoundException - Thrown if the class cannot be loaded.
      • getService

        public static java.lang.Object getService​(java.lang.String iface,
                                                  java.lang.Class<?> contextClass,
                                                  java.lang.ClassLoader loader)
                                           throws java.lang.Exception
        Get a single service instance that matches an interface definition.
        Parameters:
        iface - The name of the required interface.
        contextClass - The class requesting the lookup (used for class resolution).
        loader - A class loader to use for searching for service definitions and loading classes.
        Returns:
        The service instance, or null if no matching services can be found.
        Throws:
        java.lang.Exception - Thrown for any classloading or exceptions thrown trying to instantiate a service instance.
      • getServiceClass

        public static java.lang.Class<?> getServiceClass​(java.lang.String iface,
                                                         java.lang.Class<?> contextClass,
                                                         java.lang.ClassLoader loader)
                                                  throws java.lang.ClassNotFoundException
        Locate a service class that matches an interface definition.
        Parameters:
        iface - The name of the required interface.
        contextClass - The class requesting the lookup (used for class resolution).
        loader - A class loader to use for searching for service definitions and loading classes.
        Returns:
        The located class, or null if no matching services can be found.
        Throws:
        java.lang.Exception - Thrown for any classloading exceptions thrown trying to load the class.
        java.lang.ClassNotFoundException
      • getServices

        public static java.util.List<java.lang.Object> getServices​(java.lang.String iface,
                                                                   java.lang.Class<?> contextClass,
                                                                   java.lang.ClassLoader loader)
                                                            throws java.lang.Exception
        Get a list of services that match a given interface name. This searches both the current class path and the global repository for matches.
        Parameters:
        iface - The name of the required interface.
        contextClass - The class requesting the lookup (used for class resolution).
        loader - A class loader to use for searching for service definitions and loading classes.
        Returns:
        A list of matching services. Returns an empty list if there are no matches.
        Throws:
        java.lang.Exception - Thrown for any classloading or exceptions thrown trying to instantiate a service instance.
      • getServiceClasses

        public static java.util.List<java.lang.Class<?>> getServiceClasses​(java.lang.String iface,
                                                                           java.lang.Class<?> contextClass,
                                                                           java.lang.ClassLoader loader)
                                                                    throws java.lang.Exception
        Get a list of service class implementations that match an interface name. This searches both the current class path and the global repository for matches.
        Parameters:
        iface - The name of the required interface.
        contextClass - The class requesting the lookup (used for class resolution).
        loader - A class loader to use for searching for service definitions and loading classes.
        Returns:
        A list of matching provider classes. Returns an empty list if there are no matches.
        Throws:
        java.lang.Exception - Thrown for any classloading exceptions thrown trying to load a provider class.
      • lookupByJREPropertyFile

        public static java.lang.String lookupByJREPropertyFile​(java.lang.String path,
                                                               java.lang.String property)
                                                        throws java.io.IOException
        Perform a service class discovery by looking for a property in a target properties file located in the java.home directory.
        Parameters:
        path - The relative path to the desired properties file.
        property - The name of the required property.
        Returns:
        The value of the named property within the properties file. Returns null if the property doesn't exist or the properties file doesn't exist.
        Throws:
        java.io.IOException