org.apache.axiom.om.ds
Class ParserInputStreamDataSource

java.lang.Object
  extended by org.apache.axiom.om.ds.OMDataSourceExtBase
      extended by org.apache.axiom.om.ds.ParserInputStreamDataSource
All Implemented Interfaces:
OMDataSource, OMDataSourceExt

public class ParserInputStreamDataSource
extends OMDataSourceExtBase

A DataSource that is backed by an InputStream (read from a parser). The Data in this Data source owns the payload inputStream.


Nested Class Summary
 class ParserInputStreamDataSource.Data
           
 
Field Summary
 
Fields inherited from interface org.apache.axiom.om.OMDataSourceExt
LOSSY_PREFIX
 
Constructor Summary
ParserInputStreamDataSource(InputStream payload, String encoding)
          This is the constructor that is normally called.
ParserInputStreamDataSource(InputStream payload, String encoding, int behavior)
          This constructor is used to test the different Behavior settings.
 
Method Summary
 void close()
          Close the DataSource and free its resources.
 OMDataSourceExt copy()
          Return a InputStreamDataSource backed by a ByteArrayInputStream
 Object getObject()
          Get the object that backs this data source.
 XMLStreamReader getReader()
          Get parser for element data.
 byte[] getXMLBytes(String encoding)
          Returns a byte[] representing the xml data
 InputStream getXMLInputStream(String encoding)
          Returns a InputStream representing the xml data
 boolean isDestructiveRead()
          Returns true if reading the backing object is destructive.
 boolean isDestructiveWrite()
          Returns true if writing the backing object is destructive.
 int numReads()
           
 void serialize(OutputStream output, OMOutputFormat format)
          Serializes element data directly to stream.
 void serialize(XMLStreamWriter xmlWriter)
          Serializes element data directly to StAX writer.
 
Methods inherited from class org.apache.axiom.om.ds.OMDataSourceExtBase
getProperty, hasProperty, serialize, setProperty
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ParserInputStreamDataSource

public ParserInputStreamDataSource(InputStream payload,
                                   String encoding)
This is the constructor that is normally called. Note that the ParserInputStreamDataSource takes ownership of the payload InputStream. It may copy, mark or reset the stream. Callers should not access the stream after this constructor is called

Parameters:
payload - InputStream
encoding -

ParserInputStreamDataSource

public ParserInputStreamDataSource(InputStream payload,
                                   String encoding,
                                   int behavior)
This constructor is used to test the different Behavior settings. Note that the ParserInputStreamDataSource takes ownership of the payload InputStream. It may copy, mark or reset the stream. Callers should not access the stream after this constructor is called.

Parameters:
payload -
encoding -
behavior -
Method Detail

serialize

public void serialize(OutputStream output,
                      OMOutputFormat format)
               throws XMLStreamException
Description copied from interface: OMDataSource
Serializes element data directly to stream.

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

Specified by:
serialize in interface OMDataSource
Overrides:
serialize in class OMDataSourceExtBase
Parameters:
output - destination stream for element XML text
format - Output format information. The implementation must use this information to choose the correct character set encoding when writing to the output stream. This parameter must not be null.
Throws:
XMLStreamException

serialize

public void serialize(XMLStreamWriter xmlWriter)
               throws XMLStreamException
Description copied from interface: OMDataSource
Serializes element data directly to StAX writer.

The implementation of this method must satisfy the following requirements:

On the other hand, the caller of this method (typically an OMSourcedElement instance) must ensure that the following requirements are satisfied:

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

Specified by:
serialize in interface OMDataSource
Overrides:
serialize in class OMDataSourceExtBase
Parameters:
xmlWriter - destination writer
Throws:
XMLStreamException

getReader

public 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.

Returns:
element parser
Throws:
XMLStreamException

getXMLInputStream

public InputStream getXMLInputStream(String encoding)
                              throws UnsupportedEncodingException
Description copied from interface: OMDataSourceExt
Returns a InputStream representing the xml data

Specified by:
getXMLInputStream in interface OMDataSourceExt
Overrides:
getXMLInputStream in class OMDataSourceExtBase
Parameters:
encoding - String encoding of InputStream
Returns:
InputStream
Throws:
UnsupportedEncodingException

numReads

public int numReads()

getObject

public Object getObject()
Description copied from interface: OMDataSourceExt
Get the object that backs this data source. Application code should in general not call this method directly, but use OMSourcedElement.getObject(Class) instead.

Data sources that support non destructive read/write should return the object from which the XML is produced. Data sources with destructive read/write should return a non null value only if the backing object has not been consumed yet (even partially).

Returns:
the backing object, or null if the data source has no backing object or if the backing object can't be accessed in a safe way

isDestructiveRead

public 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

isDestructiveWrite

public boolean isDestructiveWrite()
Description copied from interface: OMDataSourceExt
Returns true if writing the backing object is destructive. An example of an object with a destructive write is an InputStream. The owning OMSourcedElement uses this information to detemine if OM tree expansion is needed when writing the OMDataSourceExt.

Returns:
boolean

getXMLBytes

public byte[] getXMLBytes(String encoding)
Description copied from interface: OMDataSourceExt
Returns a byte[] representing the xml data

Parameters:
encoding - String encoding of InputStream
Returns:
byte[]
See Also:
OMDataSourceExt.getXMLInputStream(String)

close

public void close()
Description copied from interface: OMDataSourceExt
Close the DataSource and free its resources.


copy

public OMDataSourceExt copy()
Return a InputStreamDataSource backed by a ByteArrayInputStream

Returns:
the copy of the data source, or null if the data source can't be copied (e.g. because it is destructive)


Copyright © 2004-2012 The Apache Software Foundation. All Rights Reserved.