public class ProviderLocator
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
private static org.osgi.framework.BundleContext |
context |
private static java.lang.Object |
registryTracker |
Modifier | Constructor and Description |
---|---|
private |
ProviderLocator() |
Modifier and Type | Method and Description |
---|---|
static void |
destroy()
Cleanup resources on bundle shutdown.
|
private static java.lang.Object |
getRegistry()
Retrieve the registry from the tracker if it is available,
all without causing the interface class to load.
|
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.
|
private static java.lang.Class<?> |
locateServiceClass(java.lang.String iface,
java.lang.Class<?> contextClass,
java.lang.ClassLoader loader)
Locate the first class for a META-INF/services definition
of a given interface class.
|
private static java.util.Collection<java.lang.Class<?>> |
locateServiceClasses(java.lang.String iface,
java.lang.Class<?> contextClass,
java.lang.ClassLoader loader)
Locate all classes that map to a given provider class definition.
|
private static java.lang.String |
locateServiceClassName(java.lang.String iface,
java.lang.Class<?> contextClass,
java.lang.ClassLoader loader)
Locate the first class name for a META-INF/services definition
of a given class.
|
private static java.lang.String |
locateServiceClassName(java.lang.String iface,
java.lang.ClassLoader loader)
Locate a classpath-define service mapping.
|
private static java.util.Collection<java.lang.String> |
locateServiceClassNames(java.lang.String iface,
java.lang.Class<?> contextClass,
java.lang.ClassLoader loader)
Locate all class names name for a META-INF/services definition
of a given class.
|
(package private) static void |
locateServiceClassNames(java.lang.String iface,
java.lang.ClassLoader loader,
java.util.Set names)
Locate all class names name for a META-INF/services definition
of a given class.
|
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.
|
private static java.util.List<java.lang.String> |
parseServiceDefinition(java.net.URL u)
Parse a definition file and return the names of all included implementation classes
contained within the file.
|
private static org.osgi.framework.BundleContext context
private static java.lang.Object registryTracker
public static void init(org.osgi.framework.BundleContext c)
c
- The starup BundleContext.public static void destroy()
public static java.lang.Class<?> locate(java.lang.String providerId)
providerId
- The provider id (generally, a fully qualified class name).public static java.util.List<java.lang.Class<?>> locateAll(java.lang.String providerId)
providerId
- The target provider identifier.public static java.lang.Class<?> loadClass(java.lang.String className) throws java.lang.ClassNotFoundException
className
- The name of the target class.java.lang.ClassNotFoundException
- Thrown if the class cannot be located.public static java.lang.Class<?> loadClass(java.lang.String className, java.lang.Class<?> contextClass) throws java.lang.ClassNotFoundException
className
- The name of the target class.java.lang.ClassNotFoundException
- Thrown if the class cannot be located.public static java.lang.Class<?> loadClass(java.lang.String className, java.lang.Class<?> contextClass, java.lang.ClassLoader loader) throws java.lang.ClassNotFoundException
className
- The name of the target class.loader
- An optional class loader.java.lang.ClassNotFoundException
- Thrown if the class cannot be loaded.public static java.lang.Object getService(java.lang.String iface, java.lang.Class<?> contextClass, java.lang.ClassLoader loader) throws java.lang.Exception
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.java.lang.Exception
- Thrown for any classloading or exceptions thrown
trying to instantiate a service instance.public static java.lang.Class<?> getServiceClass(java.lang.String iface, java.lang.Class<?> contextClass, java.lang.ClassLoader loader) throws java.lang.ClassNotFoundException
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.java.lang.Exception
- Thrown for any classloading exceptions thrown
trying to load the class.java.lang.ClassNotFoundException
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
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.java.lang.Exception
- Thrown for any classloading or exceptions thrown
trying to instantiate a service instance.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
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.java.lang.Exception
- Thrown for any classloading exceptions thrown
trying to load a provider class.private static java.lang.String locateServiceClassName(java.lang.String iface, java.lang.Class<?> contextClass, java.lang.ClassLoader loader)
iface
- The interface class name used for the match.loader
- The classloader for locating resources.private static java.lang.String locateServiceClassName(java.lang.String iface, java.lang.ClassLoader loader)
iface
- The required interface name.loader
- The ClassLoader instance to use to locate the service.private static java.lang.Class<?> locateServiceClass(java.lang.String iface, java.lang.Class<?> contextClass, java.lang.ClassLoader loader) throws java.lang.ClassNotFoundException
iface
- The interface class name used for the match.loader
- The classloader for locating resources.java.lang.ClassNotFoundException
private static java.util.Collection<java.lang.String> locateServiceClassNames(java.lang.String iface, java.lang.Class<?> contextClass, java.lang.ClassLoader loader)
iface
- The interface class name used for the match.loader
- The classloader for locating resources.static void locateServiceClassNames(java.lang.String iface, java.lang.ClassLoader loader, java.util.Set names)
iface
- The interface class name used for the match.loader
- The classloader for locating resources.private static java.util.Collection<java.lang.Class<?>> locateServiceClasses(java.lang.String iface, java.lang.Class<?> contextClass, java.lang.ClassLoader loader) throws java.lang.ClassNotFoundException
iface
- The interface class name used for the match.loader
- The classloader for locating resources.java.lang.ClassNotFoundException
private static java.util.List<java.lang.String> parseServiceDefinition(java.net.URL u)
u
- The URL of the filepublic static java.lang.String lookupByJREPropertyFile(java.lang.String path, java.lang.String property) throws java.io.IOException
path
- The relative path to the desired properties file.property
- The name of the required property.java.io.IOException
private static java.lang.Object getRegistry()