void activate()

in org.apache.sling.ddr/core/src/main/java/org/apache/sling/ddr/core/DeclarativeDynamicResourceManagerService.java [124:168]


    void activate(BundleContext bundleContext, Configuration configuration) {
        this.bundleContext = bundleContext;
        log.info("Activate Started, bundle context: '{}'", bundleContext);
        // Parsing the Allowed / Prohibited DDR Filters
        parseDDRFilter(configuration.allowed_ddr_filter(), allowedFilter);
        parseDDRFilter(configuration.prohibited_ddr_filter(), prohibitedFilter);
        followedLinkNames.addAll(Arrays.asList(configuration.followed_link_names()));
        try {
            // The Resource Resolver needs to be kept alive until this Service is deactivated due to the Event Listeners
            resourceResolver = resourceResolverFactory.getServiceResourceResolver(
                new HashMap<String, Object>() {{ put(ResourceResolverFactory.SUBSERVICE, DYNAMIC_COMPONENTS_SERVICE_USER); }}
            );
            log.info("Service Resource Resolver: '{}'", resourceResolver);
            // Register an Event Listener to get informed when
            Session session = resourceResolver.adaptTo(Session.class);
            if (session != null) {
                log.info("Register Event Listener on Path: '{}'", CONFIGURATION_ROOT_PATH);
                session.getWorkspace().getObservationManager().addEventListener(
                    this, EVENT_TYPES, CONFIGURATION_ROOT_PATH,
                    true, null, null, false
                );
            } else {
                log.warn("Resource Resolver could not be adapted to Session");
            }
            // To make sure we get all we will query all existing nodes
            Resource root = resourceResolver.getResource(CONFIGURATION_ROOT_PATH);
            log.info("Manual Check for Existing Nodes in: '{}', root-res: '{}'", CONFIGURATION_ROOT_PATH, root);
            if(root != null) {
                Iterator<Resource> i = resourceResolver.findResources(
                    "SELECT * FROM [" + DDR_NODE_TYPE + "]",
                    Query.JCR_SQL2
                );
                log.info("DDR Nodes by Type: '{}', has next: '{}'", i, i.hasNext());
                while(i.hasNext()) {
                    Resource item = i.next();
                    log.info("Handle Found DDR Resource: '{}'", item);
                    handleDDRSource(item);
                }
            }
        } catch (LoginException e) {
            log.error("Unable to obtain our Service Resource Resolver --> DDR disabled", e);
        } catch (RepositoryException e) {
            log.error("Failed to Obtain the Observation Manager to register for Resource Events --> DDR disabled", e);
        }
    }