@ConsumerType public interface ResolverHookFactory
Bundles registering this service will be called by the framework during a
bundle resolver process to obtain a
instance which will be used for the duration of a resolve process.
ResolverHook begin(java.util.Collection<BundleRevision> triggers)
resolver hookinstance. This resolver hook instance will be used for the duration of the resolve process. At the end of the resolve process the method
ResolverHook.end()must be called by the framework and the framework must not hold any references of the resolver hook instance.
The triggers represent the collection of bundles which triggered the
resolve process. This collection may be empty if the triggers cannot be
determined by the framework. In most cases the triggers can easily be
determined. Calling certain methods on
bundle when a
bundle is in the
INSTALLED state will cause the
framework to begin a resolve process in order to resolve the bundle. The
following methods will start a resolve process in this case:
resolveBundlesis called the collection of triggers must include all the current bundle revisions for bundles passed to resolveBundles which are in the
is called the collection of triggers is determined with the following
FrameworkWiring.getRemovalPendingBundles()is called to get the initial collection of bundles.
FrameworkWiring.getDependencyClosure(Collection)is called with the initial collection of bundles to get the dependency closure collection of the bundles being refreshed.
As described above, a resolve process is typically initiated as a result of calling API that causes the framework to attempt to resolve one or more bundles. The framework is free to start a resolve process at any time for reasons other than calls to framework API. For example, a resolve process may be used by the framework for diagnostic purposes and result in no bundles actually becoming resolved at the end of the process. Resolver hook implementations must be prepared for resolve processes that are initiated for other reasons besides calls to framework API.
triggers- an unmodifiable collection of bundles which triggered the resolve process. This collection may be empty if the collection of trigger bundles cannot be determined.
nullvalue may be returned which indicates this resolver hook factory abstains from the resolve process.