AbstractCRXDEServlet.java 3.59 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  javax.jcr.Session
 *  javax.servlet.ServletException
 *  org.apache.sling.api.SlingHttpServletRequest
 *  org.apache.sling.api.SlingHttpServletResponse
 *  org.apache.sling.api.resource.ResourceResolver
 *  org.apache.sling.api.servlets.SlingAllMethodsServlet
 *  org.osgi.framework.BundleContext
 *  org.osgi.service.component.ComponentContext
 *  org.slf4j.Logger
 *  org.slf4j.LoggerFactory
 */
package com.day.crx.delite.impl.servlets;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Dictionary;
import javax.jcr.Session;
import javax.servlet.ServletException;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.servlets.SlingAllMethodsServlet;
import org.osgi.framework.BundleContext;
import org.osgi.service.component.ComponentContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

abstract class AbstractCRXDEServlet
extends SlingAllMethodsServlet {
    private final Logger log = LoggerFactory.getLogger(AbstractCRXDEServlet.class);
    public static final String RESP_HEADER_ERROR_MSG = "Error-Message";
    protected Dictionary<?, ?> config;
    protected BundleContext bundleCtx;

    AbstractCRXDEServlet() {
    }

    protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException {
        this.log.warn("doGet: GET support is deprecated. Use POST instead.");
        this.processRequest(request, response);
    }

    protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException {
        this.processRequest(request, response);
    }

    protected void processRequest(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException {
        if (request.getAuthType() == null) {
            response.setStatus(401);
            return;
        }
        Session session = (Session)request.getResourceResolver().adaptTo(Session.class);
        if ("anonymous".equals(session.getUserID())) {
            response.setStatus(401);
            return;
        }
        this.handleAuthenticatedRequest(session, request, response);
    }

    protected abstract void handleAuthenticatedRequest(Session var1, SlingHttpServletRequest var2, SlingHttpServletResponse var3) throws ServletException;

    protected boolean jsonAccepted(SlingHttpServletRequest request) {
        String accept = request.getHeader("Accept");
        if (accept != null && accept.indexOf("application/json") != -1) {
            return true;
        }
        if (request.getParameter("json") != null) {
            return true;
        }
        return false;
    }

    protected void sendError(SlingHttpServletResponse response, String msg) {
        try {
            response.setHeader("Error-Message", msg);
            response.getWriter().print(msg);
            response.setStatus(500);
        }
        catch (IOException e) {
            this.log.warn("sendError failed", (Throwable)e);
        }
    }

    protected void throwError(SlingHttpServletResponse response, Exception e) throws ServletException {
        response.setHeader("Error-Message", e.getMessage());
        if (e instanceof ServletException) {
            throw (ServletException)e;
        }
        throw new ServletException((Throwable)e);
    }

    protected void activate(ComponentContext context) {
        this.config = context.getProperties();
        this.bundleCtx = context.getBundleContext();
    }
}