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