in src/main/java/org/apache/sling/distribution/trigger/impl/PersistedJcrEventDistributionTrigger.java [58:105]
protected DistributionRequest processEvent(Event event) throws RepositoryException {
log.debug("processing event {}", event);
DistributionRequest distributionRequest = null;
Session session = getSession();
if (!session.nodeExists(nuggetsPath)) {
initializeNuggetsPath(session);
}
if (session.hasPermission(nuggetsPath, Session.ACTION_ADD_NODE)) {
log.debug("persisting event under {}", nuggetsPath);
Node nuggetsNode = session.getNode(nuggetsPath);
if (nuggetsNode != null) {
String nodeName = String.valueOf(System.nanoTime());
Node createdNode = nuggetsNode.addNode(nodeName, "nt:unstructured");
if (createdNode != null) {
String path = createdNode.getPath();
createdNode.setProperty("identifier", event.getIdentifier());
createdNode.setProperty("path", event.getPath());
createdNode.setProperty("date", event.getDate());
createdNode.setProperty("type", event.getType());
createdNode.setProperty("userData", event.getUserData());
createdNode.setProperty("userID", event.getUserID());
@SuppressWarnings({ "unchecked", "rawtypes" })
Set<Map.Entry> set = event.getInfo().entrySet();
Collection<String> values = new ArrayList<String>();
for (@SuppressWarnings("rawtypes") Map.Entry entry : set) {
values.add(String.valueOf(entry.getKey()) + ":" + String.valueOf(entry.getValue()));
}
createdNode.setProperty("info", values.toArray(new String[values.size()]));
session.save();
log.info("event {} persisted at {}", event, path);
distributionRequest = new SimpleDistributionRequest(DistributionRequestType.ADD, path);
} else {
log.warn("could not create node {}", nuggetsPath + "/" + nodeName);
}
} else {
log.warn("could not get node {} to persist event", nuggetsPath);
}
} else {
log.warn("not enough privileges to persist the event {} under {}", event, nuggetsPath);
}
return distributionRequest;
}