in src/main/java/org/apache/sling/launchpad/testservices/servlets/GetConfigServlet.java [51:97]
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);
}
}