Top Inners Fields Constructors Methods
org.glassfish.hk2.osgiresourcelocator

public final Class ServiceLoaderImpl

extends ServiceLoader
Class Inheritance
Imports
org.osgi.framework.*, java.io.IOException, .InputStream, java.net.URL, java.security.AccessController, .PrivilegedAction, .PrivilegedActionException, .PrivilegedExceptionAction, java.util.*, java.util.concurrent.locks.ReadWriteLock, .ReentrantReadWriteLock

Author
[email protected]

Nested and Inner Type Summary

Modifier and TypeClass and Description
private class
private static class
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

Field Summary

Modifier and TypeField and Description
private BundleContext
private BundleListener
private ServiceLoaderImpl.ProvidersList
private ReadWriteLock

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
private void
private void
private void
private BundleContext
private boolean
isCompatible(Class<T> providerClass, Class<T> serviceClass)

private List<String>

Returns:

names of providers, empty list if none is found
load
(InputStream is)

Loads a single service file and returns the names of the providers.

private Class<T>
loadClassSecured(final Bundle bundle, final String name)

pack-priv <T> Iterable<Class<T>>
pack-priv <T> Iterable<? extends T>
private synchronized void
public void
Inherited from org.glassfish.hk2.osgiresourcelocator.ServiceLoader:
initializelookupProviderClasseslookupProviderInstanceslookupProviderInstancesreset

Field Detail

bundleContextback to summary
private BundleContext bundleContext
bundleTrackerback to summary
private BundleListener bundleTracker
providersListback to summary
private ServiceLoaderImpl.ProvidersList providersList
rwLockback to summary
private ReadWriteLock rwLock

Constructor Detail

ServiceLoaderImplback to summary
public ServiceLoaderImpl()

Method Detail

addProvidersback to summary
private void addProviders(Bundle bundle)
debugback to summary
private void debug(String s)
debugback to summary
private void debug(String s, Throwable t)
getBundleContextSecuredback to summary
private BundleContext getBundleContextSecured(final Bundle bundle)
isCompatibleback to summary
private boolean isCompatible(Class<T> providerClass, Class<T> serviceClass)
loadback to summary
private List<String> load(InputStream is) throws 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:List<String>

names of providers, empty list if none is found

loadClassSecuredback to summary
private Class<T> loadClassSecured(final Bundle bundle, final String name) throws ClassNotFoundException
lookupProviderClasses1back to summary
pack-priv <T> Iterable<Class<T>> lookupProviderClasses1(Class<T> serviceClass)

Implements abstract org.glassfish.hk2.osgiresourcelocator.ServiceLoader.lookupProviderClasses1.

lookupProviderInstances1back to summary
pack-priv <T> Iterable<? extends T> lookupProviderInstances1(Class<T> serviceClass, ServiceLoader.ProviderFactory<T> factory)

Implements abstract org.glassfish.hk2.osgiresourcelocator.ServiceLoader.lookupProviderInstances1.

removeProvidersback to summary
private synchronized void removeProviders(Bundle bundle)
trackBundlesback to summary
public void trackBundles()
org.glassfish.hk2.osgiresourcelocator back to summary

private Class ServiceLoaderImpl.BundleTracker

extends Object
implements BundleListener
Class Inheritance
  • java.lang.Object
  • org.glassfish.hk2.osgiresourcelocator.ServiceLoaderImpl.BundleTracker
All Implemented Interfaces
org.osgi.framework.BundleListener, java.util.EventListener

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
public void
bundleChanged(BundleEvent event)

Implements org.osgi.framework.BundleListener.bundleChanged.

Receives notification that a bundle has had a lifecycle change.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Constructor Detail

BundleTrackerback to summary
private BundleTracker()

Method Detail

bundleChangedback to summary
public void bundleChanged(BundleEvent event)

Implements org.osgi.framework.BundleListener.bundleChanged.

Doc from org.osgi.framework.BundleListener.bundleChanged.

Receives notification that a bundle has had a lifecycle change.

org.glassfish.hk2.osgiresourcelocator back to summary

private Class ServiceLoaderImpl.DefaultFactory<T>

extends Object
implements ServiceLoader.ProviderFactory<T>
Class Inheritance
  • java.lang.Object
  • org.glassfish.hk2.osgiresourcelocator.ServiceLoaderImpl.DefaultFactory
All Implemented Interfaces
org.glassfish.hk2.osgiresourcelocator.ServiceLoader.ProviderFactory

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
public T
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Constructor Detail

DefaultFactoryback to summary
private DefaultFactory()

Method Detail

makeback to summary
public T make(Class<T> providerClass, Class<T> serviceClass) throws Exception

Implements org.glassfish.hk2.osgiresourcelocator.ServiceLoader.ProviderFactory.make.

org.glassfish.hk2.osgiresourcelocator back to summary

private Class ServiceLoaderImpl.ProvidersList

extends Object
Class Inheritance
  • java.lang.Object
  • org.glassfish.hk2.osgiresourcelocator.ServiceLoaderImpl.ProvidersList

List of ServiceLoaderImpl.ProvidersPerBundle Synchronisation is handled by outer class.

Field Summary

Modifier and TypeField and Description
private List<ServiceLoaderImpl.ProvidersPerBundle>

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
pack-priv void
public List<ServiceLoaderImpl.ProvidersPerBundle>
getAllProviders()

Returns: a list of ProvidersPerBundle sorted in ascending order of bundle id.

pack-priv void
removeProviders(long bundleId)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

allProvidersback to summary
private List<ServiceLoaderImpl.ProvidersPerBundle> allProviders

Constructor Detail

ProvidersListback to summary
private ProvidersList()

Method Detail

addProvidersback to summary
pack-priv void addProviders(ServiceLoaderImpl.ProvidersPerBundle providers)
getAllProvidersback to summary
public List<ServiceLoaderImpl.ProvidersPerBundle> getAllProviders()
Returns:List<ServiceLoaderImpl.ProvidersPerBundle>

a list of ProvidersPerBundle sorted in ascending order of bundle id.

removeProvidersback to summary
pack-priv void removeProviders(long bundleId)
org.glassfish.hk2.osgiresourcelocator back to summary

private Class ServiceLoaderImpl.ProvidersPerBundle

extends Object
Class Inheritance
  • java.lang.Object
  • org.glassfish.hk2.osgiresourcelocator.ServiceLoaderImpl.ProvidersPerBundle

Map of service name to provider names for a particular bundle

Field Summary

Modifier and TypeField and Description
private long
pack-priv Map<String, List<String>>

Constructor Summary

AccessConstructor and Description
private
ProvidersPerBundle(long bundleId)

Method Summary

Modifier and TypeMethod and Description
public long
public Map<String, List<String>>
public void
put(String serviceName, List<String> providerNames)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

bundleIdback to summary
private long bundleId
serviceToProvidersMapback to summary
pack-priv Map<String, List<String>> serviceToProvidersMap

Constructor Detail

ProvidersPerBundleback to summary
private ProvidersPerBundle(long bundleId)

Method Detail

getBundleIdback to summary
public long getBundleId()
getServiceToProvidersMapback to summary
public Map<String, List<String>> getServiceToProvidersMap()
putback to summary
public void put(String serviceName, List<String> providerNames)