protected void doGet()

in src/main/java/org/apache/sling/launchpad/testservices/servlets/GetConfigServlet.java [53:99]


    protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response)
            throws ServletException, IOException {

        // PID comes from request suffix, like /testing/GetConfigServlet.tidy.json/integrationTestsConfig
        String pid = request.getRequestPathInfo().getSuffix();
        if (pid == null || pid.length() == 0) {
            throw new ServletException("Configuration PID must be provided in request suffix");
        }
        if (pid.startsWith("/")) {
            pid = pid.substring(1);
        }

        // Get config and properties. Avoid using configAdmin.getConfiguration(...)
        // to avoid creating a config that does not exist yet, which might cause
        // services to restart.
        final Configuration cfg = getUniqueConfig(pid);
        final Dictionary<?, ?> props = cfg.getProperties();
        if (props == null) {
            response.sendError(HttpServletResponse.SC_NOT_FOUND, "Properties of config with pid=" + pid + " not found");
            return;
        }

        // Dump config in JSON
        response.setContentType("application/json");
        response.setCharacterEncoding("UTF-8");
        final Enumeration<?> keys = props.keys();
        try {
            final JSONWriter w = new JSONWriter(response.getWriter());
            w.object();
            w.key("source").value(getClass().getName());
            w.key("pid").value(pid);
            w.key("properties");
            w.object();
            while (keys.hasMoreElements()) {
                final Object key = keys.nextElement();
                final Object value = props.get(key);
                if (value != null) {
                    w.key(key.toString()).value(value.toString());
                }
            }
            w.endObject();
            w.endObject();
            w.flush();
        } catch (IOException je) {
            throw (IOException) new IOException("JSONException in doGet").initCause(je);
        }
    }