org.apache.axiom.util.stax.xop

## Class XOPEncodingStreamReader

- java.lang.Object
- - org.apache.axiom.util.stax.xop.XOPEncodingStreamWrapper
  - - org.apache.axiom.util.stax.xop.XOPEncodingStreamReader

- All Implemented Interfaces:
    javax.xml.stream.XMLStreamConstants, javax.xml.stream.XMLStreamReader, MimePartProvider

      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.

- - ### Field Summary

    - ### 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

    Constructors
    Constructor and Description
    `XOPEncodingStreamReader(javax.xml.stream.XMLStreamReader parent, ContentIDGenerator contentIDGenerator, OptimizationPolicy optimizationPolicy)` Constructor.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `close()`
    `int` | `getAttributeCount()`
    `String` | `getAttributeLocalName(int index)`
    `QName` | `getAttributeName(int index)`
    `String` | `getAttributeNamespace(int index)`
    `String` | `getAttributePrefix(int index)`
    `String` | `getAttributeType(int index)`
    `String` | `getAttributeValue(int index)`
    `String` | `getAttributeValue(String namespaceURI, String localName)`
    `String` | `getCharacterEncodingScheme()`
    `String` | `getElementText()`
    `String` | `getEncoding()`
    `int` | `getEventType()`
    `String` | `getLocalName()`
    `javax.xml.stream.Location` | `getLocation()`
    `QName` | `getName()`
    `NamespaceContext` | `getNamespaceContext()`
    `int` | `getNamespaceCount()`
    `String` | `getNamespacePrefix(int index)`
    `String` | `getNamespaceURI()`
    `String` | `getNamespaceURI(int index)`
    `String` | `getNamespaceURI(String prefix)`
    `String` | `getPIData()`
    `String` | `getPITarget()`
    `String` | `getPrefix()`
    `Object` | `getProperty(String name)`
    `String` | `getText()`
    `char[]` | `getTextCharacters()`
    `int` | `getTextCharacters(int sourceStart, char[] target, int targetStart, int length)`
    `int` | `getTextLength()`
    `int` | `getTextStart()`
    `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, String namespaceURI, String localName)`
    `boolean` | `standaloneSet()`

    - ### Methods inherited from class org.apache.axiom.util.stax.xop.XOPEncodingStreamWrapper

      `getContentIDs, getDataHandler, isLoaded, processDataHandler, processDataHandler`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### XOPEncodingStreamReader

          public XOPEncodingStreamReader(javax.xml.stream.XMLStreamReader parent,
                                         ContentIDGenerator contentIDGenerator,
                                         OptimizationPolicy optimizationPolicy)

      Constructor.
      Parameters:
        `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 items
        `optimizationPolicy` - the policy to apply to decide which binary content to optimize
      Throws:
        `IllegalArgumentException` - if the provided `XMLStreamReader` doesn't implement the extension defined by `DataHandlerReader`

  - ### Method Detail

    - #### next

          public int next()
                   throws javax.xml.stream.XMLStreamException

      Specified by:
        `next` in interface `javax.xml.stream.XMLStreamReader`
      Throws:
        `javax.xml.stream.XMLStreamException`

    - #### hasNext

          public boolean hasNext()
                          throws javax.xml.stream.XMLStreamException

      Specified by:
        `hasNext` in interface `javax.xml.stream.XMLStreamReader`
      Throws:
        `javax.xml.stream.XMLStreamException`

    - #### nextTag

          public int nextTag()
                      throws javax.xml.stream.XMLStreamException

      Specified by:
        `nextTag` in interface `javax.xml.stream.XMLStreamReader`
      Throws:
        `javax.xml.stream.XMLStreamException`

    - #### require

          public void require(int type,
                              String namespaceURI,
                              String localName)
                       throws javax.xml.stream.XMLStreamException

      Specified by:
        `require` in interface `javax.xml.stream.XMLStreamReader`
      Throws:
        `javax.xml.stream.XMLStreamException`

    - #### getLocation

          public javax.xml.stream.Location getLocation()

      Specified by:
        `getLocation` in interface `javax.xml.stream.XMLStreamReader`

    - #### close

          public void close()
                     throws javax.xml.stream.XMLStreamException

      Specified by:
        `close` in interface `javax.xml.stream.XMLStreamReader`
      Throws:
        `javax.xml.stream.XMLStreamException`

    - #### getProperty

          public Object getProperty(String name)
                             throws IllegalArgumentException

      Specified by:
        `getProperty` in interface `javax.xml.stream.XMLStreamReader`
      Throws:
        `IllegalArgumentException`

    - #### getEncoding

          public String getEncoding()

      Specified by:
        `getEncoding` in interface `javax.xml.stream.XMLStreamReader`

    - #### getCharacterEncodingScheme

          public String getCharacterEncodingScheme()

      Specified by:
        `getCharacterEncodingScheme` in interface `javax.xml.stream.XMLStreamReader`

    - #### getVersion

          public String getVersion()

      Specified by:
        `getVersion` in interface `javax.xml.stream.XMLStreamReader`

    - #### isStandalone

          public boolean isStandalone()

      Specified by:
        `isStandalone` in interface `javax.xml.stream.XMLStreamReader`

    - #### standaloneSet

          public boolean standaloneSet()

      Specified by:
        `standaloneSet` in interface `javax.xml.stream.XMLStreamReader`

    - #### getPIData

          public String getPIData()

      Specified by:
        `getPIData` in interface `javax.xml.stream.XMLStreamReader`

    - #### getPITarget

          public String getPITarget()

      Specified by:
        `getPITarget` in interface `javax.xml.stream.XMLStreamReader`

    - #### getAttributeCount

          public int getAttributeCount()

      Specified by:
        `getAttributeCount` in interface `javax.xml.stream.XMLStreamReader`

    - #### getAttributeLocalName

          public String getAttributeLocalName(int index)

      Specified by:
        `getAttributeLocalName` in interface `javax.xml.stream.XMLStreamReader`

    - #### getAttributeName

          public QName getAttributeName(int index)

      Specified by:
        `getAttributeName` in interface `javax.xml.stream.XMLStreamReader`

    - #### getAttributeNamespace

          public String getAttributeNamespace(int index)

      Specified by:
        `getAttributeNamespace` in interface `javax.xml.stream.XMLStreamReader`

    - #### getAttributePrefix

          public String getAttributePrefix(int index)

      Specified by:
        `getAttributePrefix` in interface `javax.xml.stream.XMLStreamReader`

    - #### getAttributeType

          public String getAttributeType(int index)

      Specified by:
        `getAttributeType` in interface `javax.xml.stream.XMLStreamReader`

    - #### getAttributeValue

          public String getAttributeValue(int index)

      Specified by:
        `getAttributeValue` in interface `javax.xml.stream.XMLStreamReader`

    - #### isAttributeSpecified

          public boolean isAttributeSpecified(int index)

      Specified by:
        `isAttributeSpecified` in interface `javax.xml.stream.XMLStreamReader`

    - #### getAttributeValue

          public String getAttributeValue(String namespaceURI,
                                          String localName)

      Specified by:
        `getAttributeValue` in interface `javax.xml.stream.XMLStreamReader`

    - #### getElementText

          public String getElementText()
                                throws javax.xml.stream.XMLStreamException

      Specified by:
        `getElementText` in interface `javax.xml.stream.XMLStreamReader`
      Throws:
        `javax.xml.stream.XMLStreamException`

    - #### getEventType

          public int getEventType()

      Specified by:
        `getEventType` in interface `javax.xml.stream.XMLStreamReader`

    - #### getNamespaceURI

          public String getNamespaceURI()

      Specified by:
        `getNamespaceURI` in interface `javax.xml.stream.XMLStreamReader`

    - #### getLocalName

          public String getLocalName()

      Specified by:
        `getLocalName` in interface `javax.xml.stream.XMLStreamReader`

    - #### getPrefix

          public String getPrefix()

      Specified by:
        `getPrefix` in interface `javax.xml.stream.XMLStreamReader`

    - #### getName

          public QName getName()

      Specified by:
        `getName` in interface `javax.xml.stream.XMLStreamReader`

    - #### getNamespaceContext

          public NamespaceContext getNamespaceContext()

      Specified by:
        `getNamespaceContext` in interface `javax.xml.stream.XMLStreamReader`

    - #### getNamespaceURI

          public String getNamespaceURI(String prefix)

      Specified by:
        `getNamespaceURI` in interface `javax.xml.stream.XMLStreamReader`

    - #### getNamespaceCount

          public int getNamespaceCount()

      Specified by:
        `getNamespaceCount` in interface `javax.xml.stream.XMLStreamReader`

    - #### getNamespacePrefix

          public String getNamespacePrefix(int index)

      Specified by:
        `getNamespacePrefix` in interface `javax.xml.stream.XMLStreamReader`

    - #### getNamespaceURI

          public String getNamespaceURI(int index)

      Specified by:
        `getNamespaceURI` in interface `javax.xml.stream.XMLStreamReader`

    - #### getText

          public String getText()

      Specified by:
        `getText` in interface `javax.xml.stream.XMLStreamReader`

    - #### getTextStart

          public int getTextStart()

      Specified by:
        `getTextStart` in interface `javax.xml.stream.XMLStreamReader`

    - #### getTextLength

          public int getTextLength()

      Specified by:
        `getTextLength` in interface `javax.xml.stream.XMLStreamReader`

    - #### getTextCharacters

          public char[] getTextCharacters()

      Specified by:
        `getTextCharacters` in interface `javax.xml.stream.XMLStreamReader`

    - #### getTextCharacters

          public int getTextCharacters(int sourceStart,
                                       char[] target,
                                       int targetStart,
                                       int length)
                                throws javax.xml.stream.XMLStreamException

      Specified by:
        `getTextCharacters` in interface `javax.xml.stream.XMLStreamReader`
      Throws:
        `javax.xml.stream.XMLStreamException`

    - #### hasName

          public boolean hasName()

      Specified by:
        `hasName` in interface `javax.xml.stream.XMLStreamReader`

    - #### hasText

          public boolean hasText()

      Specified by:
        `hasText` in interface `javax.xml.stream.XMLStreamReader`

    - #### isCharacters

          public boolean isCharacters()

      Specified by:
        `isCharacters` in interface `javax.xml.stream.XMLStreamReader`

    - #### isWhiteSpace

          public boolean isWhiteSpace()

      Specified by:
        `isWhiteSpace` in interface `javax.xml.stream.XMLStreamReader`

    - #### isStartElement

          public boolean isStartElement()

      Specified by:
        `isStartElement` in interface `javax.xml.stream.XMLStreamReader`

    - #### isEndElement

          public boolean isEndElement()

      Specified by:
        `isEndElement` in interface `javax.xml.stream.XMLStreamReader`

Copyright © The Apache Software Foundation. All Rights Reserved.