Class ReaderWrapper
- java.lang.Object
-
- com.thoughtworks.xstream.io.ReaderWrapper
-
- All Implemented Interfaces:
ErrorReporter
,ExtendedHierarchicalStreamReader
,HierarchicalStreamReader
- Direct Known Subclasses:
PathTrackingReader
public abstract class ReaderWrapper extends java.lang.Object implements ExtendedHierarchicalStreamReader
Base class to make it easy to create wrappers (decorators) for HierarchicalStreamReader.
-
-
Field Summary
Fields Modifier and Type Field Description protected HierarchicalStreamReader
wrapped
-
Constructor Summary
Constructors Modifier Constructor Description protected
ReaderWrapper(HierarchicalStreamReader reader)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
appendErrors(ErrorWriter errorWriter)
If any errors are detected, allow the reader to add any additional information that can aid debugging (such as line numbers, XPath expressions, etc).void
close()
Close the reader, if necessary.java.lang.String
getAttribute(int index)
Get the value of an attribute of the current node, by index.java.lang.String
getAttribute(java.lang.String name)
Get the value of an attribute of the current node.int
getAttributeCount()
Number of attributes in current node.java.lang.String
getAttributeName(int index)
Name of attribute in current node.java.util.Iterator
getAttributeNames()
Iterator with the names of the attributes.java.lang.String
getNodeName()
Get the name of the current node.java.lang.String
getValue()
Get the value (text content) of the current node.boolean
hasMoreChildren()
Does the node have any more children remaining that have not yet been read?void
moveDown()
Select the current child as current node.void
moveUp()
Select the parent node as current node.java.lang.String
peekNextChild()
Peek the name of the next child.HierarchicalStreamReader
underlyingReader()
Return the underlying HierarchicalStreamReader implementation.
-
-
-
Field Detail
-
wrapped
protected HierarchicalStreamReader wrapped
-
-
Constructor Detail
-
ReaderWrapper
protected ReaderWrapper(HierarchicalStreamReader reader)
-
-
Method Detail
-
hasMoreChildren
public boolean hasMoreChildren()
Description copied from interface:HierarchicalStreamReader
Does the node have any more children remaining that have not yet been read?- Specified by:
hasMoreChildren
in interfaceHierarchicalStreamReader
-
moveDown
public void moveDown()
Description copied from interface:HierarchicalStreamReader
Select the current child as current node. A call to this function must be balanced with a call toHierarchicalStreamReader.moveUp()
.- Specified by:
moveDown
in interfaceHierarchicalStreamReader
-
moveUp
public void moveUp()
Description copied from interface:HierarchicalStreamReader
Select the parent node as current node.- Specified by:
moveUp
in interfaceHierarchicalStreamReader
-
getNodeName
public java.lang.String getNodeName()
Description copied from interface:HierarchicalStreamReader
Get the name of the current node.- Specified by:
getNodeName
in interfaceHierarchicalStreamReader
-
getValue
public java.lang.String getValue()
Description copied from interface:HierarchicalStreamReader
Get the value (text content) of the current node.- Specified by:
getValue
in interfaceHierarchicalStreamReader
-
getAttribute
public java.lang.String getAttribute(java.lang.String name)
Description copied from interface:HierarchicalStreamReader
Get the value of an attribute of the current node.If no such attribute exists, the method returns null.
- Specified by:
getAttribute
in interfaceHierarchicalStreamReader
-
getAttribute
public java.lang.String getAttribute(int index)
Description copied from interface:HierarchicalStreamReader
Get the value of an attribute of the current node, by index.Note, the behavior of this method is dependent on the underlying parser when calling it with a non-existing index. Typically some kind of RuntimeException is thrown.
- Specified by:
getAttribute
in interfaceHierarchicalStreamReader
-
getAttributeCount
public int getAttributeCount()
Description copied from interface:HierarchicalStreamReader
Number of attributes in current node.- Specified by:
getAttributeCount
in interfaceHierarchicalStreamReader
-
getAttributeName
public java.lang.String getAttributeName(int index)
Description copied from interface:HierarchicalStreamReader
Name of attribute in current node.Note, the behavior of this method is dependent on the underlying parser when calling it with a non-existing index. Typically some kind of RuntimeException is thrown.
- Specified by:
getAttributeName
in interfaceHierarchicalStreamReader
-
getAttributeNames
public java.util.Iterator getAttributeNames()
Description copied from interface:HierarchicalStreamReader
Iterator with the names of the attributes.Note, the iterator is only valid as long as the internal state of the underlying parser is still at the start of the current element. The behavior is undefined if the parser moved on.
- Specified by:
getAttributeNames
in interfaceHierarchicalStreamReader
-
appendErrors
public void appendErrors(ErrorWriter errorWriter)
Description copied from interface:HierarchicalStreamReader
If any errors are detected, allow the reader to add any additional information that can aid debugging (such as line numbers, XPath expressions, etc).- Specified by:
appendErrors
in interfaceErrorReporter
- Specified by:
appendErrors
in interfaceHierarchicalStreamReader
- Parameters:
errorWriter
- the error writer
-
close
public void close()
Description copied from interface:HierarchicalStreamReader
Close the reader, if necessary.- Specified by:
close
in interfaceHierarchicalStreamReader
-
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
-
underlyingReader
public HierarchicalStreamReader underlyingReader()
Description copied from interface:HierarchicalStreamReader
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
-
-