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 ofHierarchicalStreamWriter
should rather be derived from this class then implementing the interface directly.- Since:
- 1.4
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractWriter()
Creates an AbstractWriter with a NameCoder that does nothing.protected
AbstractWriter(NameCoder nameCoder)
Creates an AbstractWriter with a providedNameCoder
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.String
encodeAttribute(java.lang.String name)
Encode the attribute name into the name of the target format.java.lang.String
encodeNode(java.lang.String name)
Encode the node name into the name of the target format.void
startNode(java.lang.String name, java.lang.Class clazz)
HierarchicalStreamWriter
underlyingWriter()
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:
startNode
in 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:
underlyingWriter
in 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
-
-