Top Description Fields Constructors Methods
com.amazon.ion.impl

public abstract Class _Private_MarkupCallback

extends Object
Class Inheritance
Imports
com.amazon.ion.IonType, .SymbolToken, com.amazon.ion.system.IonTextWriterBuilder, com.amazon.ion.util._Private_FastAppendable, java.io.IOException

NOT FOR APPLICATION USE! Callback for giving users the ability to inject markup into their Ion documents.

Customers who want to inject markup into their Ion documents will need to extend _Private_MarkupCallback, implement _Private_CallbackBuilder to build new instances, and pass an instance of their _Private_CallbackBuilder into IonTextWriterBuilder#setCallbackBuilder(_Private_CallbackBuilder) or IonTextWriterBuilder#withCallbackBuilder(_Private_CallbackBuilder)

Note

It is only necessary for subclasses to implement methods they're using to inject markup.

When all method are called, they are called with (at least) an IonType that represents either the type of data being written or the container type that the writer is writing, or currently inside. before/afterFieldName and before/afterEachAnnotation get, respectively, the field name and annotation that is being written. Methods can use myAppendable access the output stream.

Example Calls

Here are some example call patterns, using the following syntax to show where calls will be executed (whitespace is used to increase readability):

<methodName TYPE>

Input:

{ cookies:"Chocolate Chip" }
Output:
<beforeData STRUCT>{<afterStepIn STRUCT>
    <beforeFieldName STRING "cookies"> cookies <afterFieldName STRING "cookies">:<beforeData STRING> "Chocolate Chip" <afterData STRING>
<beforeStepOut STRUCT>}<afterData STRUCT>

Input:

anno1::anno2::{
  fname:"John",
  lname:"Smith",
  age:32.785
}
Output:
<beforeAnnotations STRUCT>
  <beforeEachAnnotation STRUCT "anno1">anno1<afterEachAnnotation STRUCT "anno1">::
  <beforeEachAnnotation STRUCT "anno2">anno2<afterEachAnnotation STRUCT "anno2">::
<afterAnnotations STRUCT>
<beforeData STRUCT>{<afterStepIn STRUCT>
    <beforeFieldName STRING "fname">fname<afterFieldName STRING "fname">:<beforeData STRING>"John"<afterData STRING><beforeSeparator STRUCT>,<afterSeparator STRUCT>
    <beforeFieldName STRING "lname">lname<afterFieldName STRING "lname">:<beforeData STRING>"Smith"<afterData STRING><beforeSeparator STRUCT>,<afterSeparator STRUCT>
    <beforeFieldName DECIMAL "age">age<afterFieldName DECIMAL "age">:<beforeData DECIMAL>32.785<afterData DECIMAL>
<beforeStepOut STRUCT>}<afterData STRUCT>

Input:

(where (field (this) result) (== (field (curr) majorVersionString) "1.0"))
Output:
<beforeData SEXP>(<afterStepIn SEXP>
    <beforeData SYMBOL>where<afterData SYMBOL><beforeSeparator SEXP> <afterSeparator SEXP>
    <beforeData SEXP>(<afterStepIn SEXP>
        <beforeData SYMBOL>field<afterData SYMBOL><beforeSeparator SEXP> <afterSeparator SEXP>
        <beforeData SEXP>(<afterStepIn SEXP>
            <beforeData SYMBOL>this<afterData SYMBOL>
        <beforeStepOut SEXP>)<afterData SEXP><beforeSeparator SEXP> <afterSeparator SEXP>
        <beforeData SYMBOL>result<afterData SYMBOL>
    <beforeStepOut SEXP>)<afterData SEXP><beforeSeparator SEXP> <afterSeparator SEXP>
    <beforeData SEXP>(<afterStepIn SEXP>
        <beforeData SYMBOL>==<afterData SYMBOL><beforeSeparator SEXP> <afterSeparator SEXP>
        <beforeData SEXP>(<afterStepIn SEXP>
            <beforeData SYMBOL>field<afterData SYMBOL><beforeSeparator SEXP> <afterSeparator SEXP>
            <beforeData SEXP>(<afterStepIn SEXP>
                <beforeData SYMBOL>curr<afterData SYMBOL>
            <beforeStepOut SEXP>)<afterData SEXP><beforeSeparator SEXP> <afterSeparator SEXP>
            <beforeData SYMBOL>majorVersionString<afterData SYMBOL>
        <beforeStepOut SEXP>)<afterData SEXP><beforeSeparator SEXP> <afterSeparator SEXP>
        <beforeData STRING>"1.0"<afterData STRING>
    <beforeStepOut SEXP>)<afterData SEXP>
<beforeStepOut SEXP>)<afterData SEXP>

Input:

1 5 "Cheesecake" 3.2 true null 'baby tigers' 47e1
Output:
<beforeData INT>1<afterData INT><beforeSeparator DATAGRAM> <afterSeparator DATAGRAM>
<beforeData INT>5<afterData INT><beforeSeparator DATAGRAM> <afterSeparator DATAGRAM>
<beforeData STRING>"Cheesecake"<afterData STRING><beforeSeparator DATAGRAM> <afterSeparator DATAGRAM>
<beforeData DECIMAL>3.2<afterData DECIMAL><beforeSeparator DATAGRAM> <afterSeparator DATAGRAM>
<beforeData BOOL>true<afterData BOOL><beforeSeparator DATAGRAM> <afterSeparator DATAGRAM>
<beforeData NULL>null<afterData NULL><beforeSeparator DATAGRAM> <afterSeparator DATAGRAM>
<beforeData SYMBOL>'baby tigers'<afterData SYMBOL><beforeSeparator DATAGRAM> <afterSeparator DATAGRAM>
<beforeData FLOAT>470.0e0<afterData FLOAT>

Input:

[true, 3.4, 3d6, 2.3e8, "string", '''multi-''' '''string''',Symbol, 'qSymbol',
    {{"clob data"}}, {{YmxvYiBkYXRh}}, 1970-06-06, null.struct]
Output:
<beforeData LIST>[<afterStepIn LIST>
    <beforeData BOOL>true<afterData BOOL><beforeSeparator LIST>,<afterSeparator LIST>
    <beforeData DECIMAL>3.4<afterData DECIMAL><beforeSeparator LIST>,<afterSeparator LIST>
    <beforeData DECIMAL>3d6<afterData DECIMAL><beforeSeparator LIST>,<afterSeparator LIST>
    <beforeData FLOAT>2.3E8<afterData FLOAT><beforeSeparator LIST>,<afterSeparator LIST>
    <beforeData STRING>"string"<afterData STRING><beforeSeparator LIST>,<afterSeparator LIST>
    <beforeData STRING>"multi-string"<afterData STRING><beforeSeparator LIST>,<afterSeparator LIST>
    <beforeData SYMBOL>Symbol<afterData SYMBOL><beforeSeparator LIST>,<afterSeparator LIST>
    <beforeData SYMBOL>qSymbol<afterData SYMBOL><beforeSeparator LIST>,<afterSeparator LIST>
    <beforeData CLOB>{{"clob data"}}<afterData CLOB><beforeSeparator LIST>,<afterSeparator LIST>
    <beforeData BLOB>{{YmxvYiBkYXRh}}<afterData BLOB><beforeSeparator LIST>,<afterSeparator LIST>
    <beforeData TIMESTAMP>1970-06-06<afterData TIMESTAMP><beforeSeparator LIST>,<afterSeparator LIST>
    <beforeData NULL>null.struct<afterData NULL>
<beforeStepOut LIST>]<afterData LIST>

Field Summary

Modifier and TypeField and Description
private final _Private_FastAppendable

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public void
afterAnnotations(IonType
The type of the data whose annotations are being written.
iType
)

Callback to be executed after annotations are written.

public void
afterEachAnnotation(IonType
The type of the data whose annotation is being written.
iType
,
SymbolToken
The annotation that is being written.
annotation
)

Callback to be executed after each annotation is written.

public void
afterFieldName(IonType
The type of data in the field name's corresponding value.
iType
,
SymbolToken
The field name that is being written.
name
)

Callback to be executed after a field name is written.

public void
afterSeparator(IonType
The type of container the writer is currently in. When writing top-level values, the type is DATAGRAM.
containerType
)

Callback to be executed after a separator has been written.

public void
afterStepIn(IonType
The type of container that was just stepped into.
containerType
)

Callback to be executed after the opening delimiter of a container is written.

public void
afterValue(IonType
The type of data that was written.
iType
)

Callback to be executed after an Ion value is written.

public void
beforeAnnotations(IonType
The type of the data whose annotations are being written.
iType
)

Callback to be executed before annotations are written.

public void
beforeEachAnnotation(IonType
The type of the data whose annotation is being written.
iType
,
SymbolToken
The annotation that is being written.
annotation
)

Callback to be executed before each annotation is written.

public void
beforeFieldName(IonType
The type of data in the field name's corresponding value.
iType
,
SymbolToken
The field name that is being written.
name
)

Callback to be executed before a field name is written.

public void
beforeSeparator(IonType
The type of container the writer is currently in. When writing top-level values, the type is DATAGRAM.
containerType
)

Callback to be executed before a separator is written.

public void
beforeStepOut(IonType
The type of container that is about to be stepped out of.
containerType
)

Callback to be executed before the closing delimiter of a container is written.

public void
beforeValue(IonType
The type of data that will be written.
iType
)

Callback to be executed before an Ion value is written.

public final _Private_FastAppendable
getAppendable()

Gets the _Private_FastAppendable that IonWriter will use to write its output.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

myAppendableback to summary
private final _Private_FastAppendable myAppendable

Constructor Detail

_Private_MarkupCallbackback to summary
public _Private_MarkupCallback(_Private_FastAppendable appendable)

Method Detail

afterAnnotationsback to summary
public void afterAnnotations(IonType iType) throws IOException

Callback to be executed after annotations are written. It is executed once per set of annotations.

Parameters
iType:IonType

The type of the data whose annotations are being written.

afterEachAnnotationback to summary
public void afterEachAnnotation(IonType iType, SymbolToken annotation) throws IOException

Callback to be executed after each annotation is written. It is executed once per annotation, before the delimiter.

Parameters
iType:IonType

The type of the data whose annotation is being written.

annotation:SymbolToken

The annotation that is being written.

afterFieldNameback to summary
public void afterFieldName(IonType iType, SymbolToken name) throws IOException

Callback to be executed after a field name is written.

Parameters
iType:IonType

The type of data in the field name's corresponding value.

name:SymbolToken

The field name that is being written.

afterSeparatorback to summary
public void afterSeparator(IonType containerType) throws IOException

Callback to be executed after a separator has been written. Called just after the separator is written. It is called when inside all container types, including Sexp, and when not inside a container. It is not called after the last element in a container.

Parameters
containerType:IonType

The type of container the writer is currently in. When writing top-level values, the type is DATAGRAM.

afterStepInback to summary
public void afterStepIn(IonType containerType) throws IOException

Callback to be executed after the opening delimiter of a container is written. To write data before the opening delimiter, use beforeValue(IonType).

Parameters
containerType:IonType

The type of container that was just stepped into.

afterValueback to summary
public void afterValue(IonType iType) throws IOException

Callback to be executed after an Ion value is written. If iType is a container type, this is executed after the container's closing delimiter. To write data before the closing delimiter, use beforeStepOut(IonType).

Parameters
iType:IonType

The type of data that was written.

beforeAnnotationsback to summary
public void beforeAnnotations(IonType iType) throws IOException

Callback to be executed before annotations are written. It is executed once per set of annotations.

Parameters
iType:IonType

The type of the data whose annotations are being written.

beforeEachAnnotationback to summary
public void beforeEachAnnotation(IonType iType, SymbolToken annotation) throws IOException

Callback to be executed before each annotation is written. It is executed once per annotation.

Parameters
iType:IonType

The type of the data whose annotation is being written.

annotation:SymbolToken

The annotation that is being written.

beforeFieldNameback to summary
public void beforeFieldName(IonType iType, SymbolToken name) throws IOException

Callback to be executed before a field name is written.

Parameters
iType:IonType

The type of data in the field name's corresponding value.

name:SymbolToken

The field name that is being written.

beforeSeparatorback to summary
public void beforeSeparator(IonType containerType) throws IOException

Callback to be executed before a separator is written. Called after the data has been written, and before the separator. It is called when inside all container types, including Sexp, and when not inside a container. It is not called after the last element in a container.

Parameters
containerType:IonType

The type of container the writer is currently in. When writing top-level values, the type is DATAGRAM.

beforeStepOutback to summary
public void beforeStepOut(IonType containerType) throws IOException

Callback to be executed before the closing delimiter of a container is written. To write data after the closing delimiter, use afterValue(IonType).

Parameters
containerType:IonType

The type of container that is about to be stepped out of.

beforeValueback to summary
public void beforeValue(IonType iType) throws IOException

Callback to be executed before an Ion value is written. If iType is a container type, this is executed before the container's opening delimiter. To write data after the opening delimiter use afterStepIn(IonType).

Parameters
iType:IonType

The type of data that will be written.

getAppendableback to summary
public final _Private_FastAppendable getAppendable()

Gets the _Private_FastAppendable that IonWriter will use to write its output.