protected DistributionRequest processEvent()

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