private void printValue()

in src/main/java/org/apache/commons/configuration2/plist/XMLPropertyListConfiguration.java [587:648]


    private void printValue(final PrintWriter out, final int indentLevel, final Object value) {
        final String padding = StringUtils.repeat(" ", indentLevel * INDENT_SIZE);

        if (value instanceof Date) {
            synchronized (PListNodeBuilder.FORMAT) {
                out.println(padding + "<date>" + PListNodeBuilder.FORMAT.format((Date) value) + "</date>");
            }
        } else if (value instanceof Calendar) {
            printValue(out, indentLevel, ((Calendar) value).getTime());
        } else if (value instanceof Number) {
            if (value instanceof Double || value instanceof Float || value instanceof BigDecimal) {
                out.println(padding + "<real>" + value.toString() + "</real>");
            } else {
                out.println(padding + "<integer>" + value.toString() + "</integer>");
            }
        } else if (value instanceof Boolean) {
            if (((Boolean) value).booleanValue()) {
                out.println(padding + "<true/>");
            } else {
                out.println(padding + "<false/>");
            }
        } else if (value instanceof List) {
            out.println(padding + "<array>");
            ((List<?>) value).forEach(o -> printValue(out, indentLevel + 1, o));
            out.println(padding + "</array>");
        } else if (value instanceof HierarchicalConfiguration) {
            // This is safe because we have created this configuration
            @SuppressWarnings("unchecked")
            final HierarchicalConfiguration<ImmutableNode> config = (HierarchicalConfiguration<ImmutableNode>) value;
            printNode(out, indentLevel, config.getNodeModel().getNodeHandler().getRootNode());
        } else if (value instanceof ImmutableConfiguration) {
            // display a flat Configuration as a dictionary
            out.println(padding + "<dict>");

            final ImmutableConfiguration config = (ImmutableConfiguration) value;
            final Iterator<String> it = config.getKeys();
            while (it.hasNext()) {
                // create a node for each property
                final String key = it.next();
                final ImmutableNode node = new ImmutableNode.Builder().name(key).value(config.getProperty(key)).create();

                // print the node
                printNode(out, indentLevel + 1, node);

                if (it.hasNext()) {
                    out.println();
                }
            }
            out.println(padding + "</dict>");
        } else if (value instanceof Map) {
            // display a Map as a dictionary
            final Map<String, Object> map = transformMap((Map<?, ?>) value);
            printValue(out, indentLevel, new MapConfiguration(map));
        } else if (value instanceof byte[]) {
            final String base64 = new String(Base64.getMimeEncoder().encode((byte[]) value), DATA_ENCODING);
            out.println(padding + "<data>" + StringEscapeUtils.escapeXml10(base64) + "</data>");
        } else if (value != null) {
            out.println(padding + "<string>" + StringEscapeUtils.escapeXml10(String.valueOf(value)) + "</string>");
        } else {
            out.println(padding + "<string/>");
        }
    }