Utility similar to {@link ServiceTracker} that allows to track one/some/all{@link EnhancementEngine}s. As convenience this also implements the {@link EnhancementEngineManager} interface however the intended usage scenarios for this utility are considerable different to the using the EnhancementEngineManager interface as a service.
This utility especially allows to
- track only {@link EnhancementEngine} with names as parsed in theconstructor. This allows e.g. a {@link Chain} implementation to keep onlytrack of {@link EnhancementEngine} that are actually referenced by thischain.
- A {@link ServiceTrackerCustomizer} can be parsed to this utility. Themethods of this interface will be called on changes to any service tracked by this instance. This allows users of this utility to update there internal state on any change of the state of tracked engines. This might be especially useful for {@link Chain} implementations that need to update there executionplan on such changes. However this can also be used by {@link EnhancementJobManager} implementations that want to get notified aboutenhancement engines referenced by the {@link Chain} the are currently usingto enhance an {@link ContentItem}.
Please not that calls to {@link #open()} and {@link #close()} are requiredto start and stop the tracking of this class. In general the same rules as for the {@link ServiceTracker} apply also to this utility.
@author Rupert Westenthaler