Package org.apache.axiom.om.ds

# Class AbstractPushOMDataSource

java.lang.Object
org.apache.axiom.om.ds.AbstractOMDataSource
org.apache.axiom.om.ds.AbstractPushOMDataSource

All Implemented Interfaces:
  `OMDataSource`, `OMDataSourceExt`

Direct Known Subclasses:
  `JAXBOMDataSource`

public abstract class AbstractPushOMDataSource extends AbstractOMDataSource
Base class for `OMDataSourceExt` implementations that can easily serialize the content to an `XMLStreamWriter` but that are unable to produce the content as an `XMLStreamReader`.

`OMSourcedElement` will handle `OMDataSource` implementations extending this class differently when it comes to expansion: instead of using `OMDataSource.getReader()` to expand the element, it will use `OMDataSource.serialize(XMLStreamWriter)` (with a special `XMLStreamWriter` that builds the descendants of the `OMSourcedElement`). This means that such an `OMSourcedElement` will be expanded instantly, and that deferred building of the descendants is not applicable.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `AbstractPushOMDataSource()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `final XMLStreamReader`
  `getReader()`
  Get parser for element data.
  `final boolean`
  `isDestructiveRead()`
  Returns true if reading the backing object is destructive.

  ### Methods inherited from class org.apache.axiom.om.ds.AbstractOMDataSource

  `close, copy, getObject, getProperty, getXMLBytes, getXMLInputStream, hasProperty, serialize, serialize, setProperty`

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

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

  ### Methods inherited from interface org.apache.axiom.om.OMDataSource

  `serialize`

  ### Methods inherited from interface org.apache.axiom.om.OMDataSourceExt

  `isDestructiveWrite`

- ## Constructor Details

  - ### AbstractPushOMDataSource

    public AbstractPushOMDataSource()

- ## Method Details

  - ### isDestructiveRead

    public final boolean isDestructiveRead()
    Description copied from interface: `OMDataSourceExt`
    Returns true if reading the backing object is destructive. An example of an object with a destructive read is an InputSteam. The owning OMSourcedElement uses this information to detemine if OM tree expansion is needed when reading the OMDataSourceExt.
    Returns:
      boolean

  - ### getReader

    public final XMLStreamReader getReader() throws XMLStreamException
    Description copied from interface: `OMDataSource`
    Get parser for element data. In the general case this may require the data source to serialize data as XML text and then parse that text.

    It is assumed that this method consumed the content (i.e. destroys the backing object) unless the data source also implements `OMDataSourceExt` and `OMDataSourceExt.isDestructiveRead()` returns `false`.

    `OMSourcedElement` implementations are expected to call `XMLStreamReader.close()` on the returned reader as soon as the element is completely built.

    Returns:
      element parser
    Throws:
      `XMLStreamException`