private void create()

in src/main/java/org/apache/sling/models/jacksonexporter/impl/ResourceSerializer.java [53:111]


    private void create(
            final Resource resource,
            final JsonGenerator jgen,
            final int currentRecursionLevel,
            final SerializerProvider provider)
            throws IOException {
        jgen.writeStartObject();

        final ValueMap valueMap = resource.adaptTo(ValueMap.class);

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

        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...
                jgen.writeStringField(resource.getName(), value);

            } else {

                // Try multi-value "property"
                final String[] values = resource.adaptTo(String[].class);
                if (values != null) {
                    jgen.writeArrayFieldStart(resource.getName());
                    for (final String s : values) {
                        jgen.writeString(s);
                    }
                    jgen.writeEndArray();
                }
            }

        } else {

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

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

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

        // the child nodes
        if (recursionLevelActive(currentRecursionLevel)) {
            for (final Resource n : resource.getChildren()) {
                jgen.writeFieldName(n.getName());
                create(n, jgen, currentRecursionLevel + 1, provider);
            }
        }

        jgen.writeEndObject();
    }