class SwitchingWrapper extends AbstractXMLStreamReader implements DataHandlerReader, CharacterDataReader, javax.xml.stream.XMLStreamConstants
OMStAXWrapper.| Modifier and Type | Field and Description |
|---|---|
private boolean |
_isClosed |
private boolean |
_releaseParserOnClose |
private int |
attributeCount |
private OMAttribute[] |
attributes |
private OMXMLParserWrapper |
builder
Field builder
|
private boolean |
cache
Specifies whether the original document content is cached (i.e.
|
private static short |
COMPLETED |
private int |
currentEvent
Field currentEvent Default set to START_DOCUMENT
|
private OMSerializable |
currentNode
Field currentNode
|
private DataHandlerReader |
dataHandlerReader
The
DataHandlerReader extension of the underlying parser, or null
if the parser doesn't support this extension. |
(package private) int |
depth
Track depth to ensure we stop generating events when we are done with the root node.
|
private static short |
DOCUMENT_COMPLETE |
private boolean |
isFirst
Field isFirst
|
private OMSerializable |
lastNode
Field lastNode
|
private static org.apache.commons.logging.Log |
log |
private int |
namespaceCount |
private OMNamespace[] |
namespaces |
private static short |
NAVIGABLE
Field NAVIGABLE
|
private OMNavigator |
navigator
Field navigator
|
private OMSerializable |
nextNode
Field nextNode
|
private java.util.Stack |
nodeStack
Field elementStack
|
private javax.xml.stream.XMLStreamReader |
parser
Field parser
|
private boolean |
preserveNamespaceContext
Specifies whether additional namespace declarations should be generated to preserve the
namespace context.
|
private OMContainer |
rootNode
Field rootNode
|
private short |
state
Field state
|
private static short |
SWITCH_AT_NEXT |
private static short |
SWITCHED |
PROPERTYPROPERTY| Constructor and Description |
|---|
SwitchingWrapper(OMXMLParserWrapper builder,
OMContainer startNode,
boolean cache,
boolean preserveNamespaceContext)
Constructor.
|
| Modifier and Type | Method and Description |
|---|---|
private void |
addNamespace(OMNamespace ns) |
private void |
addNamespaceToMap(OMNamespace ns,
java.util.Map map) |
void |
close()
Method close.
|
void |
enableDataSourceEvents(boolean value)
Enable if an OMSourcedElement with an OMDataSource should be treated as a
leaf node.
|
private int |
generateContainerEvents(OMContainer container,
boolean isDocument) |
private int |
generateEvents(OMSerializable node)
Method generateEvents.
|
private java.util.Map |
getAllNamespaces(OMSerializable contextNode) |
int |
getAttributeCount() |
java.lang.String |
getAttributeLocalName(int i) |
javax.xml.namespace.QName |
getAttributeName(int i) |
java.lang.String |
getAttributeNamespace(int i) |
java.lang.String |
getAttributePrefix(int i) |
java.lang.String |
getAttributeType(int i) |
java.lang.String |
getAttributeValue(int i) |
java.lang.String |
getAttributeValue(java.lang.String s,
java.lang.String s1)
Method getAttributeValue.
|
java.lang.String |
getCharacterEncodingScheme()
Method getCharacterEncodingScheme.
|
java.lang.String |
getContentID()
Get the content ID of the binary content for the current event, if available.
|
javax.activation.DataHandler |
getDataHandler()
Get the
DataHandler with the binary content for the current event. |
DataHandlerProvider |
getDataHandlerProvider()
Get a
DataHandlerProvider instance for deferred loading of the binary content for the
current event. |
OMDataSource |
getDataSource() |
java.lang.String |
getElementText() |
java.lang.String |
getEncoding()
Method getEncoding.
|
int |
getEventType() |
java.lang.String |
getLocalName() |
javax.xml.namespace.QName |
getName() |
javax.xml.namespace.NamespaceContext |
getNamespaceContext()
Method getNamespaceContext.
|
int |
getNamespaceCount() |
java.lang.String |
getNamespacePrefix(int i) |
java.lang.String |
getNamespaceURI() |
java.lang.String |
getNamespaceURI(int i) |
java.lang.String |
getNamespaceURI(java.lang.String prefix)
Method getNamespaceURI.
|
java.lang.String |
getPIData()
Method getPIData.
|
java.lang.String |
getPITarget()
Method getPITarget.
|
java.lang.String |
getPrefix() |
java.lang.Object |
getProperty(java.lang.String s)
Method getProperty.
|
java.lang.String |
getText() |
char[] |
getTextCharacters() |
int |
getTextCharacters(int sourceStart,
char[] target,
int targetStart,
int length) |
private java.lang.String |
getTextFromNode()
Get the text for the current node.
|
int |
getTextLength() |
int |
getTextStart() |
java.lang.String |
getVersion()
Method getVersion.
|
boolean |
hasName() |
boolean |
hasNext()
Method hasNext.
|
boolean |
isAttributeSpecified(int i) |
boolean |
isBinary()
Check whether the current event is a
XMLStreamConstants.CHARACTERS
event representing base64 encoded binary content and for which a
DataHandler is available. |
boolean |
isCharacters()
Method isCharacters.
|
boolean |
isClosed() |
boolean |
isDeferred()
Check whether the
XMLStreamReader supports deferred loading of the
binary content for the current event. |
boolean |
isEndElement()
Method isEndElement.
|
boolean |
isOptimized()
Check if the binary content is eligible for optimization (e.g.
|
boolean |
isStandalone()
Method isStandalone.
|
boolean |
isStartElement()
Method isStartElement.
|
boolean |
isWhiteSpace()
Method isWhiteSpace.
|
private void |
loadAttributes() |
private void |
loadNamespaces() |
int |
next()
Method next.
|
void |
releaseParserOnClose(boolean value)
Indicate if the parser resource should be release when closed.
|
private void |
setParser(javax.xml.stream.XMLStreamReader parser) |
boolean |
standaloneSet()
Method standaloneSet.
|
private void |
updateCompleteStatus()
Method updateCompleteStatus.
|
private void |
updateLastNode()
This is a very important method.
|
private void |
updateNextNode(boolean switchingAllowed)
Method updateNextNode.
|
void |
writeTextTo(java.io.Writer writer)
Output the character data for the current event to the given writer.
|
getLocation, hasText, nextTag, requireprivate static final org.apache.commons.logging.Log log
private OMNavigator navigator
private OMXMLParserWrapper builder
private javax.xml.stream.XMLStreamReader parser
private DataHandlerReader dataHandlerReader
DataHandlerReader extension of the underlying parser, or null
if the parser doesn't support this extension.private boolean _isClosed
private boolean _releaseParserOnClose
private OMContainer rootNode
private boolean isFirst
private static final short NAVIGABLE
private static final short SWITCH_AT_NEXT
private static final short COMPLETED
private static final short SWITCHED
private static final short DOCUMENT_COMPLETE
private short state
private int currentEvent
private final boolean cache
private final boolean preserveNamespaceContext
OMElement#getXMLStreamReader(boolean, boolean) for more
information about the meaning of this attribute.private java.util.Stack nodeStack
private OMSerializable nextNode
private OMSerializable currentNode
private OMSerializable lastNode
int depth
private int attributeCount
private OMAttribute[] attributes
private int namespaceCount
private OMNamespace[] namespaces
public SwitchingWrapper(OMXMLParserWrapper builder, OMContainer startNode, boolean cache, boolean preserveNamespaceContext)
builder - startNode - cache - preserveNamespaceContext - public java.lang.String getPrefix()
getPrefix in interface javax.xml.stream.XMLStreamReaderXMLStreamReader.getPrefix()public java.lang.String getNamespaceURI()
getNamespaceURI in interface javax.xml.stream.XMLStreamReaderXMLStreamReader.getNamespaceURI()public boolean hasName()
hasName in interface javax.xml.stream.XMLStreamReaderhasName in class AbstractXMLStreamReaderXMLStreamReader.hasName()public java.lang.String getLocalName()
getLocalName in interface javax.xml.stream.XMLStreamReaderXMLStreamReader.getLocalName()public javax.xml.namespace.QName getName()
getName in interface javax.xml.stream.XMLStreamReaderXMLStreamReader.getName()public int getTextLength()
getTextLength in interface javax.xml.stream.XMLStreamReaderXMLStreamReader.getTextLength()public int getTextStart()
getTextStart in interface javax.xml.stream.XMLStreamReaderXMLStreamReader.getTextStart()public int getTextCharacters(int sourceStart,
char[] target,
int targetStart,
int length)
throws javax.xml.stream.XMLStreamException
getTextCharacters in interface javax.xml.stream.XMLStreamReadersourceStart - target - targetStart - length - javax.xml.stream.XMLStreamExceptionXMLStreamReader.getTextCharacters(int, char[], int, int)public char[] getTextCharacters()
getTextCharacters in interface javax.xml.stream.XMLStreamReaderXMLStreamReader.getTextCharacters()public java.lang.String getText()
getText in interface javax.xml.stream.XMLStreamReaderXMLStreamReader.getText()private java.lang.String getTextFromNode()
getText methods are valid. This excludes XMLStreamConstants.DTD events
for which only getText() is valid.public void writeTextTo(java.io.Writer writer)
throws javax.xml.stream.XMLStreamException,
java.io.IOException
CharacterDataReaderreader.writeTextTo(writer) has the same effect as
writer.write(reader.getText()). However, the implementation
MAY choose to split the character data differently. E.g. it MAY write the
character data in multiple chunks or it MAY choose to process more
character data in a single event than would be returned by
XMLStreamReader.getText(). Therefore, using this
method together with XMLStreamReader.getText(),
XMLStreamReader.getTextCharacters(),
XMLStreamReader.getTextStart(),
XMLStreamReader.getTextLength() or
XMLStreamReader.getTextCharacters(int, char[], int, int)
is not supported and may lead to undefined results.
The implementation SHOULD avoid any unnecessary conversions between strings and character arrays.
writeTextTo in interface CharacterDataReaderwriter - the writer to write the character data tojavax.xml.stream.XMLStreamException - if the underlying XML source is not well-formedjava.io.IOException - if an I/O error occurs when writing the character datapublic int getEventType()
getEventType in interface javax.xml.stream.XMLStreamReaderXMLStreamReader.getEventType()private void loadAttributes()
private void loadNamespaces()
private void addNamespace(OMNamespace ns)
public java.lang.String getNamespaceURI(int i)
getNamespaceURI in interface javax.xml.stream.XMLStreamReaderi - XMLStreamReader.getNamespaceURI(java.lang.String)public java.lang.String getNamespacePrefix(int i)
getNamespacePrefix in interface javax.xml.stream.XMLStreamReaderi - XMLStreamReader.getNamespacePrefix(int)public int getNamespaceCount()
getNamespaceCount in interface javax.xml.stream.XMLStreamReaderXMLStreamReader.getNamespaceCount()public boolean isAttributeSpecified(int i)
isAttributeSpecified in interface javax.xml.stream.XMLStreamReaderi - XMLStreamReader.isAttributeSpecified(int)public java.lang.String getAttributeValue(int i)
getAttributeValue in interface javax.xml.stream.XMLStreamReaderi - XMLStreamReader.getAttributeValue(java.lang.String, java.lang.String)public java.lang.String getAttributeType(int i)
getAttributeType in interface javax.xml.stream.XMLStreamReaderi - XMLStreamReader.getAttributeType(int)public java.lang.String getAttributePrefix(int i)
getAttributePrefix in interface javax.xml.stream.XMLStreamReaderi - XMLStreamReader.getAttributePrefix(int)public java.lang.String getAttributeLocalName(int i)
getAttributeLocalName in interface javax.xml.stream.XMLStreamReaderi - XMLStreamReader.getAttributeLocalName(int)public java.lang.String getAttributeNamespace(int i)
getAttributeNamespace in interface javax.xml.stream.XMLStreamReaderi - XMLStreamReader.getAttributeNamespace(int)public javax.xml.namespace.QName getAttributeName(int i)
getAttributeName in interface javax.xml.stream.XMLStreamReaderi - XMLStreamReader.getAttributeName(int)public int getAttributeCount()
getAttributeCount in interface javax.xml.stream.XMLStreamReaderXMLStreamReader.getAttributeCount()public java.lang.String getAttributeValue(java.lang.String s,
java.lang.String s1)
getAttributeValue in interface javax.xml.stream.XMLStreamReaders - s1 - public boolean isWhiteSpace()
isWhiteSpace in interface javax.xml.stream.XMLStreamReaderisWhiteSpace in class AbstractXMLStreamReaderpublic boolean isCharacters()
isCharacters in interface javax.xml.stream.XMLStreamReaderisCharacters in class AbstractXMLStreamReaderpublic boolean isEndElement()
isEndElement in interface javax.xml.stream.XMLStreamReaderisEndElement in class AbstractXMLStreamReaderpublic boolean isStartElement()
isStartElement in interface javax.xml.stream.XMLStreamReaderisStartElement in class AbstractXMLStreamReaderpublic java.lang.String getNamespaceURI(java.lang.String prefix)
getNamespaceURI in interface javax.xml.stream.XMLStreamReaderprefix - public void close()
throws javax.xml.stream.XMLStreamException
close in interface javax.xml.stream.XMLStreamReaderjavax.xml.stream.XMLStreamExceptionpublic boolean hasNext()
throws javax.xml.stream.XMLStreamException
hasNext in interface javax.xml.stream.XMLStreamReaderjavax.xml.stream.XMLStreamExceptionpublic java.lang.String getElementText()
throws javax.xml.stream.XMLStreamException
getElementText in interface javax.xml.stream.XMLStreamReadergetElementText in class AbstractXMLStreamReaderjavax.xml.stream.XMLStreamExceptionXMLStreamReader.getElementText()public int next()
throws javax.xml.stream.XMLStreamException
next in interface javax.xml.stream.XMLStreamReaderjavax.xml.stream.XMLStreamExceptionpublic java.lang.Object getProperty(java.lang.String s)
throws java.lang.IllegalArgumentException
getProperty in interface javax.xml.stream.XMLStreamReaders - java.lang.IllegalArgumentExceptionprivate void updateLastNode()
throws javax.xml.stream.XMLStreamException
javax.xml.stream.XMLStreamExceptionprivate void updateNextNode(boolean switchingAllowed)
private void updateCompleteStatus()
public javax.xml.namespace.NamespaceContext getNamespaceContext()
getNamespaceContext in interface javax.xml.stream.XMLStreamReaderpublic java.lang.String getEncoding()
getEncoding in interface javax.xml.stream.XMLStreamReaderpublic java.lang.String getVersion()
getVersion in interface javax.xml.stream.XMLStreamReaderpublic boolean isStandalone()
isStandalone in interface javax.xml.stream.XMLStreamReaderpublic boolean standaloneSet()
standaloneSet in interface javax.xml.stream.XMLStreamReaderpublic java.lang.String getCharacterEncodingScheme()
getCharacterEncodingScheme in interface javax.xml.stream.XMLStreamReaderpublic java.lang.String getPITarget()
getPITarget in interface javax.xml.stream.XMLStreamReaderpublic java.lang.String getPIData()
getPIData in interface javax.xml.stream.XMLStreamReaderpublic boolean isBinary()
DataHandlerReaderXMLStreamConstants.CHARACTERS
event representing base64 encoded binary content and for which a
DataHandler is available.isBinary in interface DataHandlerReadertrue if the current event is a
XMLStreamConstants.CHARACTERS event representing base64
encoded binary content and for which a DataHandler is
available; false for all other types of events.public boolean isOptimized()
DataHandlerReaderDataHandlerReader.isBinary() returns true for
the current event. The behavior of this method is undefined if this is not the case.isOptimized in interface DataHandlerReadertrue if the binary content is eligible for optimization;
false otherwisepublic boolean isDeferred()
DataHandlerReaderXMLStreamReader supports deferred loading of the
binary content for the current event. If this method returns true then a
consumer MAY call DataHandlerReader.getDataHandlerProvider() and retrieve the
DataHandler later using DataHandlerProvider.getDataHandler().
Calling this method is only meaningful if DataHandlerReader.isBinary() returns true for
the current event. The behavior of this method is undefined if this is not the case.isDeferred in interface DataHandlerReadertrue if deferred loading is supported; false otherwisepublic java.lang.String getContentID()
DataHandlerReaderDataHandlerReader.isBinary() returns true for the
current event.
The implementation SHOULD only return a non null value if the content ID has been used previously in an interaction with another component or system. The implementation SHOULD NOT generate a new content ID solely for the purpose of this method.
If available, the returned value MUST be a raw content ID. In particular:
A consumer MAY use the return value of this method in contexts where it is desirable to preserve the original content ID used by another system or component to identify the binary content. However, the consumer MUST NOT make any assumption about the uniqueness or validity of the content ID (with respect to relevant standards such as RFC822) and SHOULD make provision to sanitize the value if necessary.
getContentID in interface DataHandlerReadernull
if no content ID is knownpublic javax.activation.DataHandler getDataHandler()
throws javax.xml.stream.XMLStreamException
DataHandlerReaderDataHandler with the binary content for the current event. The behavior of
this method is only defined for events for which DataHandlerReader.isBinary() returns
true. For events of this type the method MUST return a valid
DataHandler, regardless of the return value of DataHandlerReader.isDeferred(). If
DataHandlerReader.isDeferred() returns true, then the consumer may use this method to
force the implementation to load the binary content immediately.getDataHandler in interface DataHandlerReaderjavax.xml.stream.XMLStreamException - if an error occurs while loading the DataHandlerpublic DataHandlerProvider getDataHandlerProvider()
DataHandlerReaderDataHandlerProvider instance for deferred loading of the binary content for the
current event. The behavior of this method is defined if and only if DataHandlerReader.isDeferred()
returns true for the current event. The returned reference MUST remain valid
after the current event has been consumed. It is up to the implementation to specify the
exact lifecycle of the returned instance, in particular until when the binary content can be
retrieved.getDataHandlerProvider in interface DataHandlerReaderDataHandlerProvider instance the consumer can use to load the binary
content at a later timeprivate int generateEvents(OMSerializable node)
node - private int generateContainerEvents(OMContainer container, boolean isDocument)
private void setParser(javax.xml.stream.XMLStreamReader parser)
private java.util.Map getAllNamespaces(OMSerializable contextNode)
private void addNamespaceToMap(OMNamespace ns, java.util.Map map)
public boolean isClosed()
public void releaseParserOnClose(boolean value)
value - booleanpublic OMDataSource getDataSource()
public void enableDataSourceEvents(boolean value)
value - boolean