|
OSGi™ Service Platform Release 2 |
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.osgi.util.tracker.ServiceTracker
The ServiceTracker class simplifies using services from the Framework's service registry.
A ServiceTracker object is constructed with search criteria and a ServiceTrackerCustomizer object. A ServiceTracker object can use the ServiceTrackerCustomizer object to customize the service objects to be tracked. The ServiceTracker object can then be opened to begin tracking all services in the Framework's service registry that match the specified search criteria. The ServiceTracker object correctly handles all of the details of listening to ServiceEvent objects and getting and ungetting services.
The getServiceReferences method can be called to get references to the services being tracked. The getService and getServices methods can be called to get the service objects for the tracked service.
Field Summary | |
protected BundleContext |
context
Bundle context this ServiceTracker object is tracking against. |
protected Filter |
filter
Filter specifying search criteria for the services to track. |
Constructor Summary | |
ServiceTracker(BundleContext context,
Filter filter,
ServiceTrackerCustomizer customizer)
Create a ServiceTracker object on the specified Filter object. |
|
ServiceTracker(BundleContext context,
ServiceReference reference,
ServiceTrackerCustomizer customizer)
Create a ServiceTracker object on the specified ServiceReference object. |
|
ServiceTracker(BundleContext context,
java.lang.String clazz,
ServiceTrackerCustomizer customizer)
Create a ServiceTracker object on the specified class name. |
Method Summary | |
java.lang.Object |
addingService(ServiceReference reference)
Default implementation of the ServiceTrackerCustomizer.addingService method. |
void |
close()
Close this ServiceTracker object. |
protected void |
finalize()
Properly close this ServiceTracker object when finalized. |
java.lang.Object |
getService()
Returns a service object for one of the services being tracked by this ServiceTracker object. |
java.lang.Object |
getService(ServiceReference reference)
Returns the service object for the specified ServiceReference object if the referenced service is being tracked by this ServiceTracker object. |
ServiceReference |
getServiceReference()
Returns a ServiceReference object for one of the services being tracked by this ServiceTracker object. |
ServiceReference[] |
getServiceReferences()
Return an array of ServiceReference objects for all services being tracked by this ServiceTracker object. |
java.lang.Object[] |
getServices()
Return an array of service objects for all services being tracked by this ServiceTracker object. |
void |
modifiedService(ServiceReference reference,
java.lang.Object service)
Default implementation of the ServiceTrackerCustomizer.modifiedService method. |
void |
open()
Open this ServiceTracker object and begin tracking services. |
void |
remove(ServiceReference reference)
Remove a service from this ServiceTracker object. |
void |
removedService(ServiceReference reference,
java.lang.Object object)
Default implementation of the ServiceTrackerCustomizer.removedService method. |
int |
size()
Return the number of services being tracked by this ServiceTracker object. |
java.lang.Object |
waitForService(long timeout)
Wait for at least one service to be tracked by this ServiceTracker object. |
Methods inherited from class java.lang.Object |
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
protected final BundleContext context
protected final Filter filter
Constructor Detail |
public ServiceTracker(BundleContext context, ServiceReference reference, ServiceTrackerCustomizer customizer)
The service referenced by the specified ServiceReference object will be tracked by this ServiceTracker object.
context
- BundleContext object against which the tracking is done.reference
- ServiceReference object for the service to be tracked.customizer
- The customizer object to call when services are
added, modified, or removed in this ServiceTracker object.
If customizer is null, then this ServiceTracker object will be used
as the ServiceTrackerCustomizer object and the ServiceTracker
object will call the ServiceTrackerCustomizer methods on itself.public ServiceTracker(BundleContext context, java.lang.String clazz, ServiceTrackerCustomizer customizer)
Services registered under the specified class name will be tracked by this ServiceTracker object.
context
- BundleContext object against which the tracking is done.clazz
- Class name of the services to be tracked.customizer
- The customizer object to call when services are
added, modified, or removed in this ServiceTracker object.
If customizer is null, then this ServiceTracker object will be used
as the ServiceTrackerCustomizer object and the ServiceTracker object
will call the ServiceTrackerCustomizer methods on itself.public ServiceTracker(BundleContext context, Filter filter, ServiceTrackerCustomizer customizer)
Services which match the specified Filter object will be tracked by this ServiceTracker object.
context
- BundleContext object against which the tracking is done.filter
- Filter object to select the services to be tracked.customizer
- The customizer object to call when services are
added, modified, or removed in this ServiceTracker object.
If customizer is null, then this ServiceTracker object will be used
as the ServiceTrackerCustomizer object and the ServiceTracker
object will call the ServiceTrackerCustomizer methods on itself.Method Detail |
public void open()
Services which match the search criteria specified when this ServiceTracker object was created are now tracked by this ServiceTracker object.
java.lang.IllegalStateException
- if the BundleContext
object with which this ServiceTracker object was created is no longer valid.public void close()
This method should be called when this ServiceTracker object should end the tracking of services.
protected void finalize() throws java.lang.Throwable
java.lang.Throwable
public java.lang.Object addingService(ServiceReference reference)
This method is only called when this ServiceTracker object has been constructed with a null ServiceTrackerCustomizer argument. The default implementation returns the result of calling getService, on the BundleContext object with which this ServiceTracker object was created, passing the specified ServiceReference object.
This method can be overridden to customize the service object to be tracked for the service being added.
addingService
in interface ServiceTrackerCustomizer
reference
- Reference to service being added to this
ServiceTracker object.
public void modifiedService(ServiceReference reference, java.lang.Object service)
This method is only called when this ServiceTracker object has been constructed with a null ServiceTrackerCustomizer argument. The default implementation does nothing.
modifiedService
in interface ServiceTrackerCustomizer
reference
- Reference to modified service.service
- The service object for the modified service.public void removedService(ServiceReference reference, java.lang.Object object)
This method is only called when this ServiceTracker object has been constructed with a null ServiceTrackerCustomizer argument. The default implementation calls ungetService, on the BundleContext object with which this ServiceTracker object was created, passing the specified ServiceReference object.
removedService
in interface ServiceTrackerCustomizer
reference
- Reference to removed service.object
- The service object for the removed service.public java.lang.Object waitForService(long timeout) throws java.lang.InterruptedException
It is strongly recommended that waitForService is not used during the calling of the BundleActivator methods. BundleActivator methods are expected to complete in a short period of time.
timeout
- time interval in milliseconds to wait. If zero,
the method will wait indefinately.
java.lang.InterruptedException
public ServiceReference[] getServiceReferences()
public java.lang.Object[] getServices()
public ServiceReference getServiceReference()
If multiple services are being tracked, the service with the highest ranking (as specified in its service.ranking property) is returned.
If there is a tie in ranking, the service with the lowest service ID (as specified in its service.id property); that is, the service that was registered first is returned.
This is the same algorithm used by BundleContext.getServiceReference.
public java.lang.Object getService(ServiceReference reference)
reference
- Reference to the desired service.
public java.lang.Object getService()
If any services are being tracked, this method returns the result of calling getService(getServiceReference()).
public void remove(ServiceReference reference)
reference
- Reference to the service to be removed.public int size()
|
OSGi™ Service Platform Release 2 |
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |