Class ConcurrentServiceReferenceSetMap<K,V>
- java.lang.Object
-
- com.ibm.wsspi.kernel.service.utils.ConcurrentServiceReferenceSetMap<K,V>
-
public class ConcurrentServiceReferenceSetMap<K,V> extends java.lang.Object
This provides a map implementation for lazy-resolution of multiple services. Use this class when you have frequent iteration with infrequent add/removal. Entries are not stored in any particular order, but services with the same key are stored in reverse order ofServiceReference.compareTo(java.lang.Object)
: highest service.ranking then lowest (first) service.id.Usage (following OSGi DS naming conventions/patterns):
private final ConcurrentServiceReferenceSetMap<K,V> serviceSet = new ConcurrentServiceReferenceSet<T>("referenceName"); protected void activate(ComponentContext ctx) { serviceSet.activate(ctx); } protected void deactivate(ComponentContext ctx) { serviceSet.deactivate(ctx); } protected void setReferenceName(ServiceReference<V> ref) { K key; serviceMap.putReference(key, ref); } protected void unsetReferenceName(ServiceReference<V> ref) { K key; serviceMap.removeReference(key, ref); } public Iterator<T> getServices() { return serviceSet.getServices(); }
-
-
Constructor Summary
Constructors Constructor Description ConcurrentServiceReferenceSetMap(java.lang.String name)
Create a new ConcurrentServiceReferenceMap for the named service.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
activate(org.osgi.service.component.ComponentContext context)
void
deactivate(org.osgi.service.component.ComponentContext context)
Deactivates the map.java.util.Iterator<V>
getServices(K key)
Retrieve an iterator for the services associated with the given key.
Services are returned in service rank order.java.util.Iterator<ServiceAndServiceReferencePair<V>>
getServicesWithReferences(K key)
Retrieve an iterator for service & service reference pairs for a given key
Services are returned in service rank order.
Service References are available to query properties etc.boolean
isEmpty()
Check if there are any registered/added service references: this will return true if all the known sets for all known keys report as empty.boolean
putReference(K key, org.osgi.framework.ServiceReference<V> reference)
Associates the reference with the key.boolean
removeReference(K key, org.osgi.framework.ServiceReference<V> reference)
Removes the reference associated with the key.java.lang.String
toString()
-
-
-
Method Detail
-
activate
public void activate(org.osgi.service.component.ComponentContext context)
-
deactivate
public void deactivate(org.osgi.service.component.ComponentContext context)
Deactivates the map. Will trigger a release of all held services.
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
putReference
public boolean putReference(K key, org.osgi.framework.ServiceReference<V> reference)
Associates the reference with the key.- Parameters:
key
- Key associated with this referencereference
- ServiceReference for the target service- Returns:
- true if this is replacing a previous (non-null) service reference
-
removeReference
public boolean removeReference(K key, org.osgi.framework.ServiceReference<V> reference)
Removes the reference associated with the key.- Parameters:
key
- Key associated with this referencereference
- ServiceReference for the target service- 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 all the known sets for all known keys report as empty.- Returns:
- true if the known sets of registered service references are empty.
-
getServices
public java.util.Iterator<V> getServices(K key)
Retrieve an iterator for the services associated with the given key.
Services are returned in service rank order.- Parameters:
key
- The key associated with the requested service- Returns:
- Iterator for services if any available, null otherwise.
-
getServicesWithReferences
public java.util.Iterator<ServiceAndServiceReferencePair<V>> getServicesWithReferences(K key)
Retrieve an iterator for service & service reference pairs for a given key
Services are returned in service rank order.
Service References are available to query properties etc.- Parameters:
key
- The key associated with the requested service- Returns:
- Iterator supplying pairs of service & service reference if any services are available, null otherwise.
-
-