use of org.apache.felix.utils.json.JSONWriter in project sling by apache.
the class SourceReferencesServlet method doGet.
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
response.setContentType("application/json");
final JSONWriter w = new JSONWriter(response.getWriter());
w.array();
for (Bundle bundle : ctx.getBundleContext().getBundles()) {
// skip bundle if it is a fragment (http://stackoverflow.com/questions/11655295/using-the-osgi-api-how-do-i-find-out-if-a-given-bundle-is-a-fragment)
if ((bundle.adapt(BundleRevision.class).getTypes() & BundleRevision.TYPE_FRAGMENT) != 0) {
log.debug("Skip bundle '{}' because it is a fragment", bundle);
// source references should only be listed with the host bundle
continue;
}
Object bundleVersion = bundle.getHeaders().get(Constants.BUNDLE_VERSION);
w.object();
w.key(Constants.BUNDLE_SYMBOLICNAME);
w.value(bundle.getSymbolicName());
w.key(Constants.BUNDLE_VERSION);
w.value(bundleVersion);
w.key("sourceReferences");
w.array();
// since the pom.properties file is not located in the bundle
if (bundle.getBundleId() == 0 && bundle.getSymbolicName().equals(FELIX_FW_ARTIFACT_ID)) {
writeMavenGav(w, FELIX_FW_GROUP_ID, FELIX_FW_ARTIFACT_ID, (String) bundleVersion);
}
// look for pom.properties in the bundle ( the original bundle, fragments )
collectMavenSourceReferences(w, bundle);
// look for pom.properties in jars embedded in the bundle
for (String jar : getEmbeddedJars(bundle)) {
URL entry = bundle.getEntry(jar);
// incorrect or inaccessible entry
if (entry == null) {
continue;
}
collectMavenSourceRerefences(w, entry);
}
// query custom finders for source references
for (SourceReferenceFinder finder : finders) {
try {
for (SourceReference reference : finder.findSourceReferences(bundle)) {
log.debug("{} found reference {}:{}:{} in {}", new Object[] { finder, reference.getGroupId(), reference.getArtifactId(), reference.getVersion(), bundle });
writeMavenGav(w, reference.getGroupId(), reference.getArtifactId(), reference.getVersion());
}
} catch (SourceReferenceException e) {
log.warn(finder + " execution did not complete normally for " + bundle, e);
}
}
w.endArray();
w.endObject();
}
w.endArray();
} catch (IOException e) {
throw new ServletException(e);
}
}
use of org.apache.felix.utils.json.JSONWriter in project karaf by apache.
the class FeaturesPlugin method writeJSON.
private void writeJSON(final PrintWriter pw) throws IOException {
final List<Repository> repositories = this.getRepositories();
final List<ExtendedFeature> features = this.getFeatures(repositories);
final String statusLine = this.getStatusLine(features);
final JSONWriter jw = new JSONWriter(pw);
jw.object();
jw.key("status");
jw.value(statusLine);
jw.key("repositories");
jw.array();
for (Repository r : repositories) {
jw.object();
jw.key("name");
String name = "";
if (r.getName() != null)
name = r.getName();
jw.value(name);
jw.key("url");
String uri = r.getURI().toString();
jw.value(uri);
jw.key("actions");
jw.array();
boolean enable = true;
if (uri.startsWith("bundle")) {
enable = false;
}
action(jw, enable, "refreshRepository", "Refresh", "refresh");
action(jw, enable, "removeRepository", "Remove", "delete");
jw.endArray();
jw.endObject();
}
jw.endArray();
jw.key("features");
jw.array();
for (ExtendedFeature f : features) {
featureInfo(jw, f);
}
jw.endArray();
jw.endObject();
}
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);
}
}
use of org.apache.felix.utils.json.JSONWriter in project sling by apache.
the class EventsCounterImpl method doGet.
@Override
protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
try {
final JSONWriter w = new JSONWriter(response.getWriter());
w.object();
for (Map.Entry<String, AtomicInteger> entry : counters.entrySet()) {
w.key(entry.getKey()).value(entry.getValue());
}
w.endObject();
w.flush();
} catch (IOException je) {
throw (IOException) new IOException("JSONException in doGet").initCause(je);
}
}
Aggregations