in component-dsl/src/main/java/org/apache/aries/component/dsl/internal/BundleOSGi.java [31:75]
public BundleOSGi(int stateMask) {
super((executionContext, op) -> {
BundleTracker<OSGiResult> bundleTracker =
new BundleTracker<>(
executionContext.getBundleContext(), stateMask,
new BundleTrackerCustomizer<OSGiResult>() {
@Override
public OSGiResult addingBundle(
Bundle bundle, BundleEvent bundleEvent) {
return op.apply(bundle);
}
@Override
public void modifiedBundle(
Bundle bundle, BundleEvent bundleEvent,
OSGiResult osgiResult) {
osgiResult.update();
}
@Override
public void removedBundle(
Bundle bundle, BundleEvent bundleEvent,
OSGiResult osgiResult) {
osgiResult.run();
}
});
bundleTracker.open();
return new OSGiResultImpl(
bundleTracker::close,
() -> bundleTracker.getTracked().values().stream().map(
OSGiResult::update
).reduce(
Boolean.FALSE, Boolean::logicalOr
)
);
});
}