Search in sources :

Example 11 with JSONWriter

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);
    }
}
Also used : JSONWriter(org.apache.felix.utils.json.JSONWriter) ServletException(javax.servlet.ServletException) Bundle(org.osgi.framework.Bundle) IOException(java.io.IOException) URL(java.net.URL)

Example 12 with JSONWriter

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();
}
Also used : JSONWriter(org.apache.felix.utils.json.JSONWriter) Repository(org.apache.karaf.features.Repository)

Example 13 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 14 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)

Example 15 with JSONWriter

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);
    }
}
Also used : JSONWriter(org.apache.felix.utils.json.JSONWriter) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) IOException(java.io.IOException) HashMap(java.util.HashMap) Map(java.util.Map)

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