public final class ServiceLoaderImpl extends ServiceLoader
Modifier and Type | Class and Description |
---|---|
private class |
ServiceLoaderImpl.BundleTracker |
private static class |
ServiceLoaderImpl.DefaultFactory<T> |
private static class |
ServiceLoaderImpl.ProvidersList
List of
ServiceLoaderImpl.ProvidersPerBundle
Synchronisation is handled by outer class. |
private static class |
ServiceLoaderImpl.ProvidersPerBundle
Map of service name to provider names for a particular bundle
|
ServiceLoader.ProviderFactory<T>
Modifier and Type | Field and 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 and Description |
---|
ServiceLoaderImpl() |
Modifier and Type | Method and 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() |
initialize, lookupProviderClasses, lookupProviderInstances, lookupProviderInstances, reset
private java.util.concurrent.locks.ReadWriteLock rwLock
private org.osgi.framework.BundleListener bundleTracker
private org.osgi.framework.BundleContext bundleContext
private ServiceLoaderImpl.ProvidersList providersList
private org.osgi.framework.BundleContext getBundleContextSecured(org.osgi.framework.Bundle bundle)
public void trackBundles()
<T> java.lang.Iterable<? extends T> lookupProviderInstances1(java.lang.Class<T> serviceClass, ServiceLoader.ProviderFactory<T> factory)
lookupProviderInstances1
in class ServiceLoader
<T> java.lang.Iterable<java.lang.Class> lookupProviderClasses1(java.lang.Class<T> serviceClass)
lookupProviderClasses1
in class ServiceLoader
private java.lang.Class loadClassSecured(org.osgi.framework.Bundle bundle, java.lang.String name) throws java.lang.ClassNotFoundException
java.lang.ClassNotFoundException
private boolean isCompatible(java.lang.Class providerClass, java.lang.Class serviceClass)
private java.util.List<java.lang.String> load(java.io.InputStream is) throws java.io.IOException
java.io.IOException
private void addProviders(org.osgi.framework.Bundle bundle)
private void removeProviders(org.osgi.framework.Bundle bundle)
private void debug(java.lang.String s)
private void debug(java.lang.String s, java.lang.Throwable t)