protected void doRun()

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