Package org.apache.geronimo.osgi.locator
Class ProviderLocator
- java.lang.Object
-
- org.apache.geronimo.osgi.locator.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 bundlestatic 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.
-
-
-
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
-
-