private JsonValue getValue()

in src/main/java/org/apache/sling/servlets/get/impl/util/JsonObjectCreator.java [113:181]


    private JsonValue getValue(Object value) {
        if (value instanceof Supplier) {
            return getValue(((Supplier) value).get());
        }

        if (value == null) {
            return Json.createValue("");
        }
        if (value instanceof InputStream) {
            // input stream is already handled
            return Json.createValue(0);

        } else if (value instanceof Calendar) {
            if (ecmaSupport) {
                return Json.createValue(JsonObjectCreator.formatEcma((Calendar) value));
            } else {
                return Json.createValue(ISO8601.format(((Calendar) value)));
            }

        } else if (value instanceof Boolean) {
            final Boolean bool = (Boolean) value;
            return bool ? JsonValue.TRUE : JsonValue.FALSE;

        } else if (value instanceof Long) {
            return Json.createValue((Long) value);

        } else if (value instanceof Double) {

            return Json.createValue((Double) value);

        } else if (value instanceof String) {
            return Json.createValue((String) value);

        } else if (value instanceof Integer) {
            return Json.createValue((Integer) value);

        } else if (value instanceof Short) {
            return Json.createValue((Short) value);

        } else if (value instanceof Byte) {
            return Json.createValue((Byte) value);

        } else if (value instanceof Float) {
            return Json.createValue((Float) value);

        } else if (value instanceof Map) {
            final JsonObjectBuilder builder = Json.createObjectBuilder();
            for (final Map.Entry<Object, Object> entry : ((Map<Object, Object>) value).entrySet()) {
                final JsonValue v = getValue(entry.getValue());
                builder.add(entry.getKey().toString(), v);
            }
            return builder.build();

        } else if (value instanceof Collection) {
            final JsonArrayBuilder builder = Json.createArrayBuilder();
            for (final Object obj : (Collection) value) {
                builder.add(getValue(obj));
            }
            return builder.build();

        } else if (value.getClass().isArray()) {
            final JsonArrayBuilder builder = Json.createArrayBuilder();
            for (int i = 0; i < Array.getLength(value); i++) {
                builder.add(getValue(Array.get(value, i)));
            }
            return builder.build();
        }
        return Json.createValue(value.toString());
    }