Package com.thoughtworks.xstream.io
Class AbstractWriter
- java.lang.Object
-
- com.thoughtworks.xstream.io.AbstractWriter
-
- All Implemented Interfaces:
ExtendedHierarchicalStreamWriter,HierarchicalStreamWriter
- Direct Known Subclasses:
AbstractJsonWriter,AbstractXmlWriter
public abstract class AbstractWriter extends java.lang.Object implements ExtendedHierarchicalStreamWriter
Abstract base class for all HierarchicalStreamWriter implementations. Implementations ofHierarchicalStreamWritershould rather be derived from this class then implementing the interface directly.- Since:
- 1.4
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedAbstractWriter()Creates an AbstractWriter with a NameCoder that does nothing.protectedAbstractWriter(NameCoder nameCoder)Creates an AbstractWriter with a providedNameCoder.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.StringencodeAttribute(java.lang.String name)Encode the attribute name into the name of the target format.java.lang.StringencodeNode(java.lang.String name)Encode the node name into the name of the target format.voidstartNode(java.lang.String name, java.lang.Class clazz)HierarchicalStreamWriterunderlyingWriter()Return the underlying HierarchicalStreamWriter implementation.-
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, close, endNode, flush, setValue, startNode
-
-
-
-
Field Detail
-
nameCoder
private NameCoder nameCoder
-
-
Method Detail
-
startNode
public void startNode(java.lang.String name, java.lang.Class clazz)- Specified by:
startNodein interfaceExtendedHierarchicalStreamWriter
-
underlyingWriter
public HierarchicalStreamWriter underlyingWriter()
Return the underlying HierarchicalStreamWriter implementation.If a Converter needs to access methods of a specific HierarchicalStreamWriter implementation that are not defined in the HierarchicalStreamWriter interface, it should call this method before casting. This is because the writer passed to the Converter is often wrapped/decorated by another implementation to provide additional functionality (such as XPath tracking).
For example:
MySpecificWriter mySpecificWriter = (MySpecificWriter)writer; // INCORRECT! mySpecificWriter.doSomethingSpecific();
MySpecificWriter mySpecificWriter = (MySpecificWriter)writer.underlyingWriter(); // CORRECT! mySpecificWriter.doSomethingSpecific();
Implementations of HierarchicalStreamWriter should return 'this', unless they are a decorator, in which case they should delegate to whatever they are wrapping.
- Specified by:
underlyingWriterin interfaceHierarchicalStreamWriter
-
encodeNode
public java.lang.String encodeNode(java.lang.String name)
Encode the node name into the name of the target format.- Parameters:
name- the original name- Returns:
- the name in the target format
- Since:
- 1.4
-
encodeAttribute
public java.lang.String encodeAttribute(java.lang.String name)
Encode the attribute name into the name of the target format.- Parameters:
name- the original name- Returns:
- the name in the target format
- Since:
- 1.4
-
-