AbstractServlet.java 3.87 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  javax.servlet.http.HttpServletResponse
 *  org.apache.sling.api.request.RequestParameter
 *  org.apache.sling.api.request.RequestParameterMap
 *  org.apache.sling.api.servlets.HtmlResponse
 *  org.apache.sling.api.servlets.SlingAllMethodsServlet
 *  org.slf4j.Logger
 *  org.slf4j.LoggerFactory
 */
package com.adobe.granite.security.user.internal.servlets;

import com.adobe.granite.security.user.util.PropConstants;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import javax.servlet.http.HttpServletResponse;
import org.apache.sling.api.request.RequestParameter;
import org.apache.sling.api.request.RequestParameterMap;
import org.apache.sling.api.servlets.HtmlResponse;
import org.apache.sling.api.servlets.SlingAllMethodsServlet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

abstract class AbstractServlet
extends SlingAllMethodsServlet
implements PropConstants {
    private static final Logger log = LoggerFactory.getLogger(AbstractServlet.class);
    protected static final String PARAM_MAX = "max";
    protected static final String PARAM_MEMBER_LIMIT = "ml";
    protected static final String PARAM_OFFSET = "offset";
    protected static final String PARAM_PATH = "path";
    protected static final String PARAM_PROPS = "props";
    protected static final String PARAM_QUERY = "query";

    AbstractServlet() {
    }

    protected static boolean isReservedParameter(String paramName, Set<String> reserved) {
        return reserved.contains(paramName) || paramName.startsWith(":") || paramName.startsWith("_");
    }

    protected static String getStringValue(RequestParameterMap params, String name, String defaultValue) {
        RequestParameter value = params.getValue(name);
        if (value != null) {
            return value.toString();
        }
        return defaultValue;
    }

    protected static long getNonNegativeValue(RequestParameterMap params, String name, long defaultValue) {
        RequestParameter value = params.getValue(name);
        if (value != null) {
            try {
                long lv = Long.valueOf(params.getValue(name).getString());
                if (lv >= 0) {
                    return lv;
                }
            }
            catch (NumberFormatException lv) {
                // empty catch block
            }
            log.warn("Require non negative long for {}, found {}", (Object)name, (Object)value.getString());
        }
        return defaultValue;
    }

    protected static Set<String> getProps(RequestParameterMap params) {
        String[] props;
        RequestParameter val = params.getValue("props");
        if (val != null && (props = val.getString().split(",")).length > 0) {
            HashSet<String> set = new HashSet<String>();
            set.addAll(Arrays.asList(props));
            return set;
        }
        return Collections.emptySet();
    }

    protected static void setJsonResponseHeader(HttpServletResponse response) {
        response.setContentType("application/json");
        response.setCharacterEncoding("utf-8");
    }

    protected static HtmlResponse createErrorResponse(Exception e) {
        HtmlResponse errorResponse = new HtmlResponse();
        errorResponse.setError((Throwable)e);
        return errorResponse;
    }

    protected static HtmlResponse createErrorResponse(int status, Exception e) {
        return AbstractServlet.createErrorResponse(status, e.getMessage());
    }

    protected static HtmlResponse createErrorResponse(int status, String message) {
        HtmlResponse errorResponse = new HtmlResponse();
        errorResponse.setStatus(status, message);
        if (status < 400) {
            errorResponse.setTitle("OK");
        } else {
            errorResponse.setTitle("Error");
        }
        return errorResponse;
    }
}