com.thoughtworks.xstream.io
Class AbstractReader

java.lang.Object
  extended by com.thoughtworks.xstream.io.AbstractReader
All Implemented Interfaces:
ErrorReporter, ExtendedHierarchicalStreamReader, HierarchicalStreamReader
Direct Known Subclasses:
AbstractXmlReader

public abstract class AbstractReader
extends Object
implements ExtendedHierarchicalStreamReader

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
Author:
Jörg Schaible

Constructor Summary
protected AbstractReader()
          Creates an AbstractReader with a NameCoder that does nothing.
protected AbstractReader(NameCoder nameCoder)
          Creates an AbstractReader with a provided NameCoder.
 
Method Summary
 String decodeAttribute(String name)
          Decode an attribute name from the target format.
 String 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.
 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
 

Constructor Detail

AbstractReader

protected AbstractReader()
Creates an AbstractReader with a NameCoder that does nothing.

Since:
1.4

AbstractReader

protected AbstractReader(NameCoder nameCoder)
Creates an AbstractReader with a provided NameCoder.

Parameters:
nameCoder - the name coder used to read names from the incoming format
Since:
1.4
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 interface HierarchicalStreamReader

decodeNode

public String decodeNode(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 String decodeAttribute(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 String encodeNode(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 String encodeAttribute(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 String peekNextChild()
Description copied from interface: ExtendedHierarchicalStreamReader
Peek the name of the next child. In situation where HierarchicalStreamReader.hasMoreChildren() returns true, peek the tag name of the child.

Specified by:
peekNextChild in interface ExtendedHierarchicalStreamReader


Copyright © 2004-2014 XStream. All Rights Reserved.