Package com.thoughtworks.xstream.io
Class AbstractReader
- java.lang.Object
-
- com.thoughtworks.xstream.io.AbstractReader
-
- All Implemented Interfaces:
ErrorReporter
,ExtendedHierarchicalStreamReader
,HierarchicalStreamReader
- Direct Known Subclasses:
AbstractXmlReader
public abstract class AbstractReader extends java.lang.Object implements ExtendedHierarchicalStreamReader
Abstract base class for all HierarchicalStreamReader implementations. Implementations ofHierarchicalStreamReader
should rather be derived from this class then implementing the interface directly.- Since:
- 1.4
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractReader()
Creates an AbstractReader with a NameCoder that does nothing.protected
AbstractReader(NameCoder nameCoder)
Creates an AbstractReader with a providedNameCoder
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.String
decodeAttribute(java.lang.String name)
Decode an attribute name from the target format.java.lang.String
decodeNode(java.lang.String name)
Decode a node name from the target format.protected java.lang.String
encodeAttribute(java.lang.String name)
Encode the attribute name again into the name of the target format.protected java.lang.String
encodeNode(java.lang.String name)
Encode the node name again into the name of the target format.java.lang.String
peekNextChild()
Peek the name of the next child.HierarchicalStreamReader
underlyingReader()
Return the underlying HierarchicalStreamReader 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.HierarchicalStreamReader
appendErrors, close, getAttribute, getAttribute, getAttributeCount, getAttributeName, getAttributeNames, getNodeName, getValue, hasMoreChildren, moveDown, moveUp
-
-
-
-
Field Detail
-
nameCoder
private NameCoder nameCoder
-
-
Method Detail
-
underlyingReader
public HierarchicalStreamReader underlyingReader()
Return the underlying HierarchicalStreamReader implementation.If a Converter needs to access methods of a specific HierarchicalStreamReader implementation that are not defined in the HierarchicalStreamReader interface, it should call this method before casting. This is because the reader passed to the Converter is often wrapped/decorated by another implementation to provide additional functionality (such as XPath tracking).
For example:
MySpecificReader mySpecificReader = (MySpecificReader)reader; // INCORRECT! mySpecificReader.doSomethingSpecific();
MySpecificReader mySpecificReader = (MySpecificReader)reader.underlyingReader(); // CORRECT! mySpecificReader.doSomethingSpecific();
Implementations of HierarchicalStreamReader should return 'this', unless they are a decorator, in which case they should delegate to whatever they are wrapping.
- Specified by:
underlyingReader
in interfaceHierarchicalStreamReader
-
decodeNode
public java.lang.String decodeNode(java.lang.String name)
Decode a node name from the target format.- Parameters:
name
- the name in the target format- Returns:
- the original name
- Since:
- 1.4
-
decodeAttribute
public java.lang.String decodeAttribute(java.lang.String name)
Decode an attribute name from the target format.- Parameters:
name
- the name in the target format- Returns:
- the original name
- Since:
- 1.4
-
encodeNode
protected java.lang.String encodeNode(java.lang.String name)
Encode the node name again into the name of the target format. Internally used.- Parameters:
name
- the original name- Returns:
- the name in the target format
- Since:
- 1.4
-
encodeAttribute
protected java.lang.String encodeAttribute(java.lang.String name)
Encode the attribute name again into the name of the target format. Internally used.- Parameters:
name
- the original name- Returns:
- the name in the target format
- Since:
- 1.4
-
peekNextChild
public java.lang.String peekNextChild()
Description copied from interface:ExtendedHierarchicalStreamReader
Peek the name of the next child. In situation whereHierarchicalStreamReader.hasMoreChildren()
returns true, peek the tag name of the child.- Specified by:
peekNextChild
in interfaceExtendedHierarchicalStreamReader
-
-