com.thoughtworks.xstream.io.xml
Class AbstractDocumentWriter

java.lang.Object
  extended by com.thoughtworks.xstream.io.AbstractWriter
      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(Object container, NameCoder nameCoder)
          Constructs an AbstractDocumentWriter.
AbstractDocumentWriter(Object container, XmlFriendlyReplacer replacer)
          Deprecated. As of 1.4 use AbstractDocumentWriter(Object, NameCoder) instead.
 
Method Summary
 void close()
          Close the writer, if necessary.
protected abstract  Object createNode(String name)
          Create a node.
 void endNode()
           
 void endNodeInternally()
          Called when a node ends.
 void flush()
          Flush the writer, if necessary.
protected  Object getCurrent()
           
 List getTopLevelNodes()
          Retrieve a List with the top elements.
 void startNode(String name)
           
 
Methods inherited from class com.thoughtworks.xstream.io.xml.AbstractXmlWriter
escapeXmlName
 
Methods inherited from class com.thoughtworks.xstream.io.AbstractWriter
encodeAttribute, encodeNode, 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(Object container,
                              NameCoder nameCoder)
Constructs an AbstractDocumentWriter.

Parameters:
container - the top level container for the nodes to create (may be null)
nameCoder - the object that creates XML-friendly names
Since:
1.4

AbstractDocumentWriter

public AbstractDocumentWriter(Object container,
                              XmlFriendlyReplacer replacer)
Deprecated. As of 1.4 use AbstractDocumentWriter(Object, NameCoder) instead.

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(String name)
Specified by:
startNode in interface HierarchicalStreamWriter

createNode

protected abstract Object createNode(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 Object getCurrent()
Since:
1.2.1

getTopLevelNodes

public 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-2014 XStream. All Rights Reserved.