com.thoughtworks.xstream.io.xml
Class AbstractDocumentWriter

java.lang.Object
  extended by com.thoughtworks.xstream.io.xml.AbstractXmlWriter
      extended by com.thoughtworks.xstream.io.xml.AbstractDocumentWriter
All Implemented Interfaces:
ExtendedHierarchicalStreamWriter, HierarchicalStreamWriter, DocumentWriter, XmlFriendlyWriter
Direct Known Subclasses:
Dom4JWriter, DomWriter, JDomWriter, XomWriter, XppDomWriter

public abstract class AbstractDocumentWriter
extends AbstractXmlWriter
implements DocumentWriter

A generic HierarchicalStreamWriter for DOM writer implementations. The implementation manages a list of top level DOM nodes. Every time the last node is closed on the node stack, the next started node is added to the list. This list can be retrieved using the DocumentWriter.getTopLevelNodes() method.

Since:
1.2.1
Author:
Laurent Bihanic, Jörg Schaible

Constructor Summary
AbstractDocumentWriter(java.lang.Object container, XmlFriendlyReplacer replacer)
          Constructs an AbstractDocumentWriter.
 
Method Summary
 void close()
          Close the writer, if necessary.
protected abstract  java.lang.Object createNode(java.lang.String name)
          Create a node.
 void endNode()
           
 void endNodeInternally()
          Called when a node ends.
 void flush()
          Flush the writer, if necessary.
protected  java.lang.Object getCurrent()
           
 java.util.List getTopLevelNodes()
          Retrieve a List with the top elements.
 void startNode(java.lang.String name)
           
 
Methods inherited from class com.thoughtworks.xstream.io.xml.AbstractXmlWriter
escapeXmlName, startNode, underlyingWriter
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.thoughtworks.xstream.io.HierarchicalStreamWriter
addAttribute, setValue, underlyingWriter
 

Constructor Detail

AbstractDocumentWriter

public AbstractDocumentWriter(java.lang.Object container,
                              XmlFriendlyReplacer replacer)
Constructs an AbstractDocumentWriter.

Parameters:
container - the top level container for the nodes to create (may be null)
replacer - the object that creates XML-friendly names
Since:
1.2.1
Method Detail

startNode

public final void startNode(java.lang.String name)
Specified by:
startNode in interface HierarchicalStreamWriter

createNode

protected abstract java.lang.Object createNode(java.lang.String name)
Create a node. The provided node name is not yet XML friendly. If getCurrent() returns null the node is a top level node.

Parameters:
name - the node name
Returns:
the new node
Since:
1.2.1

endNode

public final void endNode()
Specified by:
endNode in interface HierarchicalStreamWriter

endNodeInternally

public void endNodeInternally()
Called when a node ends. Hook for derived implementations.

Since:
1.2.1

getCurrent

protected final java.lang.Object getCurrent()
Since:
1.2.1

getTopLevelNodes

public java.util.List getTopLevelNodes()
Description copied from interface: DocumentWriter
Retrieve a List with the top elements. In the standard use case this list will only contain a single element. Additional elements can only occur, if HierarchicalStreamWriter.startNode(String) of the implementing HierarchicalStreamWriter was called multiple times with an empty node stack. Such a situation occurs calling XStream.marshal(Object, HierarchicalStreamWriter) multiple times directly.

Specified by:
getTopLevelNodes in interface DocumentWriter
Returns:
a List with top nodes

flush

public void flush()
Description copied from interface: HierarchicalStreamWriter
Flush the writer, if necessary.

Specified by:
flush in interface HierarchicalStreamWriter

close

public void close()
Description copied from interface: HierarchicalStreamWriter
Close the writer, if necessary.

Specified by:
close in interface HierarchicalStreamWriter


Copyright © 2004-2011 XStream. All Rights Reserved.