Object resolve()

in server/src/main/java/org/eclipse/jifa/server/support/AnalysisApiArgumentResolverFactory.java [377:409]


        Object resolve(AnalysisApiArgumentContext context) {

            JsonObject jo = context.paramJson();
            if (!jo.has(key)) {
                try {
                    return GSON.fromJson(jo, type);
                } catch (RuntimeException re) {
                    if (!required) {
                        return null;
                    }
                    if (type instanceof Class<?> clazz) {
                        try {
                            Constructor<?> constructor = clazz.getConstructor();
                            return constructor.newInstance();
                        } catch (Exception ignored) {
                            throw re;
                        }
                    }
                }
            }

            JsonElement element = jo.get(key);
            if (type instanceof Class<?> clazz) {
                if (element.isJsonPrimitive() && element.getAsJsonPrimitive().isString()) {
                    if (clazz.isArray()) {
                        element = GSON.fromJson(element.getAsString(), JsonArray.class);
                    } else if (clazz != String.class) {
                        element = GSON.fromJson(element.getAsString(), JsonObject.class);
                    }
                }
            }
            return GSON.fromJson(element, type);
        }