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 class
ServiceLoaderImpl.BundleTracker
private static class
ServiceLoaderImpl.DefaultFactory<T>
private static class
ServiceLoaderImpl.ProvidersList
List ofServiceLoaderImpl.ProvidersPerBundle
Synchronisation is handled by outer class.private static class
ServiceLoaderImpl.ProvidersPerBundle
Map 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.BundleContext
bundleContext
private org.osgi.framework.BundleListener
bundleTracker
private ServiceLoaderImpl.ProvidersList
providersList
private java.util.concurrent.locks.ReadWriteLock
rwLock
-
Constructor Summary
Constructors Constructor Description ServiceLoaderImpl()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
addProviders(org.osgi.framework.Bundle bundle)
private void
debug(java.lang.String s)
private void
debug(java.lang.String s, java.lang.Throwable t)
private org.osgi.framework.BundleContext
getBundleContextSecured(org.osgi.framework.Bundle bundle)
private boolean
isCompatible(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.Class
loadClassSecured(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 void
removeProviders(org.osgi.framework.Bundle bundle)
void
trackBundles()
-
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:
lookupProviderInstances1
in classServiceLoader
-
lookupProviderClasses1
<T> java.lang.Iterable<java.lang.Class> lookupProviderClasses1(java.lang.Class<T> serviceClass)
- Specified by:
lookupProviderClasses1
in 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.IOException
Loads 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)
-
-