| 
 | OSGi™ Service Platform Release 4 | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.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 | contextBundle context against which this ServiceTrackerobject is tracking. | 
| protected  Filter | filterFilter specifying search criteria for the services to track. | 
| Constructor Summary | |
| ServiceTracker(BundleContext context,
               Filter filter,
               ServiceTrackerCustomizer customizer)Create a ServiceTrackerobject on the specifiedFilterobject. | |
| ServiceTracker(BundleContext context,
               ServiceReference reference,
               ServiceTrackerCustomizer customizer)Create a ServiceTrackerobject on the specifiedServiceReferenceobject. | |
| ServiceTracker(BundleContext context,
               java.lang.String clazz,
               ServiceTrackerCustomizer customizer)Create a ServiceTrackerobject on the specified class
 name. | |
| Method Summary | |
|  java.lang.Object | addingService(ServiceReference reference)Default implementation of the ServiceTrackerCustomizer.addingServicemethod. | 
|  void | close()Close this ServiceTrackerobject. | 
| protected  void | finalize()Finalize. | 
|  java.lang.Object | getService()Returns a service object for one of the services being tracked by this ServiceTrackerobject. | 
|  java.lang.Object | getService(ServiceReference reference)Returns the service object for the specified ServiceReferenceobject if the referenced service is being
 tracked by thisServiceTrackerobject. | 
|  ServiceReference | getServiceReference()Returns a ServiceReferenceobject for one of the services
 being tracked by thisServiceTrackerobject. | 
|  ServiceReference[] | getServiceReferences()Return an array of ServiceReferenceobjects for all
 services being tracked by thisServiceTrackerobject. | 
|  java.lang.Object[] | getServices()Return an array of service objects for all services being tracked by this ServiceTrackerobject. | 
|  int | getTrackingCount()Returns the tracking count for this ServiceTrackerobject. | 
|  void | modifiedService(ServiceReference reference,
                java.lang.Object service)Default implementation of the ServiceTrackerCustomizer.modifiedServicemethod. | 
|  void | open()Open this ServiceTrackerobject and begin tracking
 services. | 
|  void | open(boolean trackAllServices)Open this ServiceTrackerobject and begin tracking
 services. | 
|  void | remove(ServiceReference reference)Remove a service from this ServiceTrackerobject. | 
|  void | removedService(ServiceReference reference,
               java.lang.Object service)Default implementation of the ServiceTrackerCustomizer.removedServicemethod. | 
|  int | size()Return the number of services being tracked by this ServiceTrackerobject. | 
|  java.lang.Object | waitForService(long timeout)Wait for at least one service to be tracked by this ServiceTrackerobject. | 
| Methods inherited from class java.lang.Object | 
| clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
| Field Detail | 
protected final BundleContext context
ServiceTracker object is tracking.
protected final Filter filter
| Constructor Detail | 
public ServiceTracker(BundleContext context,
                      ServiceReference reference,
                      ServiceTrackerCustomizer customizer)
ServiceTracker object on the specified
 ServiceReference object.
 
 
 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)
ServiceTracker object on the specified class
 name.
 
 
 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)
ServiceTracker object on the specified
 Filter object.
 
 
 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()
ServiceTracker object and begin tracking
 services.
 
 
 This method calls open(false).
java.lang.IllegalStateException - if the BundleContext
         object with which this ServiceTracker object was
         created is no longer valid.open(boolean)public void open(boolean trackAllServices)
ServiceTracker object and begin tracking
 services.
 
 
 Services which match the search criteria specified when this
 ServiceTracker object was created are now tracked by this
 ServiceTracker object.
trackAllServices - If true, then this
        ServiceTracker will track all matching services
        regardless of class loader accessibility. If false,
        then this ServiceTracker will only track matching
        services which are class loader accessibile to the bundle whose
        BundleContext is used by this
        ServiceTracker.
java.lang.IllegalStateException - if the BundleContext
         object with which this ServiceTracker object was
         created is no longer valid.public void close()
ServiceTracker object.
 
 
 This method should be called when this ServiceTracker
 object should end the tracking of services.
public java.lang.Object addingService(ServiceReference reference)
ServiceTrackerCustomizer.addingService method.
 
 
 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 in a subclass to customize the service object to be tracked for the service being added. In that case, take care not to rely on the default implementation of removedService that will unget the service.
addingService in interface ServiceTrackerCustomizerreference - Reference to service being added to this
        ServiceTracker object.
ServiceTracker object.ServiceTrackerCustomizer
public void modifiedService(ServiceReference reference,
                            java.lang.Object service)
ServiceTrackerCustomizer.modifiedService method.
 
 
 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 ServiceTrackerCustomizerreference - Reference to modified service.service - The service object for the modified service.ServiceTrackerCustomizer
public void removedService(ServiceReference reference,
                           java.lang.Object service)
ServiceTrackerCustomizer.removedService method.
 
 
 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.
 
 This method can be overridden in a subclass. If the default
 implementation of addingService method was used, this
 method must unget the service.
removedService in interface ServiceTrackerCustomizerreference - Reference to removed service.service - The service object for the removed service.ServiceTrackerCustomizer
public java.lang.Object waitForService(long timeout)
                                throws java.lang.InterruptedException
ServiceTracker object.
 
 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.
getService().
java.lang.InterruptedException - If another thread has interrupted the
         current thread.
java.lang.IllegalArgumentException - If the value of timeout is negative.public ServiceReference[] getServiceReferences()
ServiceReference objects for all
 services being tracked by this ServiceTracker object.
ServiceReference objects or
         null if no service are being tracked.public ServiceReference getServiceReference()
ServiceReference object for one of the services
 being tracked by this ServiceTracker object.
 
 
 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.
ServiceReference object or null if
         no service is being tracked.public java.lang.Object getService(ServiceReference reference)
ServiceReference object if the referenced service is being
 tracked by this ServiceTracker object.
reference - Reference to the desired service.
null if the service referenced
         by the specified ServiceReference object is not
         being tracked.public java.lang.Object[] getServices()
ServiceTracker object.
null if no service are
         being tracked.public java.lang.Object getService()
ServiceTracker object.
 
 
 If any services are being tracked, this method returns the result of
 calling getService(getServiceReference()).
null if no service is being
         tracked.public void remove(ServiceReference reference)
ServiceTracker object.
 
 The specified service will be removed from this
 ServiceTracker object. If the specified service was being
 tracked then the ServiceTrackerCustomizer.removedService
 method will be called for that service.
reference - Reference to the service to be removed.public int size()
ServiceTracker object.
public int getTrackingCount()
ServiceTracker object.
 
 The tracking count is initialized to 0 when this
 ServiceTracker object is opened. Every time a service is
 added or removed from this ServiceTracker object the
 tracking count is incremented.
 
 
 The tracking count can be used to determine if this
 ServiceTracker object has added or removed a service by
 comparing a tracking count value previously collected with the current
 tracking count value. If the value has not changed, then no service has
 been added or removed from this ServiceTracker object
 since the previous tracking count was collected.
ServiceTracker object
         or -1 if this ServiceTracker object is not open.
protected void finalize()
                 throws java.lang.Throwable
java.lang.Throwable| 
 | OSGi™ Service Platform Release 4 | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||