SitecatalystComponentMappingsServlet.java 3.82 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  javax.servlet.ServletException
 *  org.apache.felix.scr.annotations.Component
 *  org.apache.felix.scr.annotations.Properties
 *  org.apache.felix.scr.annotations.Property
 *  org.apache.felix.scr.annotations.Service
 *  org.apache.sling.api.SlingHttpServletRequest
 *  org.apache.sling.api.SlingHttpServletResponse
 *  org.apache.sling.api.resource.Resource
 *  org.apache.sling.api.resource.ResourceResolver
 *  org.apache.sling.api.resource.ValueMap
 *  org.apache.sling.api.servlets.SlingAllMethodsServlet
 *  org.apache.sling.commons.json.JSONArray
 *  org.apache.sling.commons.json.JSONException
 *  org.apache.sling.commons.json.io.JSONWriter
 *  org.slf4j.Logger
 *  org.slf4j.LoggerFactory
 */
package com.day.cq.analytics.sitecatalyst.impl.servlets;

import com.day.cq.analytics.sitecatalyst.FrameworkComponent;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Writer;
import javax.servlet.ServletException;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Properties;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.resource.ValueMap;
import org.apache.sling.api.servlets.SlingAllMethodsServlet;
import org.apache.sling.commons.json.JSONArray;
import org.apache.sling.commons.json.JSONException;
import org.apache.sling.commons.json.io.JSONWriter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Component
@Service
@Properties(value={@Property(name="sling.servlet.extensions", value={"json"}), @Property(name="sling.servlet.paths", value={"/libs/cq/analytics/mappings"}), @Property(name="service.description", value={"Servlet providing instrumented component mappings."}), @Property(name="sling.servlet.methods", value={"GET"})})
public class SitecatalystComponentMappingsServlet
extends SlingAllMethodsServlet {
    private final Logger log;

    public SitecatalystComponentMappingsServlet() {
        this.log = LoggerFactory.getLogger(this.getClass());
    }

    protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
        ResourceResolver resolver = request.getResourceResolver();
        ValueMap props = (ValueMap)request.getResource().adaptTo(ValueMap.class);
        Long expiryTime = (Long)props.get("expiryTime", (Object)120) * 60 * 1000;
        if (expiryTime > 0) {
            response.setDateHeader("Expires", System.currentTimeMillis() + expiryTime);
        }
        response.setContentType("application/json");
        response.setCharacterEncoding("utf-8");
        JSONWriter writer = new JSONWriter((Writer)response.getWriter());
        try {
            FrameworkComponent fwComp;
            writer.array();
            Resource resource = resolver.getResource(request.getParameter("path"));
            if (resource != null && (fwComp = (FrameworkComponent)resource.adaptTo(FrameworkComponent.class)) != null) {
                for (String cqVar : fwComp.getTrackedVarsEvents()) {
                    writer.object();
                    writer.key("scVar").value((Object)fwComp.getScVars(cqVar));
                    writer.key("cqVar").value((Object)cqVar);
                    writer.endObject();
                }
            }
            writer.endArray();
        }
        catch (JSONException e) {
            ServletException se = new ServletException("Error creating component mappings json response", (Throwable)e);
            se.initCause((Throwable)e);
            this.log.debug(se.toString());
            throw se;
        }
    }
}