IonValue tree).Warning
This interface should not be implemented or extended by code outside of this library. We still have some work to do before this interface is stable. See issue amazon-ion/ion-java/issues/11
An IonReader has a "cursor" tracking the current value on
which the reader is positioned. Generally, newly created readers are not
positioned on any value. To begin traversing the Ion data, one would use
next() to advance the cursor onto the first value (or learn there isn't
one). Once positioned, the current value's data can be accessed with the
*Value() methods.
When the current value is a container, calling next() moves the
cursor to the next sibling of the container, at the same depth,
skipping over any children the container may have.
To read the children, call stepIn(),
then next() to position onto the first child value (or learn there
isn't one). Calling stepOut() skips over any remaining children
and moves the cursor just beyond the container; call next() to
move the cursor to the following value.
In general, method names are intended to parallel similar methods in the
IonValue hierarchy. For example, to get the text of a symbol one
would use stringValue(), mirroring IonSymbol#stringValue().
IonReader is a generic interface for traversing Ion data, and it's
not possible to fully specify the set of exceptions that could be thrown
from the underlying data source. Thus all failures are thrown as instances
of IonException, wrapping the original cause. If an application
wants to handle (say) IOExceptions specially, then it needs to
extract that from the wrappers; the documentation of IonException
explains how to do that.
Faceted and implementations may provide additional
functionality accessible via the asFacet(Class) method.
SpanProvider FacetstepIn() or stepOut(), or when the prior
call to next() returned null (meaning: end of container or end of
stream). In such states, SpanProvider#currentSpan() will fail.
SeekableReader FacetInputStream.
(See issue amazon-ion/ion-java/issues/17.)
It allows the user to reposition the reader to a Span over the
same reader instance or another reader with the same source.
SpanProvider facet vend Spans that
are also faceted.
OffsetSpan FacetTextSpan Facet| Modifier and Type | Method and Description |
|---|---|
| public BigDecimal | |
| public BigInteger | |
| public boolean | |
| public int | |
| public Date | |
| public Decimal | decimalValue()
Returns the current value as a |
| public double | |
| public int | getBytes(byte[]
destination to copy the value into, this must not be null. buffer, int the first position to copy into, this must be non null and
less than the length of buffer. offset, int the number of bytes available in the buffer to copy into,
this must be long enough to hold the whole value and not extend outside
of buffer. len)Copies the current value into the passed in a byte array. |
| public int | |
| public int | Returns: the symbol ID of the field name, if the current value is a field within a struct. If the current value is not a field, or if the symbol ID cannot be determined, this method returns a value less than one.
Deprecated
Use
getFieldNameSymbol() instead.
/** Gets the symbol ID of the field name attached to the current value. |
| public String | |
| public SymbolToken | Returns: null if there is no current value or if the current value is not a field of a struct.Gets the current value's field name as a symbol token (text + ID). |
| public IntegerSize | getIntegerSize()
Returns an |
| public SymbolTable | |
| public IonType | |
| public String[] | Returns: the (ordered) annotations on the current value, or an empty array (notnull) if there are none.Return the annotations of the current value as an array of strings. |
| public SymbolToken[] | Returns: the (ordered) annotations on the current value, or an empty array (notnull) if there are none.Gets the current value's annotations as symbol tokens (text + ID). |
| public boolean | |
| public int | |
| public boolean | |
| public boolean | isNullValue()
Determines whether the current value is a null Ion value of any type
(for example, |
| public Iterator | Returns: not null.Return the annotations on the curent value as an iterator. |
| public long | |
| public byte[] | |
| public IonType | Returns: the type of the next Ion value (neverIonType#DATAGRAM),
or null when there are no more elements at the current depth in
the same container.Positions this reader on the next sibling after the current value, returning the type of that value. |
| public void | stepIn()
Positions the reader just before the contents of the current value, which must be a container (list, sexp, or struct). |
| public void | stepOut()
Positions the iterator after the current parent's value, moving up one level in the data hierarchy. |
| public String | |
| public SymbolToken | |
| public Timestamp |
| bigDecimalValue | back to summary |
|---|---|
| public BigDecimal bigDecimalValue() Returns the current value as a
This method is only valid when
| |
| bigIntegerValue | back to summary |
|---|---|
| public BigInteger bigIntegerValue() Returns the current value as a | |
| booleanValue | back to summary |
|---|---|
| public boolean booleanValue() Returns the current value as an boolean.
This is only valid when | |
| byteSize | back to summary |
|---|---|
| public int byteSize() Gets the size in bytes of the current lob value.
This is only valid when
| |
| dateValue | back to summary |
|---|---|
| public Date dateValue() Returns the current value as a | |
| decimalValue | back to summary |
|---|---|
| public Decimal decimalValue() Returns the current value as a | |
| doubleValue | back to summary |
|---|---|
| public double doubleValue() Returns the current value as a double. This is only valid if there is an underlying value and the value is either float, or decimal. | |
| getBytes | back to summary |
|---|---|
| public int getBytes(byte[] buffer, int offset, int len) Copies the current value into the passed in a byte array.
This is only valid when
| |
| getDepth | back to summary |
|---|---|
| public int getDepth() Returns the depth into the Ion value that this reader has traversed.
At top level the depth is 0, and it increases by one on each call to
| |
| getFieldId | back to summary |
|---|---|
| public int getFieldId()
Deprecated Use /** Gets the symbol ID of the field name attached to the current value. This is an "expert method": correct use requires deep understanding of the Ion binary format. You almost certainly don't want to use it.
| |
| getFieldName | back to summary |
|---|---|
| public String getFieldName() Return the field name of the current value. Or null if there is no valid current value or if the current value is not a field of a struct.
| |
| getFieldNameSymbol | back to summary |
|---|---|
| public SymbolToken getFieldNameSymbol() Gets the current value's field name as a symbol token (text + ID).
If the text of the token isn't known, the result's
| |
| getIntegerSize | back to summary |
|---|---|
| public IntegerSize getIntegerSize() Returns an
| |
| getSymbolTable | back to summary |
|---|---|
| public SymbolTable getSymbolTable() Returns the symbol table that is applicable to the current value. This may be either a system or local symbol table. | |
| getType | back to summary |
|---|---|
| public IonType getType() Returns the type of the current value, or null if there is no current value. | |
| getTypeAnnotations | back to summary |
|---|---|
| public String[] getTypeAnnotations() Return the annotations of the current value as an array of strings.
| |
| getTypeAnnotationSymbols | back to summary |
|---|---|
| public SymbolToken[] getTypeAnnotationSymbols() Gets the current value's annotations as symbol tokens (text + ID).
| |
| hasNext | back to summary |
|---|---|
| public boolean hasNext()
Deprecated Applications should detect the end of the current level by
checking for a Determines whether there is another value at the current depth;
in other words whether there is a sibling value that may be reached
using Warning this method alters the internal state of the reader such
that you cannot reliably get values from the "current" element. The only
thing you should call after
| |
| intValue | back to summary |
|---|---|
| public int intValue() Returns the current value as an int. This is only valid if there is an underlying value and the value is of a numeric type (int, float, or decimal). | |
| isInStruct | back to summary |
|---|---|
| public boolean isInStruct() Determines whether this reader is currently traversing the fields of an Ion struct. It returns false if the iteration is in a list, a sexp, or a datagram. | |
| isNullValue | back to summary |
|---|---|
| public boolean isNullValue() Determines whether the current value is a null Ion value of any type
(for example, | |
| iterateTypeAnnotations | back to summary |
|---|---|
| public Iterator Return the annotations on the curent value as an iterator. The iterator is empty (hasNext() returns false on the first call) if there are no annotations on the current value.
Implementations *may* throw Note the iterator returned by this method is only valid while
the reader remains positioned on the current value (i.e., before
next, step in, or step out). Use cases that require storing a
value's annotations after advancing past that value should either
copy them from the iterator or call | |
| longValue | back to summary |
|---|---|
| public long longValue() Returns the current value as a long. This is only valid if there is an underlying value and the value is of a numeric type (int, float, or decimal). | |
| newBytes | back to summary |
|---|---|
| public byte[] newBytes() Returns the current value as a newly-allocated byte array.
This is only valid when | |
| next | back to summary |
|---|---|
| public IonType next() Positions this reader on the next sibling after the current value,
returning the type of that value. Once so positioned the contents of
this value can be accessed with the
A sequence of
| |
| stepIn | back to summary |
|---|---|
| public void stepIn() Positions the reader just before the contents of the current value,
which must be a container (list, sexp, or struct).
There's no current value immediately after stepping in, so the next
thing you'll want to do is call
Stepping into a null container (
At any time
| |
| stepOut | back to summary |
|---|---|
| public void stepOut() Positions the iterator after the current parent's value, moving up one
level in the data hierarchy.
There's no current value immediately after stepping out, so the next
thing you'll want to do is call
| |
| stringValue | back to summary |
|---|---|
| public String stringValue() Returns the current value as a Java String.
This is only valid when
| |
| symbolValue | back to summary |
|---|---|
| public SymbolToken symbolValue() Returns the current value as a symbol token (text + ID).
This is only valid when
| |
| timestampValue | back to summary |
|---|---|
| public Timestamp timestampValue() Returns the current value as a | |