UIConfigServlet.java 4.72 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  javax.servlet.ServletException
 *  org.apache.commons.collections.Predicate
 *  org.apache.commons.collections.iterators.FilterIterator
 *  org.apache.commons.lang3.StringUtils
 *  org.apache.felix.scr.annotations.sling.SlingServlet
 *  org.apache.sling.api.SlingHttpServletRequest
 *  org.apache.sling.api.SlingHttpServletResponse
 *  org.apache.sling.api.resource.Resource
 *  org.apache.sling.api.resource.ValueMap
 *  org.apache.sling.api.servlets.SlingSafeMethodsServlet
 *  org.apache.sling.commons.json.JSONArray
 *  org.apache.sling.commons.json.JSONException
 *  org.apache.sling.commons.json.JSONObject
 *  org.slf4j.Logger
 *  org.slf4j.LoggerFactory
 */
package com.adobe.granite.contexthub.impl;

import com.adobe.granite.contexthub.api.Mode;
import com.adobe.granite.contexthub.api.Module;
import com.adobe.granite.contexthub.impl.ModeConfigFilter;
import com.adobe.granite.contexthub.impl.ModuleConfigFilter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import javax.servlet.ServletException;
import org.apache.commons.collections.Predicate;
import org.apache.commons.collections.iterators.FilterIterator;
import org.apache.commons.lang3.StringUtils;
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.Resource;
import org.apache.sling.api.resource.ValueMap;
import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
import org.apache.sling.commons.json.JSONArray;
import org.apache.sling.commons.json.JSONException;
import org.apache.sling.commons.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@SlingServlet(resourceTypes={"/libs/granite/contexthub/cloudsettings/components/baseconfiguration"}, selectors={"config_ui"}, extensions={"json"}, methods={"GET"})
public class UIConfigServlet
extends SlingSafeMethodsServlet {
    private static final long serialVersionUID = -1682119536476539950L;
    private static final Logger log = LoggerFactory.getLogger(UIConfigServlet.class);

    protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
        try {
            JSONObject config = new JSONObject();
            JSONArray modes = new JSONArray();
            config.put("modes", (Object)modes);
            Iterator childrenIt = request.getResource().listChildren();
            FilterIterator modeIt = new FilterIterator(childrenIt, (Predicate)new ModeConfigFilter());
            while (modeIt.hasNext()) {
                Resource modeConfigRes = (Resource)modeIt.next();
                Mode mode = new Mode(modeConfigRes);
                ValueMap modeConfigVm = mode.getProperties();
                if (!mode.isEnabled()) continue;
                JSONObject modeObj = new JSONObject();
                modes.put((Object)modeObj);
                modeObj.put("id", (Object)modeConfigRes.getName());
                modeObj.put("title", modeConfigVm.get("jcr:title", (Object)modeConfigRes.getName()));
                modeObj.put("icon", modeConfigVm.get("icon", String.class));
                modeObj.put("type", modeConfigVm.get("modeType", String.class));
                FilterIterator configIt = new FilterIterator(modeConfigRes.listChildren(), (Predicate)new ModuleConfigFilter());
                if (!configIt.hasNext()) continue;
                JSONArray modules = new JSONArray();
                modeObj.put("modules", (Object)modules);
                while (configIt.hasNext()) {
                    Resource moduleConfigRes = (Resource)configIt.next();
                    Module module = new Module(moduleConfigRes);
                    ValueMap moduleConfigVm = module.getProperties();
                    if (!module.isEnabled()) continue;
                    JSONObject moduleConfigItem = new JSONObject();
                    modules.put((Object)moduleConfigItem);
                    moduleConfigItem.put("type", moduleConfigVm.get("moduleType", String.class));
                    String configJson = (String)moduleConfigVm.get("configjson", String.class);
                    if (!StringUtils.isNotEmpty((CharSequence)configJson)) continue;
                    JSONObject moduleJSONConfig = new JSONObject(configJson);
                    moduleConfigItem.put("config", (Object)moduleJSONConfig);
                }
            }
            response.getWriter().append(config.toString(4));
        }
        catch (JSONException ex) {
            log.warn("Could not create valid JSON config for Contexthub: ", (Throwable)ex);
            response.getWriter().append("{ \"error\": true }");
        }
    }
}