public static JsonObjectBuilder create()

in src/main/java/org/apache/sling/resource/inventory/impl/JsonObjectCreator.java [47:111]


    public static JsonObjectBuilder create(final Resource resource) {
        final ValueMap valueMap = resource.adaptTo(ValueMap.class);

        @SuppressWarnings("unchecked")
        final Map propertyMap = (valueMap != null)
                ? valueMap
                : resource.adaptTo(Map.class);

        final JsonObjectBuilder obj = Json.createObjectBuilder();

        if (propertyMap == null) {

            // no map available, try string
            final String value = resource.adaptTo(String.class);
            if (value != null) {

                // single value property or just plain String resource or...
                obj.add(resource.getName(), value);

            } else {

                // Try multi-value "property"
                final String[] values = resource.adaptTo(String[].class);
                if (values != null) {
                    JsonArrayBuilder array = Json.createArrayBuilder();
                    for (String v : values) {
                        array.add(v);
                    }
                    obj.add(resource.getName(), array);
                }

            }
            if ( resource.getResourceType() != null ) {
                obj.add("sling:resourceType", resource.getResourceType());
            }
            if ( resource.getResourceSuperType() != null ) {
                obj.add("sling:resourceSuperType", resource.getResourceSuperType());
            }

        } else {

            @SuppressWarnings("unchecked")
            final Iterator<Map.Entry> props = propertyMap.entrySet().iterator();

            // the node's actual properties
            while (props.hasNext()) {
                @SuppressWarnings("unchecked")
                final Map.Entry prop = props.next();

                if ( prop.getValue() != null ) {
                    createProperty(obj, valueMap, prop.getKey().toString(),
                        prop.getValue());
                }
            }
        }

        // the child nodes
        final Iterator<Resource> children = resource.listChildren();
        while (children.hasNext()) {
            final Resource n = children.next();
            createSingleResource(n, obj);
        }

        return obj;
    }