public void marshal()

in xstream/src/java/com/thoughtworks/xstream/converters/extended/NamedMapConverter.java [234:272]


    public void marshal(final Object source, final HierarchicalStreamWriter writer, final MarshallingContext context) {
        final Map<?, ?> map = (Map<?, ?>)source;
        SingleValueConverter keyConverter = null;
        SingleValueConverter valueConverter = null;
        if (keyAsAttribute) {
            final SingleValueConverter singleValueConverter = getSingleValueConverter(keyType, "key");
            keyConverter = singleValueConverter;
        }
        if (valueAsAttribute || valueName == null) {
            final SingleValueConverter singleValueConverter = getSingleValueConverter(valueType, "value");
            valueConverter = singleValueConverter;
        }
        for (final Map.Entry<?, ?> entry : map.entrySet()) {
            final Object key = entry.getKey();
            final Object value = entry.getValue();
            if (entryName != null) {
                writer.startNode(entryName, entry.getClass());
                if (keyConverter != null && key != null) {
                    writer.addAttribute(keyName, keyConverter.toString(key));
                }
                if (valueName != null && valueConverter != null && value != null) {
                    writer.addAttribute(valueName, valueConverter.toString(value));
                }
            }

            if (keyConverter == null) {
                writeItem(keyName, keyType, key, context, writer);
            }
            if (valueConverter == null) {
                writeItem(valueName, valueType, value, context, writer);
            } else if (valueName == null) {
                writer.setValue(valueConverter.toString(value));
            }

            if (entryName != null) {
                writer.endNode();
            }
        }
    }