public BundleOSGi()

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
                )
            );
        });

    }