public abstract class IonReaderBuilder
extends java.lang.Object
IonReader from the given IonCatalog and data
source. A data source is required, while an IonCatalog is optional. If no
IonCatalog is provided, an empty SimpleCatalog will be used.
IonReaders parse incrementally, so syntax errors in the input data
will not be detected as side effects of any of the build methods
in this class.
| Modifier | Constructor and Description |
|---|---|
protected |
IonReaderBuilder() |
protected |
IonReaderBuilder(IonReaderBuilder that) |
| Modifier and Type | Method and Description |
|---|---|
IonReader |
build(byte[] ionData)
Based on the builder's configuration properties, creates a new IonReader
instance over the given block of Ion data, detecting whether it's text or
binary data.
|
abstract IonReader |
build(byte[] ionData,
int offset,
int length)
Based on the builder's configuration properties, creates a new IonReader
instance over the given block of Ion data, detecting whether it's text or
binary data.
|
abstract IonReader |
build(java.io.InputStream ionData)
Based on the builder's configuration properties, creates a new IonReader
instance over the given stream of Ion data, detecting whether it's text or
binary data.
|
abstract IonReader |
build(IonValue value)
|
abstract IonReader |
build(java.io.Reader ionText)
Based on the builder's configuration properties, creates a new
IonReader instance over Ion text data. |
abstract IonTextReader |
build(java.lang.String ionText)
Based on the builder's configuration properties, creates an new
IonReader instance over Ion text data. |
IonReaderBuilder |
copy()
Creates a mutable copy of this builder.
|
IonBufferConfiguration |
getBufferConfiguration() |
IonCatalog |
getCatalog()
Gets the catalog to use when building an
IonReader, or null
if none has been manually set. |
IonReaderBuilder |
immutable()
Returns an immutable builder configured exactly like this one.
|
boolean |
isIncrementalReadingEnabled() |
IonReaderBuilder |
mutable()
Returns a mutable builder configured exactly like this one.
|
protected void |
mutationCheck()
NOT FOR APPLICATION USE!
|
void |
setBufferConfiguration(IonBufferConfiguration configuration) |
void |
setCatalog(IonCatalog catalog)
Sets the catalog to use when building an
IonReader. |
void |
setIncrementalReadingDisabled() |
void |
setIncrementalReadingEnabled() |
static IonReaderBuilder |
standard()
The standard builder of
IonReaders, with all configuration
properties having their default values. |
protected IonCatalog |
validateCatalog() |
IonReaderBuilder |
withBufferConfiguration(IonBufferConfiguration configuration)
Sets the buffer configuration.
|
IonReaderBuilder |
withCatalog(IonCatalog catalog)
Declares the catalog to use when building an
IonReader,
returning a new mutable builder the current one is immutable. |
IonReaderBuilder |
withIncrementalReadingEnabled(boolean isEnabled)
Determines whether the IonReader will allow incremental reading of binary Ion data.
|
protected IonReaderBuilder()
protected IonReaderBuilder(IonReaderBuilder that)
public static IonReaderBuilder standard()
IonReaders, with all configuration
properties having their default values.public IonReaderBuilder copy()
this.public IonReaderBuilder immutable()
public IonReaderBuilder mutable()
protected void mutationCheck()
public IonReaderBuilder withCatalog(IonCatalog catalog)
IonReader,
returning a new mutable builder the current one is immutable.catalog - the catalog to use in built readers.
If null, a new SimpleCatalog will be used.setCatalog(IonCatalog),
withCatalog(IonCatalog)public void setCatalog(IonCatalog catalog)
IonReader.catalog - the catalog to use in built readers.
If null, a new SimpleCatalog will be used.java.lang.UnsupportedOperationException - if this builder is immutable.getCatalog(),
withCatalog(IonCatalog)public IonCatalog getCatalog()
IonReader, or null
if none has been manually set. The catalog is needed to resolve shared
symbol table imports.setCatalog(IonCatalog),
withCatalog(IonCatalog)protected IonCatalog validateCatalog()
public IonReaderBuilder withIncrementalReadingEnabled(boolean isEnabled)
Determines whether the IonReader will allow incremental reading of binary Ion data. When enabled, if
IonReader.next() returns null at the top-level, it indicates that there is not enough data
in the stream to complete a top-level value. The user may wait for more data to become available in the stream
and call IonReader.next() again to continue reading. Unlike the non-incremental reader, the incremental
reader will never throw an exception due to unexpected EOF during next(). If, however,
Closeable.close() is called when an incomplete value is buffered, an IonException will be raised.
There is currently no incremental text IonReader, so for text data a non-incremental IonReader will be returned regardless of the value of this option. If incremental text reading is supported in the future, it may be enabled via this option.
There is one caveat to note when using this option: the incremental implementation must be able to buffer an entire top-level value in memory. This will not be a problem for the vast majority of Ion streams, as it is rare for a single top-level value or symbol table to exceed a few megabytes in size. However, if the size of the stream's values risks exceeding the available memory, then this option must not be enabled.
isEnabled - true if the option is enabled; otherwise, false.setIncrementalReadingEnabled(),
setIncrementalReadingDisabled()public void setIncrementalReadingEnabled()
withIncrementalReadingEnabled(boolean)public void setIncrementalReadingDisabled()
withIncrementalReadingEnabled(boolean)public boolean isIncrementalReadingEnabled()
withIncrementalReadingEnabled(boolean)public IonReaderBuilder withBufferConfiguration(IonBufferConfiguration configuration)
withIncrementalReadingEnabled(boolean)) or
setIncrementalReadingEnabled(). This configuration is optional. If not provided, the buffer size will
be limited only by the available memory.configuration - the configuration.setBufferConfiguration(IonBufferConfiguration)public void setBufferConfiguration(IonBufferConfiguration configuration)
public IonBufferConfiguration getBufferConfiguration()
withBufferConfiguration(IonBufferConfiguration)public IonReader build(byte[] ionData)
This method will auto-detect and uncompress GZIPped Ion data.
ionData - the source of the Ion data, which may be either Ion binary
data or UTF-8 Ion text. The reader retains a reference to the array, so
its data must not be modified while the reader is active. Must not be
null.IonReader instance; not null.IonSystem.newReader(byte[])public abstract IonReader build(byte[] ionData, int offset, int length)
This method will auto-detect and uncompress GZIPped Ion data.
ionData - the source of the Ion data, which is used only within the
range of bytes starting at offset for len bytes.
The data in that range may be either Ion binary data or UTF-8 Ion text.
The reader retains a reference to the array, so its data must not be
modified while the reader is active. Must not be null.offset - must be non-negative and less than ionData.length.length - must be non-negative and offset+length must not
exceed ionData.length.IonSystem.newReader(byte[], int, int)public abstract IonReader build(java.io.InputStream ionData)
This method will auto-detect and uncompress GZIPped Ion data.
Because this library performs its own buffering, it's recommended that users avoid adding additional buffering to the given stream.
ionData - the source of the Ion data, which may be either Ion binary
data or UTF-8 Ion text. Must not be null.Closeable.close() when finished with it.IonException - if the source throws IOException.IonSystem.newReader(InputStream)public abstract IonReader build(java.io.Reader ionText)
IonReader instance over Ion text data.
Applications should generally use build(InputStream)
whenever possible, since this library has much faster Unicode decoding
than the Java IO framework.
Because this library performs its own buffering, it's recommended that you avoid adding additional buffering to the given stream.
ionText - the source of the Ion text data. Must not be null.IonException - if the source throws IOException.IonSystem.newReader(Reader)public abstract IonReader build(IonValue value)
IonReader instance over an IonValue data model. Typically
this is used to iterate over a collection, such as an IonStruct.
The given value and its children, if any, must not be modified until after
the IonReader constructed by this method is closed. Violating this
constraint results in undefined behavior.value - must not be null.IonSystem.newReader(IonValue)public abstract IonTextReader build(java.lang.String ionText)
IonReader instance over Ion text data.ionText - the source of the Ion text data. Must not be null.IonSystem.newReader(String)