public void activate()

in src/main/java/org/apache/sling/resourceresolver/impl/observation/ResourceChangeListenerWhiteboard.java [57:105]


    public void activate(
            final BundleContext bundleContext,
            final ResourceProviderTracker resourceProviderTracker,
            final List<String> searchPath) {
        this.searchPath = searchPath;
        this.resourceProviderTracker = resourceProviderTracker;
        this.resourceProviderTracker.setObservationReporterGenerator(this);
        this.tracker = new ServiceTracker<>(
                bundleContext,
                ResourceChangeListener.class,
                new ServiceTrackerCustomizer<ResourceChangeListener, ServiceReference<ResourceChangeListener>>() {

                    @Override
                    public void removedService(
                            final ServiceReference<ResourceChangeListener> reference,
                            final ServiceReference<ResourceChangeListener> service) {
                        final ResourceChangeListenerInfo info = listeners.remove(reference);
                        if (info != null) {
                            updateProviderTracker();
                        }
                    }

                    @Override
                    public void modifiedService(
                            final ServiceReference<ResourceChangeListener> reference,
                            final ServiceReference<ResourceChangeListener> service) {
                        removedService(reference, service);
                        addingService(reference);
                    }

                    @Override
                    public ServiceReference<ResourceChangeListener> addingService(
                            final ServiceReference<ResourceChangeListener> reference) {
                        final ResourceChangeListenerInfo info = new ResourceChangeListenerInfo(reference, searchPath);
                        if (info.isValid()) {
                            final ResourceChangeListener listener = bundleContext.getService(reference);
                            if (listener != null) {
                                info.setListener(listener);
                                listeners.put(reference, info);
                                updateProviderTracker();
                            }
                        } else {
                            logger.warn("Ignoring invalid resource change listener {}", reference);
                        }
                        return reference;
                    }
                });
        this.tracker.open();
    }