com.ibm.wsspi.kernel.service.utils
Class ConcurrentServiceReferenceMap<K,V>
- java.lang.Object
com.ibm.wsspi.kernel.service.utils.ConcurrentServiceReferenceMap<K,V>
- public class ConcurrentServiceReferenceMap<K,V>
- extends java.lang.Object
Usage (following OSGi DS naming conventions/patterns):
private final ConcurrentServiceReferenceMap<K,V> serviceMap = new ConcurrentServiceReferenceMap<K,V>("referenceName"); protected void activate(ComponentContext ctx) { serviceMap.activate(ctx); } protected void deactivate(ComponentContext ctx) { serviceMap.deactivate(ctx); } protected void setReferenceName(ServiceReference<V> ref) { K key; serviceMap.addReference(key, ref); } protected void unsetReferenceName(ServiceReference<V> ref) { K key; serviceMap.removeReference(key, ref); } public ServiceReference<V> getReferenceName(K key) { return serviceMap.getServices(key); }
Constructor Summary
Constructor and Description |
---|
ConcurrentServiceReferenceMap(java.lang.String name)
Create a new ConcurrentServiceReferenceMap for the named service.
|
Method Summary
Modifier and Type | Method and Description |
---|---|
|
activate(ComponentContext context)
|
|
deactivate(ComponentContext context)
Deactivates the map.
|
|
getReference(K key)
Returns the ServiceReference associated with key
|
getService(K key)
Retrieve the service associated with key.
|
|
|
getServices()
Iterate over all services in the map in no specific order.
|
getServiceWithException(K key)
|
|
|
isEmpty()
Check if there are any registered/added service references: this will return
true if the set is empty (none available).
|
|
keySet()
Answers a Set of the keys contained in this Map in no specific order.
|
|
putReference(K key,
Associates the reference with the key.
|
|
putReferenceIfAbsent(K key,
Associates the reference with the key but only if there is not an
existing reference associated with that key.
|
|
references()
|
|
removeReference(K key,
Removes the reference associated with the key.
|
|
size()
Answers the number of elements in this Map.
|
|
toString()
|
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail
ConcurrentServiceReferenceMap
- public ConcurrentServiceReferenceMap( java.lang.String name)
Create a new ConcurrentServiceReferenceMap for the named service.
e.g. from bnd.bnd: referenceName=.... or from component.xml:
Parameters:
name
- Name of DS reference Method Detail
activate
- public void activate(ComponentContext context)
deactivate
- public void deactivate(ComponentContext context)
Deactivates the map.
toString
- public java.lang.String toString( )
Overrides:
toString
in class java.lang.Object
putReference
- public boolean putReference(K key,
reference)
Associates the reference with the key.
Parameters:
key
- Key associated with this reference reference
- ServiceReference for the target service Returns:
true if this is replacing a previous (non-null) service reference
putReferenceIfAbsent
- public
putReferenceIfAbsent( K key, reference)
Associates the reference with the key but only if there is not an
existing reference associated with that key. It will only attempt to add
the reference to the map if
key
is not null
.
Parameters:
key
- Key associated with this reference reference
- ServiceReference for the target service Returns:
The service reference that was previously associated with the key or
null
otherwise See Also:
ConcurrentMap.putIfAbsent(Object, Object)
removeReference
- public boolean removeReference( K key,
reference)
Removes the reference associated with the key.
Parameters:
key
- Key associated with this reference reference
- ServiceReference associated with service to be unset. Returns:
true if reference was unset (not previously replaced)
isEmpty
- public boolean isEmpty()
Check if there are any registered/added service references: this will return
true if the set is empty (none available). If the set is not
empty, the services will only be resolvable if there is a viable
component context.
Returns:
true if the list of registered service references is empty.
size
- public int size()
Answers the number of elements in this Map.
Returns:
the number of elements in this Map
keySet
- public java.util.Set<K> keySet( )
Answers a Set of the keys contained in this Map in no specific order.
The set is backed by this Map so changes to one are reflected by the
other. The set does not support adding.
Returns:
a Set of the keys
references
- public java.lang.Iterable<
> references( )
getService
Retrieve the service associated with key.
Parameters:
key
- The key associated with the requested service Returns:
The service if available, null otherwise.
getServiceWithException
Returns:
T
Throws:
java.lang.IllegalStateException
- if the internal state is such that
locating the service is not possible or if the service
is not retrievable getReference
- public
getReference(K key)
Returns the ServiceReference associated with key
Parameters:
key
- The key associated with the service Returns:
ServiceRerefence associated with key, or null
getServices
- public java.util.Iterator<V> getServices( )
Iterate over all services in the map in no specific order. The iterator
will return the service associated with each ServiceReference as it progresses.
Creation of the iterator does not eagerly resolve services: resolution
is done only once per service reference, and only when "next" would
retrieve that service.