|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.codehaus.stax2.ri.Stax2EventReaderImpl
public abstract class Stax2EventReaderImpl
Almost complete implementation of XMLEventReader2, built on top of
a generic XMLStreamReader implementation (using aggregation).
Designed to be used by concrete Stax2 implementations to provide
full Event API implementation with minimal effort.
Since there is not much to optimize at this level (API and underlying stream reader pretty much define functionality and optimizations that can be done), implementation is fairly straight forward, with not many surprises.
Implementation notes: the trickiest things to implement are:
| Field Summary | |
|---|---|
protected static int |
ERR_GETELEMTEXT_NON_TEXT_EVENT
Encountered non-textual event (other than closing END_ELEMENT) when collecting text for getElementText() |
protected static int |
ERR_GETELEMTEXT_NOT_START_ELEM
Current state when getElementText() called not START_ELEMENT |
protected static int |
ERR_NEXTTAG_NON_WS_TEXT
Encountered CHARACTERS or CDATA that contains non-white space char(s), when trying to locate tag with nextTag() |
protected static int |
ERR_NEXTTAG_WRONG_TYPE
Encountered non-skippable non-text/element event with nextTag() |
protected javax.xml.stream.util.XMLEventAllocator |
mAllocator
|
protected int |
mPrePeekEvent
This variable keeps track of the type of the 'previous' event when peeking for the next Event. |
protected XMLStreamReader2 |
mReader
|
protected int |
mState
High-level state indicator, with currently three values: whether we are initializing (need to synthetize START_DOCUMENT), at END_OF_INPUT (end-of-doc), or otherwise, normal operation. |
protected static int |
STATE_CONTENT
|
protected static int |
STATE_END_OF_INPUT
|
protected static int |
STATE_INITIAL
|
| Fields inherited from interface javax.xml.stream.XMLStreamConstants |
|---|
ATTRIBUTE, CDATA, CHARACTERS, COMMENT, DTD, END_DOCUMENT, END_ELEMENT, ENTITY_DECLARATION, ENTITY_REFERENCE, NAMESPACE, NOTATION_DECLARATION, PROCESSING_INSTRUCTION, SPACE, START_DOCUMENT, START_ELEMENT |
| Constructor Summary | |
|---|---|
protected |
Stax2EventReaderImpl(javax.xml.stream.util.XMLEventAllocator a,
XMLStreamReader2 r)
|
| Method Summary | |
|---|---|
void |
close()
|
protected javax.xml.stream.events.XMLEvent |
createNextEvent(boolean checkEOD,
int type)
|
protected javax.xml.stream.events.XMLEvent |
createStartDocumentEvent()
Method called to create the very first event (START_DOCUMENT). |
java.lang.String |
getElementText()
|
protected abstract java.lang.String |
getErrorDesc(int errorType,
int eventType)
Method called upon encountering a problem that should result in an exception being thrown. |
java.lang.Object |
getProperty(java.lang.String name)
|
protected javax.xml.stream.XMLStreamReader |
getStreamReader()
|
boolean |
hasNext()
|
boolean |
hasNextEvent()
Note: although the interface allows implementations to throw an XMLStreamException, the reference implementation
doesn't currently need to. |
abstract boolean |
isPropertySupported(java.lang.String name)
Method similar to XMLInputFactory.isPropertySupported(java.lang.String), used
to determine whether a property is supported by the Reader
instance. |
java.lang.Object |
next()
|
javax.xml.stream.events.XMLEvent |
nextEvent()
|
javax.xml.stream.events.XMLEvent |
nextTag()
|
javax.xml.stream.events.XMLEvent |
peek()
|
void |
remove()
Note: only here because we implement Iterator interface. |
protected void |
reportProblem(java.lang.String msg)
|
protected void |
reportProblem(java.lang.String msg,
javax.xml.stream.Location loc)
|
abstract boolean |
setProperty(java.lang.String name,
java.lang.Object value)
Method that can be used to set per-reader properties; a subset of properties one can set via matching XMLInputFactory2
instance. |
protected void |
throwUnchecked(javax.xml.stream.XMLStreamException sex)
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected static final int STATE_INITIAL
protected static final int STATE_END_OF_INPUT
protected static final int STATE_CONTENT
protected static final int ERR_GETELEMTEXT_NOT_START_ELEM
protected static final int ERR_GETELEMTEXT_NON_TEXT_EVENT
protected static final int ERR_NEXTTAG_NON_WS_TEXT
protected static final int ERR_NEXTTAG_WRONG_TYPE
protected final javax.xml.stream.util.XMLEventAllocator mAllocator
protected final XMLStreamReader2 mReader
protected int mState
protected int mPrePeekEvent
| Constructor Detail |
|---|
protected Stax2EventReaderImpl(javax.xml.stream.util.XMLEventAllocator a,
XMLStreamReader2 r)
| Method Detail |
|---|
public abstract boolean isPropertySupported(java.lang.String name)
XMLEventReader2XMLInputFactory.isPropertySupported(java.lang.String), used
to determine whether a property is supported by the Reader
instance. This means that this method may return false
for some properties that the input factory does support: specifically,
it should only return true if the value is mutable on per-instance
basis. False means that either the property is not recognized, or
is not mutable via reader instance.
isPropertySupported in interface XMLEventReader2
public abstract boolean setProperty(java.lang.String name,
java.lang.Object value)
XMLEventReader2XMLInputFactory2
instance. Exactly which methods are mutable is implementation
specific.
setProperty in interface XMLEventReader2name - Name of the property to setvalue - Value to set property to.
protected abstract java.lang.String getErrorDesc(int errorType,
int eventType)
errorType - Type of the problem, one of ERR_
constantseventType - Type of the event that triggered the problem,
if any; -1 if not available.
public void close()
throws javax.xml.stream.XMLStreamException
close in interface javax.xml.stream.XMLEventReaderjavax.xml.stream.XMLStreamException
public java.lang.String getElementText()
throws javax.xml.stream.XMLStreamException
getElementText in interface javax.xml.stream.XMLEventReaderjavax.xml.stream.XMLStreamExceptionpublic java.lang.Object getProperty(java.lang.String name)
getProperty in interface javax.xml.stream.XMLEventReaderpublic boolean hasNext()
hasNext in interface java.util.IteratorhasNext in interface javax.xml.stream.XMLEventReader
public javax.xml.stream.events.XMLEvent nextEvent()
throws javax.xml.stream.XMLStreamException
nextEvent in interface javax.xml.stream.XMLEventReaderjavax.xml.stream.XMLStreamExceptionpublic java.lang.Object next()
next in interface java.util.Iterator
public javax.xml.stream.events.XMLEvent nextTag()
throws javax.xml.stream.XMLStreamException
nextTag in interface javax.xml.stream.XMLEventReaderjavax.xml.stream.XMLStreamException
public javax.xml.stream.events.XMLEvent peek()
throws javax.xml.stream.XMLStreamException
peek in interface javax.xml.stream.XMLEventReaderjavax.xml.stream.XMLStreamExceptionpublic void remove()
remove in interface java.util.Iterator
public boolean hasNextEvent()
throws javax.xml.stream.XMLStreamException
Note: although the interface allows implementations to
throw an XMLStreamException, the reference implementation
doesn't currently need to.
It's still declared, in case in future there is need to throw
such an exception.
hasNextEvent in interface XMLEventReader2javax.xml.stream.XMLStreamException
protected javax.xml.stream.events.XMLEvent createNextEvent(boolean checkEOD,
int type)
throws javax.xml.stream.XMLStreamException
javax.xml.stream.XMLStreamException
protected javax.xml.stream.events.XMLEvent createStartDocumentEvent()
throws javax.xml.stream.XMLStreamException
javax.xml.stream.XMLStreamExceptionprotected void throwUnchecked(javax.xml.stream.XMLStreamException sex)
protected void reportProblem(java.lang.String msg)
throws javax.xml.stream.XMLStreamException
javax.xml.stream.XMLStreamException
protected void reportProblem(java.lang.String msg,
javax.xml.stream.Location loc)
throws javax.xml.stream.XMLStreamException
javax.xml.stream.XMLStreamExceptionprotected javax.xml.stream.XMLStreamReader getStreamReader()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||