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);
}