Search in sources :

Example 16 with JSONWriter

use of org.apache.felix.utils.json.JSONWriter in project sling by apache.

the class ScriptConsolePlugin method getScriptConfig0.

private String getScriptConfig0() throws IOException {
    StringWriter sw = new StringWriter();
    JSONWriter jw = new JSONWriter(sw);
    jw.array();
    for (ScriptEngineFactory sef : scriptEngineManager.getEngineFactories()) {
        jw.object();
        if (sef.getExtensions().isEmpty()) {
            continue;
        }
        jw.key("langName").value(sef.getLanguageName());
        jw.key("langCode").value(sef.getExtensions().get(0));
        //Language mode as per CodeMirror names
        String mode = determineMode(sef.getExtensions());
        if (mode != null) {
            jw.key("mode").value(mode);
        }
        jw.endObject();
    }
    jw.endArray();
    return sw.toString();
}
Also used : JSONWriter(org.apache.felix.utils.json.JSONWriter) StringWriter(java.io.StringWriter) ScriptEngineFactory(javax.script.ScriptEngineFactory)

Example 17 with JSONWriter

use of org.apache.felix.utils.json.JSONWriter in project sling by apache.

the class GetConfigServlet method doGet.

@Override
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");
    }
    // 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);
    }
}
Also used : ServletException(javax.servlet.ServletException) JSONWriter(org.apache.felix.utils.json.JSONWriter) Configuration(org.osgi.service.cm.Configuration) IOException(java.io.IOException)

Aggregations

JSONWriter (org.apache.felix.utils.json.JSONWriter)17 IOException (java.io.IOException)10 ServletException (javax.servlet.ServletException)6 PrintWriter (java.io.PrintWriter)4 Map (java.util.Map)2 ScriptEngineFactory (javax.script.ScriptEngineFactory)2 ValidationFailure (org.apache.sling.validation.ValidationFailure)2 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 OutputStream (java.io.OutputStream)1 OutputStreamWriter (java.io.OutputStreamWriter)1 RandomAccessFile (java.io.RandomAccessFile)1 StringWriter (java.io.StringWriter)1 URL (java.net.URL)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 List (java.util.List)1 SortedMap (java.util.SortedMap)1 TreeMap (java.util.TreeMap)1 TreeSet (java.util.TreeSet)1 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)1