Class ServiceLoaderImpl
- java.lang.Object
-
- org.glassfish.hk2.osgiresourcelocator.ServiceLoader
-
- org.glassfish.hk2.osgiresourcelocator.ServiceLoaderImpl
-
public final class ServiceLoaderImpl extends ServiceLoader
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private classServiceLoaderImpl.BundleTrackerprivate static classServiceLoaderImpl.DefaultFactory<T>private static classServiceLoaderImpl.ProvidersListList ofServiceLoaderImpl.ProvidersPerBundleSynchronisation is handled by outer class.private static classServiceLoaderImpl.ProvidersPerBundleMap of service name to provider names for a particular bundle-
Nested classes/interfaces inherited from class org.glassfish.hk2.osgiresourcelocator.ServiceLoader
ServiceLoader.ProviderFactory<T>
-
-
Field Summary
Fields Modifier and Type Field Description private org.osgi.framework.BundleContextbundleContextprivate org.osgi.framework.BundleListenerbundleTrackerprivate ServiceLoaderImpl.ProvidersListprovidersListprivate java.util.concurrent.locks.ReadWriteLockrwLock
-
Constructor Summary
Constructors Constructor Description ServiceLoaderImpl()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidaddProviders(org.osgi.framework.Bundle bundle)private voiddebug(java.lang.String s)private voiddebug(java.lang.String s, java.lang.Throwable t)private org.osgi.framework.BundleContextgetBundleContextSecured(org.osgi.framework.Bundle bundle)private booleanisCompatible(java.lang.Class providerClass, java.lang.Class serviceClass)private java.util.List<java.lang.String>load(java.io.InputStream is)Loads a single service file and returns the names of the providers.private java.lang.ClassloadClassSecured(org.osgi.framework.Bundle bundle, java.lang.String name)(package private) <T> java.lang.Iterable<java.lang.Class>lookupProviderClasses1(java.lang.Class<T> serviceClass)(package private) <T> java.lang.Iterable<? extends T>lookupProviderInstances1(java.lang.Class<T> serviceClass, ServiceLoader.ProviderFactory<T> factory)private voidremoveProviders(org.osgi.framework.Bundle bundle)voidtrackBundles()-
Methods inherited from class org.glassfish.hk2.osgiresourcelocator.ServiceLoader
initialize, lookupProviderClasses, lookupProviderInstances, lookupProviderInstances, reset
-
-
-
-
Field Detail
-
rwLock
private java.util.concurrent.locks.ReadWriteLock rwLock
-
bundleTracker
private org.osgi.framework.BundleListener bundleTracker
-
bundleContext
private org.osgi.framework.BundleContext bundleContext
-
providersList
private ServiceLoaderImpl.ProvidersList providersList
-
-
Method Detail
-
getBundleContextSecured
private org.osgi.framework.BundleContext getBundleContextSecured(org.osgi.framework.Bundle bundle)
-
trackBundles
public void trackBundles()
-
lookupProviderInstances1
<T> java.lang.Iterable<? extends T> lookupProviderInstances1(java.lang.Class<T> serviceClass, ServiceLoader.ProviderFactory<T> factory)- Specified by:
lookupProviderInstances1in classServiceLoader
-
lookupProviderClasses1
<T> java.lang.Iterable<java.lang.Class> lookupProviderClasses1(java.lang.Class<T> serviceClass)
- Specified by:
lookupProviderClasses1in classServiceLoader
-
loadClassSecured
private java.lang.Class loadClassSecured(org.osgi.framework.Bundle bundle, java.lang.String name) throws java.lang.ClassNotFoundException- Throws:
java.lang.ClassNotFoundException
-
isCompatible
private boolean isCompatible(java.lang.Class providerClass, java.lang.Class serviceClass)
-
load
private java.util.List<java.lang.String> load(java.io.InputStream is) throws java.io.IOExceptionLoads a single service file and returns the names of the providers. If the same provider appears multiple times, the list contains only one entry for all of the duplicates.- Returns:
- names of providers, empty list if none is found
- Throws:
java.io.IOException
-
addProviders
private void addProviders(org.osgi.framework.Bundle bundle)
-
removeProviders
private void removeProviders(org.osgi.framework.Bundle bundle)
-
debug
private void debug(java.lang.String s)
-
debug
private void debug(java.lang.String s, java.lang.Throwable t)
-
-