public class ConcurrentServiceReferenceSet<T>
extends java.lang.Object
ServiceReference.compareTo(java.lang.Object)
: highest
service.ranking then lowest (first) service.id.
Usage (following OSGi DS naming conventions/patterns):
private final ConcurrentServiceReferenceSet<T> 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<T> ref) { serviceSet.addReference(ref); } protected void unsetReferenceName(ServiceReference<T> ref) { serviceSet.removeReference(ref); } public Iterator<T> getReferenceName() { return serviceSet.getServices(); }
Constructor and Description |
---|
ConcurrentServiceReferenceSet(java.lang.String name)
Create a new ConcurrentServiceReferenceSet for the named service.
|
Modifier and Type | Method and Description |
---|---|
void |
activate(org.osgi.service.component.ComponentContext context) |
boolean |
addReference(org.osgi.framework.ServiceReference<T> reference)
Adds the service reference to the set, or notifies the set that the
service ranking for the reference might have been updated.
|
void |
deactivate(org.osgi.service.component.ComponentContext context) |
org.osgi.framework.ServiceReference<T> |
getHighestRankedReference()
The ConcurrentReferenceSet is ordered by the usual service ranking rules:
highest service.ranking then lowest (first) service.id.
|
T |
getHighestRankedService()
The ConcurrentReferenceSet is ordered by the usual service ranking rules:
highest service.ranking then lowest (first) service.id.
|
T |
getService(org.osgi.framework.ServiceReference<T> serviceReference)
Find the provided reference in the set, and return the corresponding service.
|
java.util.Iterator<T> |
getServices()
Allocate and return an iterator: The iterator will
return the service associated with each ServiceReference as it progresses.
|
java.util.Iterator<ServiceAndServiceReferencePair<T>> |
getServicesWithReferences()
Allocate and return an iterator: The iterator will
return the service associated with each ServiceReference as it progresses.
|
boolean |
isActive() |
boolean |
isEmpty()
Check if there are any registered/added service references: this will return
true if the set is empty (none available).
|
java.lang.Iterable<org.osgi.framework.ServiceReference<T>> |
references() |
boolean |
removeReference(org.osgi.framework.ServiceReference<T> reference)
Removes the service reference from the set
|
java.lang.Iterable<T> |
services() |
java.lang.String |
toString() |
public ConcurrentServiceReferenceSet(java.lang.String name)
name
- Name of DS referencepublic void activate(org.osgi.service.component.ComponentContext context)
public void deactivate(org.osgi.service.component.ComponentContext context)
public java.lang.String toString()
toString
in class java.lang.Object
public boolean addReference(org.osgi.framework.ServiceReference<T> reference)
reference
- ServiceReference for the target servicepublic boolean removeReference(org.osgi.framework.ServiceReference<T> reference)
reference
- ServiceReference associated with service to be unsetpublic boolean isEmpty()
public boolean isActive()
public T getService(org.osgi.framework.ServiceReference<T> serviceReference)
serviceReference
- Service reference to find in the setpublic T getHighestRankedService()
public org.osgi.framework.ServiceReference<T> getHighestRankedReference()
public java.util.Iterator<T> getServices()
public java.util.Iterator<ServiceAndServiceReferencePair<T>> getServicesWithReferences()
public java.lang.Iterable<T> services()
public java.lang.Iterable<org.osgi.framework.ServiceReference<T>> references()