Search in sources :

Example 1 with JSONArray

use of org.jose4j.json.internal.json_simple.JSONArray in project service-proxy by membrane.

the class GenericJsonParser method parse.

@SuppressWarnings({ "unchecked", "rawtypes" })
public static <T> T parse(Class<T> clazz, JSONObject json) {
    T obj = null;
    try {
        obj = clazz.newInstance();
        for (Object property : json.entrySet()) {
            Map.Entry<String, Object> entry = (Map.Entry<String, Object>) property;
            Method setter = getSetter(clazz, entry.getKey());
            Object toSetValue = entry.getValue();
            if (isStructured(setter)) {
                if (isCollection(setter)) {
                    JSONArray collection = new JSONArray((Collection) toSetValue);
                    List<Object> coll = new ArrayList<>();
                    for (Object o : collection) {
                        JSONObject jo = new JSONObject((Map) o);
                        String key = (String) jo.keySet().stream().findFirst().orElseThrow(() -> new RuntimeException("Can't get key from " + jo));
                        JSONObject unwrapped = new JSONObject((Map<String, Object>) jo.get(key));
                        Class<?> child = K8sHelperGeneratorAutoGenerated.elementMapping.get(key);
                        coll.add(parse(child, unwrapped));
                    }
                    toSetValue = coll;
                } else {
                    Class<?> childClass = K8sHelperGeneratorAutoGenerated.elementMapping.get(entry.getKey());
                    toSetValue = parse(childClass, new JSONObject((Map) json.get(entry.getKey())));
                }
            }
            setSetter(obj, setter, toSetValue);
        }
    } catch (Throwable e) {
        e.printStackTrace();
    }
    return obj;
}
Also used : JSONArray(org.jose4j.json.internal.json_simple.JSONArray) Method(java.lang.reflect.Method) JSONObject(org.jose4j.json.internal.json_simple.JSONObject) JSONObject(org.jose4j.json.internal.json_simple.JSONObject)

Example 2 with JSONArray

use of org.jose4j.json.internal.json_simple.JSONArray in project open-ecard by ecsec.

the class VersionUpdateLoader method loadVersionUpdateList.

public VersionUpdateList loadVersionUpdateList() throws IllegalArgumentException {
    try {
        // load proxy if one is available
        // make sure it is initialized
        ProxySettings.getDefault();
        List<Proxy> proxies = ProxySelector.getDefault().select(updateUrl.toURI());
        Proxy p = Proxy.NO_PROXY;
        for (Proxy next : proxies) {
            if (next.type() != Proxy.Type.DIRECT) {
                LOG.debug("Found a proxy for the update connection.");
                p = next;
                break;
            }
        }
        LOG.info("Trying to load version list.");
        URLConnection con = updateUrl.openConnection(p);
        con.connect();
        InputStream in = con.getInputStream();
        Reader r = new InputStreamReader(in, StandardCharsets.UTF_8);
        JSONObject rootObj = (JSONObject) new JSONParser().parse(r);
        // get package specific download page
        String downloadPageString = (String) rootObj.get(pkgType + "_download_page");
        // access package specific list
        JSONArray updatesRaw = (JSONArray) rootObj.get(pkgType);
        ArrayList<VersionUpdate> updates = new ArrayList<>();
        for (Object ur : updatesRaw) {
            try {
                VersionUpdate next = VersionUpdate.fromJson((JSONObject) ur);
                updates.add(next);
            } catch (InvalidUpdateDefinition ex) {
                LOG.warn("Invalid version info contained in update list.", ex);
                throw new IllegalArgumentException("Invalid version info contained in update list.", ex);
            }
        }
        // make sure the versions are in the correct order
        Collections.sort(updates);
        VersionUpdateList list = new VersionUpdateList(updates, new URL(downloadPageString));
        LOG.info("Successfully retrieved version update list.");
        return list;
    } catch (IOException ex) {
        LOG.error("Failed to retrieve update list from server.", ex);
        throw new IllegalArgumentException("Failed to retrieve update list from server.", ex);
    } catch (NullPointerException ex) {
        LOG.warn("Package type {} not supported in update list.", pkgType);
        throw new IllegalArgumentException("Package type " + pkgType + " not supported in update list.", ex);
    } catch (URISyntaxException ex) {
        String msg = "Failed to convert Update URL to a URI.";
        LOG.error(msg, ex);
        throw new IllegalArgumentException(msg, ex);
    } catch (ParseException ex) {
        String msg = "Failed to deserialize JSON data.";
        LOG.error(msg, ex);
        throw new IllegalArgumentException(msg, ex);
    }
}
Also used : InputStreamReader(java.io.InputStreamReader) InputStream(java.io.InputStream) JSONArray(org.jose4j.json.internal.json_simple.JSONArray) ArrayList(java.util.ArrayList) Reader(java.io.Reader) InputStreamReader(java.io.InputStreamReader) IOException(java.io.IOException) URISyntaxException(java.net.URISyntaxException) URLConnection(java.net.URLConnection) URL(java.net.URL) Proxy(java.net.Proxy) JSONObject(org.jose4j.json.internal.json_simple.JSONObject) JSONParser(org.jose4j.json.internal.json_simple.parser.JSONParser) JSONObject(org.jose4j.json.internal.json_simple.JSONObject) InvalidUpdateDefinition(org.openecard.common.util.InvalidUpdateDefinition) ParseException(org.jose4j.json.internal.json_simple.parser.ParseException)

Aggregations

JSONArray (org.jose4j.json.internal.json_simple.JSONArray)2 JSONObject (org.jose4j.json.internal.json_simple.JSONObject)2 IOException (java.io.IOException)1 InputStream (java.io.InputStream)1 InputStreamReader (java.io.InputStreamReader)1 Reader (java.io.Reader)1 Method (java.lang.reflect.Method)1 Proxy (java.net.Proxy)1 URISyntaxException (java.net.URISyntaxException)1 URL (java.net.URL)1 URLConnection (java.net.URLConnection)1 ArrayList (java.util.ArrayList)1 JSONParser (org.jose4j.json.internal.json_simple.parser.JSONParser)1 ParseException (org.jose4j.json.internal.json_simple.parser.ParseException)1 InvalidUpdateDefinition (org.openecard.common.util.InvalidUpdateDefinition)1