public class XOPEncodingStreamReader extends XOPEncodingStreamWrapper implements javax.xml.stream.XMLStreamReader
XMLStreamReader wrapper that encodes XOP. It assumes that the underlying reader
implements the extension defined by DataHandlerReader so that it can identify the
information items to optimize (by looking for
XMLStreamConstants.CHARACTERS events for which
DataHandlerReader.isBinary() returns true). The DataHandler
objects for the parts referenced by xop:Include element information items produced by
an instance of this class can be retrieved using the XOPEncodingStreamWrapper.getDataHandler(String) method.
Note that the primary purpose of this class is not to serialize an XML infoset to an XOP package
(this is better done using XOPEncodingStreamWriter), but rather to optimize interaction
(by exchanging DataHandler objects instead of base64 encoded representations) with
databinding frameworks that understand XOP, but that are not aware of the
DataHandlerReader extension.
This class defers loading of DataHandler objects until XOPEncodingStreamWrapper.getDataHandler(String) is
called, except if this is not supported by the underlying stream.
| Modifier and Type | Class and Description |
|---|---|
private static class |
XOPEncodingStreamReader.NamespaceContextWrapper
Wrapper that adds the XOP namespace to another namespace context.
|
| Modifier and Type | Field and Description |
|---|---|
private java.lang.String |
currentContentID |
private DataHandlerReader |
dataHandlerReader |
private javax.xml.stream.XMLStreamReader |
parent |
private int |
state |
private static int |
STATE_PASS_THROUGH |
private static int |
STATE_XOP_INCLUDE_END_ELEMENT |
private static int |
STATE_XOP_INCLUDE_START_ELEMENT |
| Constructor and Description |
|---|
XOPEncodingStreamReader(javax.xml.stream.XMLStreamReader parent,
ContentIDGenerator contentIDGenerator,
OptimizationPolicy optimizationPolicy)
Constructor.
|
| Modifier and Type | Method and Description |
|---|---|
void |
close() |
int |
getAttributeCount() |
java.lang.String |
getAttributeLocalName(int index) |
javax.xml.namespace.QName |
getAttributeName(int index) |
java.lang.String |
getAttributeNamespace(int index) |
java.lang.String |
getAttributePrefix(int index) |
java.lang.String |
getAttributeType(int index) |
java.lang.String |
getAttributeValue(int index) |
java.lang.String |
getAttributeValue(java.lang.String namespaceURI,
java.lang.String localName) |
java.lang.String |
getCharacterEncodingScheme() |
java.lang.String |
getElementText() |
java.lang.String |
getEncoding() |
int |
getEventType() |
java.lang.String |
getLocalName() |
javax.xml.stream.Location |
getLocation() |
javax.xml.namespace.QName |
getName() |
javax.xml.namespace.NamespaceContext |
getNamespaceContext() |
int |
getNamespaceCount() |
java.lang.String |
getNamespacePrefix(int index) |
java.lang.String |
getNamespaceURI() |
java.lang.String |
getNamespaceURI(int index) |
java.lang.String |
getNamespaceURI(java.lang.String prefix) |
java.lang.String |
getPIData() |
java.lang.String |
getPITarget() |
java.lang.String |
getPrefix() |
java.lang.Object |
getProperty(java.lang.String name) |
java.lang.String |
getText() |
char[] |
getTextCharacters() |
int |
getTextCharacters(int sourceStart,
char[] target,
int targetStart,
int length) |
int |
getTextLength() |
int |
getTextStart() |
java.lang.String |
getVersion() |
boolean |
hasName() |
boolean |
hasNext() |
boolean |
hasText() |
boolean |
isAttributeSpecified(int index) |
boolean |
isCharacters() |
boolean |
isEndElement() |
boolean |
isStandalone() |
boolean |
isStartElement() |
boolean |
isWhiteSpace() |
int |
next() |
int |
nextTag() |
void |
require(int type,
java.lang.String namespaceURI,
java.lang.String localName) |
boolean |
standaloneSet() |
getContentIDs, getDataHandler, isLoaded, processDataHandler, processDataHandlerprivate static final int STATE_PASS_THROUGH
private static final int STATE_XOP_INCLUDE_START_ELEMENT
private static final int STATE_XOP_INCLUDE_END_ELEMENT
private final javax.xml.stream.XMLStreamReader parent
private final DataHandlerReader dataHandlerReader
private int state
private java.lang.String currentContentID
public XOPEncodingStreamReader(javax.xml.stream.XMLStreamReader parent,
ContentIDGenerator contentIDGenerator,
OptimizationPolicy optimizationPolicy)
parent - The XML stream to encode. The reader must implement the extension defined by
DataHandlerReader.contentIDGenerator - used to generate content IDs for the binary content exposed as
xop:Include element information itemsoptimizationPolicy - the policy to apply to decide which binary content to optimizejava.lang.IllegalArgumentException - if the provided XMLStreamReader doesn't implement the extension defined
by DataHandlerReaderpublic int next()
throws javax.xml.stream.XMLStreamException
next 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 int nextTag()
throws javax.xml.stream.XMLStreamException
nextTag in interface javax.xml.stream.XMLStreamReaderjavax.xml.stream.XMLStreamExceptionpublic void require(int type,
java.lang.String namespaceURI,
java.lang.String localName)
throws javax.xml.stream.XMLStreamException
require in interface javax.xml.stream.XMLStreamReaderjavax.xml.stream.XMLStreamExceptionpublic javax.xml.stream.Location getLocation()
getLocation in interface javax.xml.stream.XMLStreamReaderpublic void close()
throws javax.xml.stream.XMLStreamException
close in interface javax.xml.stream.XMLStreamReaderjavax.xml.stream.XMLStreamExceptionpublic java.lang.Object getProperty(java.lang.String name)
throws java.lang.IllegalArgumentException
getProperty in interface javax.xml.stream.XMLStreamReaderjava.lang.IllegalArgumentExceptionpublic java.lang.String getEncoding()
getEncoding in interface javax.xml.stream.XMLStreamReaderpublic java.lang.String getCharacterEncodingScheme()
getCharacterEncodingScheme 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 getPIData()
getPIData in interface javax.xml.stream.XMLStreamReaderpublic java.lang.String getPITarget()
getPITarget in interface javax.xml.stream.XMLStreamReaderpublic int getAttributeCount()
getAttributeCount in interface javax.xml.stream.XMLStreamReaderpublic java.lang.String getAttributeLocalName(int index)
getAttributeLocalName in interface javax.xml.stream.XMLStreamReaderpublic javax.xml.namespace.QName getAttributeName(int index)
getAttributeName in interface javax.xml.stream.XMLStreamReaderpublic java.lang.String getAttributeNamespace(int index)
getAttributeNamespace in interface javax.xml.stream.XMLStreamReaderpublic java.lang.String getAttributePrefix(int index)
getAttributePrefix in interface javax.xml.stream.XMLStreamReaderpublic java.lang.String getAttributeType(int index)
getAttributeType in interface javax.xml.stream.XMLStreamReaderpublic java.lang.String getAttributeValue(int index)
getAttributeValue in interface javax.xml.stream.XMLStreamReaderpublic boolean isAttributeSpecified(int index)
isAttributeSpecified in interface javax.xml.stream.XMLStreamReaderpublic java.lang.String getAttributeValue(java.lang.String namespaceURI,
java.lang.String localName)
getAttributeValue in interface javax.xml.stream.XMLStreamReaderpublic java.lang.String getElementText()
throws javax.xml.stream.XMLStreamException
getElementText in interface javax.xml.stream.XMLStreamReaderjavax.xml.stream.XMLStreamExceptionpublic int getEventType()
getEventType in interface javax.xml.stream.XMLStreamReaderpublic java.lang.String getNamespaceURI()
getNamespaceURI in interface javax.xml.stream.XMLStreamReaderpublic java.lang.String getLocalName()
getLocalName in interface javax.xml.stream.XMLStreamReaderpublic java.lang.String getPrefix()
getPrefix in interface javax.xml.stream.XMLStreamReaderpublic javax.xml.namespace.QName getName()
getName in interface javax.xml.stream.XMLStreamReaderpublic javax.xml.namespace.NamespaceContext getNamespaceContext()
getNamespaceContext in interface javax.xml.stream.XMLStreamReaderpublic java.lang.String getNamespaceURI(java.lang.String prefix)
getNamespaceURI in interface javax.xml.stream.XMLStreamReaderpublic int getNamespaceCount()
getNamespaceCount in interface javax.xml.stream.XMLStreamReaderpublic java.lang.String getNamespacePrefix(int index)
getNamespacePrefix in interface javax.xml.stream.XMLStreamReaderpublic java.lang.String getNamespaceURI(int index)
getNamespaceURI in interface javax.xml.stream.XMLStreamReaderpublic java.lang.String getText()
getText in interface javax.xml.stream.XMLStreamReaderpublic int getTextStart()
getTextStart in interface javax.xml.stream.XMLStreamReaderpublic int getTextLength()
getTextLength in interface javax.xml.stream.XMLStreamReaderpublic char[] getTextCharacters()
getTextCharacters in interface javax.xml.stream.XMLStreamReaderpublic int getTextCharacters(int sourceStart,
char[] target,
int targetStart,
int length)
throws javax.xml.stream.XMLStreamException
getTextCharacters in interface javax.xml.stream.XMLStreamReaderjavax.xml.stream.XMLStreamExceptionpublic boolean hasName()
hasName in interface javax.xml.stream.XMLStreamReaderpublic boolean hasText()
hasText in interface javax.xml.stream.XMLStreamReaderpublic boolean isCharacters()
isCharacters in interface javax.xml.stream.XMLStreamReaderpublic boolean isWhiteSpace()
isWhiteSpace in interface javax.xml.stream.XMLStreamReaderpublic boolean isStartElement()
isStartElement in interface javax.xml.stream.XMLStreamReaderpublic boolean isEndElement()
isEndElement in interface javax.xml.stream.XMLStreamReader