public void onChange()

in core/src/main/java/org/apache/sling/cms/core/internal/listeners/AutoVersioningListener.java [79:109]


    public void onChange(List<ResourceChange> changes) {
        if (enabled) {
            log.trace("onChange");

            try (ResourceResolver serviceResolver = factory.getServiceResourceResolver(
                    Collections.singletonMap(ResourceResolverFactory.SUBSERVICE, "sling-cms-versionmgr"))) {

                Set<String> pages = new HashSet<>();
                for (ResourceChange rc : changes) {
                    Resource changed = serviceResolver.getResource(rc.getPath());
                    Resource page = CMSUtils.findPublishableParent(changed);
                    if (changed != null && page != null && CMSConstants.NT_PAGE.equals(page.getResourceType())
                            && !pages.contains(page.getPath())) {
                        log.debug("Evaluating the changes to {}", page.getPath());
                        String user = changed.getValueMap().get(CMSConstants.PN_LAST_MODIFIED_BY, String.class);
                        if (pastLastModified(page)) {
                            log.debug("Page {} needs to be versioned", page.getPath());
                            versionPage(page, user);
                        } else {
                            log.trace("Page {} does not need to be versioned", page.getPath());
                        }
                        pages.add(page.getPath());
                    } else {
                        log.trace("Not versioning {}", page);
                    }
                }
            } catch (LoginException e) {
                log.error("Exception getting service user", e);
            }
        }
    }