DeleteVariationServlet.java 4.25 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.adobe.cq.dam.cfm.ContentFragment
 *  com.adobe.cq.dam.cfm.ContentFragmentException
 *  com.adobe.cq.dam.cfm.ContentFragmentManager
 *  com.day.cq.i18n.I18n
 *  javax.servlet.ServletException
 *  javax.servlet.http.HttpServletRequest
 *  org.apache.felix.scr.annotations.Reference
 *  org.apache.felix.scr.annotations.sling.SlingServlet
 *  org.apache.sling.api.SlingHttpServletRequest
 *  org.apache.sling.api.SlingHttpServletResponse
 *  org.apache.sling.api.resource.PersistenceException
 *  org.apache.sling.api.resource.Resource
 *  org.apache.sling.api.resource.ResourceResolver
 *  org.apache.sling.api.servlets.SlingAllMethodsServlet
 *  org.apache.sling.xss.XSSAPI
 */
package com.adobe.cq.dam.cfm.impl.servlets;

import com.adobe.cq.dam.cfm.ContentFragment;
import com.adobe.cq.dam.cfm.ContentFragmentException;
import com.adobe.cq.dam.cfm.ContentFragmentManager;
import com.adobe.cq.dam.cfm.impl.FragmentImpl;
import com.day.cq.i18n.I18n;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.sling.SlingServlet;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.resource.PersistenceException;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.servlets.SlingAllMethodsServlet;
import org.apache.sling.xss.XSSAPI;

@SlingServlet(selectors={"cfm.deletevariation"}, resourceTypes={"dam:Asset"}, extensions={"json"}, methods={"POST"})
public class DeleteVariationServlet
extends SlingAllMethodsServlet {
    @Reference
    private ContentFragmentManager fragmentManager;
    @Reference
    private XSSAPI xss;

    protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
        Resource assetRsc = request.getResource();
        ResourceResolver resolver = request.getResourceResolver();
        I18n i18n = new I18n((HttpServletRequest)request);
        ContentFragment fragment = (ContentFragment)assetRsc.adaptTo(ContentFragment.class);
        if (fragment == null || !(fragment instanceof FragmentImpl)) {
            response.sendError(400, i18n.get("Resource '{0}' is no content fragment.", null, new Object[]{assetRsc.getPath()}));
            return;
        }
        String variationParam = request.getParameter("variation");
        boolean isError = false;
        String errMsg = null;
        if (variationParam != null) {
            try {
                FragmentImpl fragmentImpl = (FragmentImpl)fragment;
                fragmentImpl.removeVariation(variationParam);
                resolver.commit();
            }
            catch (ContentFragmentException cfe) {
                isError = true;
                errMsg = i18n.get("Unable to delete variation '{0}'.", null, new Object[]{variationParam});
            }
            catch (PersistenceException pe) {
                isError = true;
                errMsg = i18n.get("Could not persist changes.");
            }
        } else {
            response.sendError(400, i18n.get("No variation specified."));
            return;
        }
        if (isError) {
            resolver.refresh();
            response.sendError(500, errMsg);
            return;
        }
        response.setStatus(200);
        response.setContentType("application/json");
        response.setCharacterEncoding("utf-8");
        PrintWriter out = response.getWriter();
        out.println("{\"success\":true}");
    }

    protected void bindFragmentManager(ContentFragmentManager contentFragmentManager) {
        this.fragmentManager = contentFragmentManager;
    }

    protected void unbindFragmentManager(ContentFragmentManager contentFragmentManager) {
        if (this.fragmentManager == contentFragmentManager) {
            this.fragmentManager = null;
        }
    }

    protected void bindXss(XSSAPI xSSAPI) {
        this.xss = xSSAPI;
    }

    protected void unbindXss(XSSAPI xSSAPI) {
        if (this.xss == xSSAPI) {
            this.xss = null;
        }
    }
}