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.ClassNotFoundExceptionpublic 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.ClassNotFoundExceptionprivate 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.ClassNotFoundExceptionprivate 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.IOExceptionprivate static java.lang.Object getRegistry()