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