Package org.apache.geronimo.osgi.locator
Class ProviderLocator
- java.lang.Object
-
- org.apache.geronimo.osgi.locator.ProviderLocator
-
public class ProviderLocator extends Object
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static void
destroy()
Cleanup resources on bundle shutdown.static Object
getService(String iface, Class<?> contextClass, ClassLoader loader)
Get a single service instance that matches an interface definition.static Class<?>
getServiceClass(String iface, Class<?> contextClass, ClassLoader loader)
Locate a service class that matches an interface definition.static List<Class<?>>
getServiceClasses(String iface, Class<?> contextClass, ClassLoader loader)
Get a list of service class implementations that match an interface name.static List<Object>
getServices(String iface, Class<?> contextClass, 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 Class<?>
loadClass(String className)
Utility class for locating a class with OSGi registry support.static Class<?>
loadClass(String className, Class<?> contextClass)
Utility class for locating a class with OSGi registry support.static Class<?>
loadClass(String className, Class<?> contextClass, ClassLoader loader)
Standardized utility method for performing class lookups with support for OSGi registry lookups.static Class<?>
locate(String providerId)
Locate a class by its provider id indicator.static List<Class<?>>
locateAll(String providerId)
Locate all class files that match a given factory id.static String
lookupByJREPropertyFile(String path, 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 Class<?> locate(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 List<Class<?>> locateAll(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 Class<?> loadClass(String className) throws 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:
ClassNotFoundException
- Thrown if the class cannot be located.
-
loadClass
public static Class<?> loadClass(String className, Class<?> contextClass) throws 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:
ClassNotFoundException
- Thrown if the class cannot be located.
-
loadClass
public static Class<?> loadClass(String className, Class<?> contextClass, ClassLoader loader) throws 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:
ClassNotFoundException
- Thrown if the class cannot be loaded.
-
getService
public static Object getService(String iface, Class<?> contextClass, ClassLoader loader) throws 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:
Exception
- Thrown for any classloading or exceptions thrown trying to instantiate a service instance.
-
getServiceClass
public static Class<?> getServiceClass(String iface, Class<?> contextClass, ClassLoader loader) throws 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:
Exception
- Thrown for any classloading exceptions thrown trying to load the class.ClassNotFoundException
-
getServices
public static List<Object> getServices(String iface, Class<?> contextClass, ClassLoader loader) throws 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:
Exception
- Thrown for any classloading or exceptions thrown trying to instantiate a service instance.
-
getServiceClasses
public static List<Class<?>> getServiceClasses(String iface, Class<?> contextClass, ClassLoader loader) throws 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:
Exception
- Thrown for any classloading exceptions thrown trying to load a provider class.
-
lookupByJREPropertyFile
public static String lookupByJREPropertyFile(String path, String property) throws 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:
IOException
-
-