Interface ServiceTrackerCustomizer

All Known Implementing Classes:
AdapterFilterIndex, AspectFilterIndex, MultiPropertyFilterIndex, ServiceTracker

public interface ServiceTrackerCustomizer
The ServiceTrackerCustomizer interface allows a ServiceTracker to customize the service objects that are tracked. A ServiceTrackerCustomizer is called when a service is being added to a ServiceTracker. The ServiceTrackerCustomizer can then return an object for the tracked service. A ServiceTrackerCustomizer is also called when a tracked service is modified or has been removed from a ServiceTracker.

The methods in this interface may be called as the result of a ServiceEvent being received by a ServiceTracker. Since ServiceEvents are synchronously delivered by the Framework, it is highly recommended that implementations of these methods do not register (BundleContext.registerService), modify ( ServiceRegistration.setProperties) or unregister ( ServiceRegistration.unregister) a service while being synchronized on any object.

The ServiceTracker class is thread-safe. It does not call a ServiceTrackerCustomizer while holding any locks. ServiceTrackerCustomizer implementations must also be thread-safe.

Version:
$Revision: 5874 $
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    addedService(org.osgi.framework.ServiceReference reference, Object service)
    marrs: A service has been added to the ServiceTracker.
    addingService(org.osgi.framework.ServiceReference reference)
    A service is being added to the ServiceTracker.
    void
    modifiedService(org.osgi.framework.ServiceReference reference, Object service)
    A service tracked by the ServiceTracker has been modified.
    void
    removedService(org.osgi.framework.ServiceReference reference, Object service)
    A service tracked by the ServiceTracker has been removed.
    void
    swappedService(org.osgi.framework.ServiceReference reference, Object service, org.osgi.framework.ServiceReference newReference, Object newService)
    A service tracked by the ServiceTracker has an aspect service added or removed for a tracked service.
  • Method Details

    • addingService

      Object addingService(org.osgi.framework.ServiceReference reference)
      A service is being added to the ServiceTracker.

      This method is called before a service which matched the search parameters of the ServiceTracker is added to the ServiceTracker. This method should return the service object to be tracked for the specified ServiceReference. The returned service object is stored in the ServiceTracker and is available from the getService and getServices methods.

      Parameters:
      reference - The reference to the service being added to the ServiceTracker.
      Returns:
      The service object to be tracked for the specified referenced service or null if the specified referenced service should not be tracked.
    • addedService

      void addedService(org.osgi.framework.ServiceReference reference, Object service)
      marrs: A service has been added to the ServiceTracker.
    • modifiedService

      void modifiedService(org.osgi.framework.ServiceReference reference, Object service)
      A service tracked by the ServiceTracker has been modified.

      This method is called when a service being tracked by the ServiceTracker has had it properties modified.

      Parameters:
      reference - The reference to the service that has been modified.
      service - The service object for the specified referenced service.
    • swappedService

      void swappedService(org.osgi.framework.ServiceReference reference, Object service, org.osgi.framework.ServiceReference newReference, Object newService)
      A service tracked by the ServiceTracker has an aspect service added or removed for a tracked service.

      This method is called when an aspect service has been either added or removed for a tracked service. This method will only be called when there's a new highest ranked service as result of adding or removal of the aspect service. In this case the previously highest ranked service is 'swapped' for the new highest ranked service ensuring the client always gets the highest ranked aspect.

      Parameters:
      reference - The reference for the old highest ranked service.
      service - The service object for the old highest ranked service.
      newReference - The reference to the new highest ranked service.
      newService - The service object for the new highest ranked service.
    • removedService

      void removedService(org.osgi.framework.ServiceReference reference, Object service)
      A service tracked by the ServiceTracker has been removed.

      This method is called after a service is no longer being tracked by the ServiceTracker.

      Parameters:
      reference - The reference to the service that has been removed.
      service - The service object for the specified referenced service.