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();
}
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);
}
}
Aggregations