in src/main/java/org/apache/sling/servlets/post/impl/operations/RestoreOperation.java [47:81]
protected void doRun(
SlingJakartaHttpServletRequest request, JakartaPostResponse response, List<Modification> changes)
throws PersistenceException {
try {
final String version = request.getParameter(SlingPostConstants.RP_VERSION);
if (version == null || version.length() == 0) {
throw new IllegalArgumentException("Unable to process restore. Missing version");
}
final String removeString = request.getParameter(SlingPostConstants.RP_REMOVE_EXISTING);
final boolean removeExisting = Boolean.parseBoolean(removeString);
Iterator<Resource> res = getApplyToResources(request);
if (res == null) {
Resource resource = request.getResource();
Node node = resource.adaptTo(Node.class);
if (node == null) {
response.setStatus(HttpServletResponse.SC_NOT_FOUND, "Missing source " + resource + " for restore");
return;
}
restore(node, version, removeExisting);
changes.add(Modification.onRestore(resource.getPath(), version));
} else {
while (res.hasNext()) {
Resource resource = res.next();
Node node = resource.adaptTo(Node.class);
if (node != null) {
restore(node, version, removeExisting);
changes.add(Modification.onRestore(resource.getPath(), version));
}
}
}
} catch (final RepositoryException re) {
throw new PersistenceException(re.getMessage(), re);
}
}