public void activate()

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


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