in data-index/data-index-graphql/src/main/java/org/kie/kogito/index/graphql/JsonPropertyDataFetcher.java [45:88]
public Object get(DataFetchingEnvironment environment) {
String property = environment.getField().getName();
Object source = environment.getSource();
if (source instanceof JsonNode) {
JsonNode jsonObject = (JsonNode) source;
try {
JsonNode value = jsonObject.findValue(property);
if (value == null) {
return null;
}
switch (value.getNodeType()) {
case OBJECT:
case POJO:
return value;
case ARRAY:
if (!value.isNull() && !value.isEmpty()) {
switch (value.get(0).getNodeType()) {
case STRING:
return mapper.readerFor(stringListTypeRef).readValue(value);
case NUMBER:
return mapper.readerFor(numberListTypeRef).readValue(value);
case BOOLEAN:
return mapper.readerFor(booleanListTypeRef).readValue(value);
}
}
return value;
case NUMBER:
return value.numberValue();
case BOOLEAN:
return value.asBoolean();
case STRING:
return value.asText();
case NULL:
case MISSING:
default:
return null;
}
} catch (Exception ex) {
LOGGER.warn(ex.getMessage());
return null;
}
}
return null;
}