Package org.osgi.util.tracker

# Interface BundleTrackerCustomizer<T>

Type Parameters:
  `T` - The type of the tracked object.

All Known Implementing Classes:
  `BundleTracker`

@ConsumerType public interface BundleTrackerCustomizer<T>
The `BundleTrackerCustomizer` interface allows a `BundleTracker` to customize the `Bundle`s that are tracked. A `BundleTrackerCustomizer` is called when a bundle is being added to a `BundleTracker`. The `BundleTrackerCustomizer` can then return an object for the tracked bundle. A `BundleTrackerCustomizer` is also called when a tracked bundle is modified or has been removed from a `BundleTracker`.

The methods in this interface may be called as the result of a `BundleEvent` being received by a `BundleTracker`. Since `BundleEvent`s are received synchronously by the `BundleTracker`, it is highly recommended that implementations of these methods do not alter bundle states while being synchronized on any object.

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

Since:
  1.4

## Method Summary

Modifier and Type
Method
Description
`T`
`addingBundle(Bundle bundle, BundleEvent event)`
A bundle is being added to the `BundleTracker`.
`void`
`modifiedBundle(Bundle bundle, BundleEvent event, T object)`
A bundle tracked by the `BundleTracker` has been modified.
`void`
`removedBundle(Bundle bundle, BundleEvent event, T object)`
A bundle tracked by the `BundleTracker` has been removed.

## Method Details

### addingBundle

T addingBundle(Bundle bundle, BundleEvent event)
A bundle is being added to the `BundleTracker`.

This method is called before a bundle which matched the search parameters of the `BundleTracker` is added to the `BundleTracker`. This method should return the object to be tracked for the specified `Bundle`. The returned object is stored in the `BundleTracker` and is available from the `getObject` method.

Parameters:
  `bundle` - The `Bundle` being added to the `BundleTracker` .
  `event` - The bundle event which caused this customizer method to be called or `null` if there is no bundle event associated with the call to this method.
Returns:
  The object to be tracked for the specified `Bundle` object or `null` if the specified `Bundle` object should not be tracked.

### modifiedBundle

void modifiedBundle(Bundle bundle, BundleEvent event, T object)
A bundle tracked by the `BundleTracker` has been modified.

This method is called when a bundle being tracked by the `BundleTracker` has had its state modified.

Parameters:
  `bundle` - The `Bundle` whose state has been modified.
  `event` - The bundle event which caused this customizer method to be called or `null` if there is no bundle event associated with the call to this method.
  `object` - The tracked object for the specified bundle.

### removedBundle

void removedBundle(Bundle bundle, BundleEvent event, T object)
A bundle tracked by the `BundleTracker` has been removed.

This method is called after a bundle is no longer being tracked by the `BundleTracker`.

Parameters:
  `bundle` - The `Bundle` that has been removed.
  `event` - The bundle event which caused this customizer method to be called or `null` if there is no bundle event associated with the call to this method.
  `object` - The tracked object for the specified bundle.