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
Abstract base class for all HierarchicalStreamReader implementations. Implementations of
HierarchicalStreamReader
should rather be derived from this class then implementing
the interface directly.- Since:
- 1.4
-
Field Summary
Fields -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
Creates an AbstractReader with a NameCoder that does nothing.protected
AbstractReader
(NameCoder nameCoder) Creates an AbstractReader with a providedNameCoder
. -
Method Summary
Modifier and TypeMethodDescriptiondecodeAttribute
(String name) Decode an attribute name from the target format.decodeNode
(String name) Decode a node name from the target format.protected String
encodeAttribute
(String name) Encode the attribute name again into the name of the target format.protected String
encodeNode
(String name) Encode the node name again into the name of the target format.Peek the name of the next child.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 Details
-
nameCoder
-
-
Constructor Details
-
AbstractReader
protected AbstractReader()Creates an AbstractReader with a NameCoder that does nothing.- Since:
- 1.4
-
AbstractReader
Creates an AbstractReader with a providedNameCoder
.- Parameters:
nameCoder
- the name coder used to read names from the incoming format- Since:
- 1.4
-
-
Method Details
-
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
Decode a node name from the target format.- Parameters:
name
- the name in the target format- Returns:
- the original name
- Since:
- 1.4
-
decodeAttribute
Decode an attribute name from the target format.- Parameters:
name
- the name in the target format- Returns:
- the original name
- Since:
- 1.4
-
encodeNode
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
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
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
-