public Object get()

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