public class PofBufferWriter extends PofHelper implements PofWriter
PofWriter
implementation that writes POF-encoded data to a
BufferOutput
.Modifier and Type | Class and Description |
---|---|
static class |
PofBufferWriter.ReferenceLibrary
A "library" of object references and their corresponding identities in
the POF stream.
|
static class |
PofBufferWriter.UserTypeWriter
The UserTypeWriter implementation is a contextually-aware PofWriter
whose purpose is to write the properties of a value of a specified user
type.
|
PofHelper.ReadableEntrySetMap, PofHelper.WriteableEntrySetMap
Base.LoggingWriter, Base.StackFrame
Modifier and Type | Field and Description |
---|---|
protected PofContext |
m_ctx
The PofContext used by this PofBufferWriter to serialize user types.
|
protected boolean |
m_fEvolvable
Indicate if the object to be written is either Evolvable or part of an
Evolvable object.
|
protected WritingPofHandler |
m_handler
The WritingPofHandler used to write a POF stream.
|
protected WriteBuffer.BufferOutput |
m_out
The BufferOutput object that the PofBufferWriter writes to.
|
protected PofBufferWriter.ReferenceLibrary |
m_refs
If references are used, then this is the ReferenceLibrary.
|
BIGDECIMAL_ZERO, BIGINTEGER_MAX_LONG, BIGINTEGER_MIN_LONG, BINARY_EMPTY, BOOLEAN_ARRAY_EMPTY, BYTE_ARRAY_EMPTY, CHAR_ARRAY_EMPTY, COLLECTION_EMPTY, DOUBLE_ARRAY_EMPTY, FLOAT_ARRAY_EMPTY, INT_ARRAY_EMPTY, LONG_ARRAY_EMPTY, OBJECT_ARRAY_EMPTY, SHORT_ARRAY_EMPTY
LOG_ALWAYS, LOG_DEBUG, LOG_ERR, LOG_INFO, LOG_MAX, LOG_MIN, LOG_QUIET, LOG_WARN, POWER_0, POWER_G, POWER_K, POWER_M, POWER_T, UNIT_D, UNIT_H, UNIT_M, UNIT_MS, UNIT_NS, UNIT_S, UNIT_US
J_BIG_DECIMAL, J_BIG_INTEGER, J_BINARY, J_BOOLEAN, J_BOOLEAN_ARRAY, J_BYTE, J_BYTE_ARRAY, J_CHAR_ARRAY, J_CHARACTER, J_COLLECTION, J_DATE, J_DATETIME, J_DOUBLE, J_DOUBLE_ARRAY, J_FLOAT, J_FLOAT_ARRAY, J_INT_ARRAY, J_INTEGER, J_LOCAL_DATE, J_LOCAL_DATETIME, J_LOCAL_TIME, J_LONG, J_LONG_ARRAY, J_MAP, J_NULL, J_OBJECT_ARRAY, J_OFFSET_DATETIME, J_OFFSET_TIME, J_QUAD, J_RAW_DATE, J_RAW_DATETIME, J_RAW_DAY_TIME_INTERVAL, J_RAW_TIME, J_RAW_TIME_INTERVAL, J_RAW_YEAR_MONTH_INTERVAL, J_SHORT, J_SHORT_ARRAY, J_SPARSE_ARRAY, J_STRING, J_TIME, J_TIMESTAMP, J_USER_TYPE, J_ZONED_DATETIME, MAX_DECIMAL128_SCALE, MAX_DECIMAL128_UNSCALED, MAX_DECIMAL32_SCALE, MAX_DECIMAL32_UNSCALED, MAX_DECIMAL64_SCALE, MAX_DECIMAL64_UNSCALED, MIN_DECIMAL128_SCALE, MIN_DECIMAL32_SCALE, MIN_DECIMAL64_SCALE, T_ARRAY, T_BOOLEAN, T_CHAR, T_CHAR_STRING, T_COLLECTION, T_DATE, T_DATETIME, T_DAY_TIME_INTERVAL, T_DECIMAL128, T_DECIMAL32, T_DECIMAL64, T_FLOAT128, T_FLOAT32, T_FLOAT64, T_IDENTITY, T_INT128, T_INT16, T_INT32, T_INT64, T_MAP, T_OCTET, T_OCTET_STRING, T_REFERENCE, T_SPARSE_ARRAY, T_TIME, T_TIME_INTERVAL, T_UNIFORM_ARRAY, T_UNIFORM_COLLECTION, T_UNIFORM_KEYS_MAP, T_UNIFORM_MAP, T_UNIFORM_SPARSE_ARRAY, T_UNKNOWN, T_YEAR_MONTH_INTERVAL, V_BOOLEAN_FALSE, V_BOOLEAN_TRUE, V_COLLECTION_EMPTY, V_FP_NAN, V_FP_NEG_INFINITY, V_FP_POS_INFINITY, V_INT_0, V_INT_1, V_INT_10, V_INT_11, V_INT_12, V_INT_13, V_INT_14, V_INT_15, V_INT_16, V_INT_17, V_INT_18, V_INT_19, V_INT_2, V_INT_20, V_INT_21, V_INT_22, V_INT_3, V_INT_4, V_INT_5, V_INT_6, V_INT_7, V_INT_8, V_INT_9, V_INT_NEG_1, V_REFERENCE_NULL, V_STRING_ZERO_LENGTH
Constructor and Description |
---|
PofBufferWriter(WriteBuffer.BufferOutput out,
PofContext ctx)
Construct a new PofBufferWriter that will write a POF stream to the
passed BufferOutput object.
|
PofBufferWriter(WritingPofHandler handler,
PofContext ctx)
Construct a new PofBufferWriter that will write a POF stream using
the passed WritingPofHandler.
|
Modifier and Type | Method and Description |
---|---|
protected static void |
assertEqual(Class clz,
Class clzTest)
Assert that a class is equal to another class.
|
protected void |
beginProperty(int iProp)
Report that a POF property is about to be written to the POF stream.
|
PofWriter |
createNestedPofWriter(int iProp)
Obtain a PofWriter that can be used to write a set of properties into
a single property of the current user type.
|
PofWriter |
createNestedPofWriter(int iProp,
int nTypeId)
Obtain a PofWriter that can be used to write a set of properties into
a single property of the current user type.
|
void |
enableReference()
Ensure that reference support (necessary for cyclic dependencies) is
enabled.
|
protected void |
endProperty(int iProp)
Signifies the termination of the current POF property.
|
protected static Date |
fixNanos(Date dt)
|
protected WriteBuffer.BufferOutput |
getBufferOutput()
Return the BufferOutput that this PofBufferWriter writes to.
|
protected static int |
getNanos(Date dt)
Extract the nanoseconds from the date.
|
protected PofBufferWriter |
getParentWriter()
If this writer is contextually within a user type, obtain the writer
which created this writer in order to write the user type.
|
PofContext |
getPofContext()
Return the PofContext object used by this PofWriter to serialize user
types to a POF stream.
|
protected WritingPofHandler |
getPofHandler()
Return the WritingPofHandler used internally by this PofBufferWriter
to write the POF stream.
|
int |
getUserTypeId()
Determine the user type that is currently being written.
|
int |
getVersionId()
Determine the version identifier of the user type that is currently
being written.
|
protected boolean |
isEvolvable()
Determine if the object to be written is either Evolvable or part of an
Evolvable object.
|
boolean |
isReferenceEnabled()
Determine if reference support is enabled.
|
static void |
main(String[] args) |
protected void |
onException(Exception e)
Called when an unexpected exception is caught while writing to the POF
stream.
|
protected void |
setEvolvable(boolean fEvolvable)
Set the Evolvable flag to indicate if the object to be written is
Evolvable or part of an Evolvable object.
|
void |
setPofContext(PofContext ctx)
Configure the PofContext object used by this PofWriter to serialize
user types to a POF stream.
|
void |
setVersionId(int nVersionId)
Set the version identifier of the user type that is currently being
written.
|
void |
writeBigDecimal(int iProp,
BigDecimal dec)
Write a BigDecimal property to the POF stream.
|
void |
writeBigInteger(int iProp,
BigInteger n)
Write a BigInteger property to the POF stream.
|
void |
writeBinary(int iProp,
Binary bin)
Write a
Binary property to the POF stream. |
void |
writeBoolean(int iProp,
boolean f)
Write a boolean property to the POF stream.
|
protected void |
writeBoolean(int iProp,
boolean f,
boolean fReferenceable)
Write a boolean property to the POF stream.
|
void |
writeBooleanArray(int iProp,
boolean[] af)
Write a boolean[] property to the POF stream.
|
void |
writeByte(int iProp,
byte b)
Write a byte property to the POF stream.
|
protected void |
writeByte(int iProp,
byte b,
boolean fReferenceable)
Write a byte property to the POF stream.
|
void |
writeByteArray(int iProp,
byte[] ab)
Write a byte[] property to the POF stream.
|
void |
writeChar(int iProp,
char ch)
Write a char property to the POF stream.
|
protected void |
writeChar(int iProp,
char ch,
boolean fReferenceable)
Write a char property to the POF stream.
|
void |
writeCharArray(int iProp,
char[] ach)
Write a char[] property to the POF stream.
|
<T> void |
writeCollection(int iProp,
Collection<? extends T> coll)
Write a Collection property to the POF stream.
|
<T> void |
writeCollection(int iProp,
Collection<? extends T> coll,
Class<? extends T> clz)
Write a uniform Collection property to the POF stream.
|
void |
writeDate(int iProp,
Date dt)
Write a Date property to the POF stream in ISO8601 format.
|
void |
writeDate(int iProp,
LocalDate dt)
Write a LocalDate property to the POF stream in ISO8601 format.
|
void |
writeDateTime(int iProp,
Date dt)
Write a Date property to the POF stream in ISO8601 format.
|
void |
writeDateTime(int iProp,
LocalDateTime dt)
Write a LocalDateTime property to the POF stream in ISO8601 format.
|
void |
writeDateTime(int iProp,
Timestamp dt)
Write a Timestamp property to the POF stream in ISO8601
format.
|
void |
writeDateTimeWithZone(int iProp,
Date dt)
Write a Date property to the POF stream in ISO8601 format.
|
void |
writeDateTimeWithZone(int iProp,
OffsetDateTime dt)
Write a OffsetDateTime property to the POF stream in ISO8601 format.
|
void |
writeDateTimeWithZone(int iProp,
Timestamp dt)
Write a Timestamp property to the POF stream in ISO8601
format.
|
void |
writeDouble(int iProp,
double dfl)
Write a double property to the POF stream.
|
protected void |
writeDouble(int iProp,
double dfl,
boolean fReferenceable)
Write a double property to the POF stream.
|
void |
writeDoubleArray(int iProp,
double[] adfl)
Write a double[] property to the POF stream.
|
void |
writeFloat(int iProp,
float fl)
Write a float property to the POF stream.
|
protected void |
writeFloat(int iProp,
float fl,
boolean fReferenceable)
Write a float property to the POF stream.
|
void |
writeFloatArray(int iProp,
float[] afl)
Write a float[] property to the POF stream.
|
void |
writeInt(int iProp,
int n)
Write a int property to the POF stream.
|
protected void |
writeInt(int iProp,
int n,
boolean fReferenceable)
Write a int property to the POF stream.
|
void |
writeIntArray(int iProp,
int[] an)
Write a int[] property to the POF stream.
|
void |
writeLong(int iProp,
long n)
Write a long property to the POF stream.
|
protected void |
writeLong(int iProp,
long n,
boolean fReferenceable)
Write a long property to the POF stream.
|
void |
writeLongArray(int iProp,
long[] an)
Write a long[] property to the POF stream.
|
void |
writeLongArray(int iProp,
LongArray la)
Write a LongArray property to the POF stream.
|
void |
writeLongArray(int iProp,
LongArray la,
Class clz)
Write a uniform LongArray property to the POF stream.
|
<K,V> void |
writeMap(int iProp,
Map<? extends K,? extends V> map)
Write a Map property to the POF stream.
|
<K,V> void |
writeMap(int iProp,
Map<K,? extends V> map,
Class<? extends K> clzKey)
Write a uniform key Map property to the POF stream.
|
<K,V> void |
writeMap(int iProp,
Map<K,V> map,
Class<? extends K> clzKey,
Class<? extends V> clzValue)
Write a uniform Map property to the POF stream.
|
void |
writeObject(int iProp,
Object o)
Write an Object property to the POF stream.
|
<T> void |
writeObjectArray(int iProp,
T[] ao)
Write an Object[] property to the POF stream.
|
<T> void |
writeObjectArray(int iProp,
T[] ao,
Class<? extends T> clz)
Write a uniform Object[] property to the POF stream.
|
<T> void |
writeOptional(int iProp,
Optional<T> o) |
void |
writeOptionalDouble(int iProp,
OptionalDouble n) |
void |
writeOptionalInt(int iProp,
OptionalInt n) |
void |
writeOptionalLong(int iProp,
OptionalLong n) |
void |
writeRawDate(int iProp,
RawDate date)
Write a RawDate property to the POF stream.
|
void |
writeRawDateTime(int iProp,
RawDateTime dt)
Write a RawDateTime property to the POF stream.
|
void |
writeRawDayTimeInterval(int iProp,
RawDayTimeInterval interval)
Write a RawDayTimeInterval property to the POF stream.
|
void |
writeRawQuad(int iProp,
RawQuad qfl)
Write a RawQuad property to the POF stream.
|
void |
writeRawTime(int iProp,
RawTime time)
Write a RawTime property to the POF stream.
|
void |
writeRawTimeInterval(int iProp,
RawTimeInterval interval)
Write a RawTimeInterval property to the POF stream.
|
void |
writeRawYearMonthInterval(int iProp,
RawYearMonthInterval interval)
Write a RawYearMonthInterval property to the POF stream.
|
void |
writeRemainder(Binary binProps)
Write the remaining properties to the POF stream, terminating the
writing of the current user type.
|
void |
writeShort(int iProp,
short n)
Write a short property to the POF stream.
|
protected void |
writeShort(int iProp,
short n,
boolean fReferenceable)
Write a short property to the POF stream.
|
void |
writeShortArray(int iProp,
short[] an)
Write a short[] property to the POF stream.
|
void |
writeString(int iProp,
String s)
Write a String property to the POF stream.
|
void |
writeTime(int iProp,
Date dt)
Write a Date property to the POF stream in ISO8601 format.
|
void |
writeTime(int iProp,
LocalTime dt)
Write a LocalTime property to the POF stream in ISO8601 format.
|
void |
writeTime(int iProp,
Timestamp dt)
Write a Timestamp property to the POF stream in ISO8601
format.
|
void |
writeTimeWithZone(int iProp,
Date dt)
Write a Date property to the POF stream in ISO8601 format.
|
void |
writeTimeWithZone(int iProp,
OffsetTime dt)
Write a OffsetTime property to the POF stream in ISO8601 format.
|
void |
writeTimeWithZone(int iProp,
Timestamp dt)
Write a Timestamp property to the POF stream in ISO8601
format.
|
protected void |
writeUserType(int iProp,
Object o)
Write a user-type to the POF stream.
|
calcDecimalSize, checkDate, checkDayTimeInterval, checkDecimalRange, checkElementCount, checkReferenceRange, checkTime, checkTimeInterval, checkTimeZone, checkType, checkYearMonthInterval, convertNumber, convertToDate, decodeTinyInt, encodeTinyInt, formatDate, formatTime, formatTime, getJavaTypeId, getPofTypeId, isIntrinsicPofType, readAsBigDecimal, readAsBigInteger, readAsChar, readAsDouble, readAsFloat, readAsInt, readAsLong, readAsQuad, readBigDecimal, readBigInteger, readChar, readLocalDate, readLocalDateTime, readLocalTime, readOffsetDateTime, readOffsetTime, readQuad, readRawDate, readRawTime, resizeArray, skipPackedInts, skipUniformValue, skipValue, writeBigDecimal, writeBigInteger, writeDate, writeTime
azzert, azzert, azzert, azzertFailed, breakLines, breakLines, capitalize, checkNotEmpty, checkNotNull, checkRange, computeSafeWaitTime, decimalValue, dup, dup, ensureBigDecimal, ensureClassLoader, ensureRuntimeException, ensureRuntimeException, equals, equalsDeep, err, err, err, err, err, escape, formatDateTime, getCallerStackFrame, getCommonMonitor, getCommonMonitor, getCommonMonitor, getContextClassLoader, getContextClassLoader, getDeepMessage, getErr, getLastSafeTimeMillis, getLog, getMaxDecDigits, getMaxHexDigits, getOriginalException, getOut, getRandom, getRandomBinary, getRandomBinary, getRandomString, getSafeTimeMillis, getStackFrame, getStackFrames, getStackTrace, getStackTrace, getStackTrace, getThreadFactory, getTimeZone, getUpTimeMillis, hashCode, hexValue, indentString, indentString, isDecimal, isHex, isLogEcho, isOctal, log, log, log, log, log, makeInteger, makeLong, makeThread, mergeArray, mergeBooleanArray, mergeByteArray, mergeCharArray, mergeDoubleArray, mergeFloatArray, mergeIntArray, mergeLongArray, mod, mod, octalValue, out, out, out, out, out, pad, parseBandwidth, parseBandwidth, parseDelimitedString, parseHex, parseHex, parseMemorySize, parseMemorySize, parsePercentage, parseTime, parseTime, parseTimeNanos, parseTimeNanos, printStackTrace, randomize, randomize, randomize, randomize, read, read, read, read, read, read, read, replace, setErr, setLog, setLogEcho, setOut, sleep, toBandwidthString, toBandwidthString, toCharEscape, toCrc, toCrc, toCrc, toCrc, toCrc, toDecString, toDelimitedString, toDelimitedString, toDelimitedString, toDelimitedString, toHex, toHex, toHexDump, toHexEscape, toHexEscape, toHexEscape, toHexEscape, toHexString, toMemorySizeString, toMemorySizeString, toQuotedCharEscape, toQuotedStringEscape, toSqlString, toString, toString, toStringEscape, toUnicodeEscape, trace, trace, trace, trace, trace, trace, trace, trace, trace, truncateString, truncateString, wait
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
writeDateTimeWithZone
protected WriteBuffer.BufferOutput m_out
protected PofContext m_ctx
protected boolean m_fEvolvable
protected WritingPofHandler m_handler
protected PofBufferWriter.ReferenceLibrary m_refs
public PofBufferWriter(WriteBuffer.BufferOutput out, PofContext ctx)
out
- the BufferOutput object to write to; must not be nullctx
- the PofContext used by the new PofBufferWriter to
serialize user types; must not be nullpublic PofBufferWriter(WritingPofHandler handler, PofContext ctx)
handler
- the WritingPofHandler used for writing; must not be nullctx
- the PofContext used by the new PofBufferWriter to
serialize user types; must not be nullpublic void writeBoolean(int iProp, boolean f) throws IOException
writeBoolean
in interface PofWriter
iProp
- the property indexf
- the boolean property value to writeIOException
- if an I/O error occursprotected void writeBoolean(int iProp, boolean f, boolean fReferenceable) throws IOException
iProp
- the property indexf
- the boolean property value to writefReferenceable
- true if the property value is a referenceable
typeIllegalArgumentException
- if the property index is invalid, or
is less than or equal to the index of the previous property
written to the POF streamIOException
- if an I/O error occurspublic void writeByte(int iProp, byte b) throws IOException
writeByte
in interface PofWriter
iProp
- the property indexb
- the byte property value to writeIOException
- if an I/O error occursprotected void writeByte(int iProp, byte b, boolean fReferenceable) throws IOException
iProp
- the property indexb
- the byte property value to writefReferenceable
- true if the property value is a referenceable
typeIllegalArgumentException
- if the property index is invalid, or
is less than or equal to the index of the previous property
written to the POF streamIOException
- if an I/O error occurspublic void writeChar(int iProp, char ch) throws IOException
writeChar
in interface PofWriter
iProp
- the property indexch
- the char property value to writeIOException
- if an I/O error occursprotected void writeChar(int iProp, char ch, boolean fReferenceable) throws IOException
iProp
- the property indexch
- the char property value to writefReferenceable
- true if the property value is a referenceable
typeIllegalArgumentException
- if the property index is invalid, or
is less than or equal to the index of the previous property
written to the POF streamIOException
- if an I/O error occurspublic void writeShort(int iProp, short n) throws IOException
writeShort
in interface PofWriter
iProp
- the property indexn
- the short property value to writeIOException
- if an I/O error occursprotected void writeShort(int iProp, short n, boolean fReferenceable) throws IOException
iProp
- the property indexn
- the short property value to writefReferenceable
- true if the property value is a referenceable
typeIllegalArgumentException
- if the property index is invalid, or
is less than or equal to the index of the previous property
written to the POF streamIOException
- if an I/O error occurspublic void writeInt(int iProp, int n) throws IOException
writeInt
in interface PofWriter
iProp
- the property indexn
- the int property value to writeIOException
- if an I/O error occursprotected void writeInt(int iProp, int n, boolean fReferenceable) throws IOException
iProp
- the property indexn
- the int property value to writefReferenceable
- true if the property value is a referenceable
typeIllegalArgumentException
- if the property index is invalid, or
is less than or equal to the index of the previous property
written to the POF streamIOException
- if an I/O error occurspublic void writeLong(int iProp, long n) throws IOException
writeLong
in interface PofWriter
iProp
- the property indexn
- the long property value to writeIOException
- if an I/O error occursprotected void writeLong(int iProp, long n, boolean fReferenceable) throws IOException
iProp
- the property indexn
- the long property value to writefReferenceable
- true if the property value is a referenceable
typeIllegalArgumentException
- if the property index is invalid, or
is less than or equal to the index of the previous property
written to the POF streamIOException
- if an I/O error occurspublic void writeFloat(int iProp, float fl) throws IOException
writeFloat
in interface PofWriter
iProp
- the property indexfl
- the float property value to writeIOException
- if an I/O error occursprotected void writeFloat(int iProp, float fl, boolean fReferenceable) throws IOException
iProp
- the property indexfl
- the float property value to writefReferenceable
- true if the property value is a referenceable
typeIllegalArgumentException
- if the property index is invalid, or
is less than or equal to the index of the previous property
written to the POF streamIOException
- if an I/O error occurspublic void writeDouble(int iProp, double dfl) throws IOException
writeDouble
in interface PofWriter
iProp
- the property indexdfl
- the double property value to writeIOException
- if an I/O error occursprotected void writeDouble(int iProp, double dfl, boolean fReferenceable) throws IOException
iProp
- the property indexdfl
- the double property value to writefReferenceable
- true if the property value is a referenceable
typeIllegalArgumentException
- if the property index is invalid, or
is less than or equal to the index of the previous property
written to the POF streamIOException
- if an I/O error occurspublic void writeBooleanArray(int iProp, boolean[] af) throws IOException
writeBooleanArray
in interface PofWriter
iProp
- the property indexaf
- the boolean[] property value to writeIOException
- if an I/O error occurspublic void writeByteArray(int iProp, byte[] ab) throws IOException
writeByteArray
in interface PofWriter
iProp
- the property indexab
- the byte[] property value to writeIOException
- if an I/O error occurspublic void writeCharArray(int iProp, char[] ach) throws IOException
writeCharArray
in interface PofWriter
iProp
- the property indexach
- the char[] property value to writeIOException
- if an I/O error occurspublic void writeShortArray(int iProp, short[] an) throws IOException
writeShortArray
in interface PofWriter
iProp
- the property indexan
- the short[] property value to writeIOException
- if an I/O error occurspublic void writeIntArray(int iProp, int[] an) throws IOException
writeIntArray
in interface PofWriter
iProp
- the property indexan
- the int[] property value to writeIOException
- if an I/O error occurspublic void writeLongArray(int iProp, long[] an) throws IOException
writeLongArray
in interface PofWriter
iProp
- the property indexan
- the long[] property value to writeIOException
- if an I/O error occurspublic void writeFloatArray(int iProp, float[] afl) throws IOException
writeFloatArray
in interface PofWriter
iProp
- the property indexafl
- the float[] property value to writeIOException
- if an I/O error occurspublic void writeDoubleArray(int iProp, double[] adfl) throws IOException
writeDoubleArray
in interface PofWriter
iProp
- the property indexadfl
- the double[] property value to writeIOException
- if an I/O error occurspublic void writeBigInteger(int iProp, BigInteger n) throws IOException
writeBigInteger
in interface PofWriter
iProp
- the property indexn
- the BigInteger property value to writeIOException
- if an I/O error occurspublic void writeRawQuad(int iProp, RawQuad qfl) throws IOException
writeRawQuad
in interface PofWriter
iProp
- the property indexqfl
- the RawQuad property value to writeIOException
- if an I/O error occurspublic void writeBigDecimal(int iProp, BigDecimal dec) throws IOException
writeBigDecimal
in interface PofWriter
iProp
- the property indexdec
- the BigDecimal property value to writeIOException
- if an I/O error occurspublic void writeBinary(int iProp, Binary bin) throws IOException
Binary
property to the POF stream.writeBinary
in interface PofWriter
iProp
- the property indexbin
- the Binary property value to writeIOException
- if an I/O error occurspublic void writeString(int iProp, String s) throws IOException
writeString
in interface PofWriter
iProp
- the property indexs
- the String property value to writeIOException
- if an I/O error occurspublic void writeDate(int iProp, Date dt) throws IOException
This method encodes the year, month and day information of the specified Date object. No time or timezone information is encoded.
writeDate
in interface PofWriter
iProp
- the property indexdt
- the Date property value to write in ISO8601
formatIOException
- if an I/O error occurspublic void writeDate(int iProp, LocalDate dt) throws IOException
PofWriter
This method encodes the year, month and day information of the specified LocalDate object. No time or timezone information is encoded.
writeDate
in interface PofWriter
iProp
- the property indexdt
- the LocalDate property value to write in ISO8601
formatIOException
- if an I/O error occurspublic void writeDateTime(int iProp, Date dt) throws IOException
This method encodes the year, month, day, hour, minute, second and millisecond information of the specified Date object. No timezone information is encoded.
writeDateTime
in interface PofWriter
iProp
- the property indexdt
- the Date property value to write in ISO8601
formatIOException
- if an I/O error occurspublic void writeDateTime(int iProp, LocalDateTime dt) throws IOException
PofWriter
This method encodes the year, month, day, hour, minute, second and millisecond information of the specified LocalDateTime object. No timezone information is encoded.
writeDateTime
in interface PofWriter
iProp
- the property indexdt
- the LocalDateTime property value to write in ISO8601
formatIOException
- if an I/O error occurspublic void writeDateTime(int iProp, Timestamp dt) throws IOException
This method encodes the year, month, day, hour, minute, second, millisecond and nanosecond information of the specified Timestamp object. No timezone information is encoded.
writeDateTime
in interface PofWriter
iProp
- the property indexdt
- the Timestamp property value to write in ISO8601
formatIOException
- if an I/O error occurspublic void writeDateTimeWithZone(int iProp, Date dt) throws IOException
This method encodes the year, month, day, hour, minute, second, millisecond and timezone information of the specified Date object.
writeDateTimeWithZone
in interface PofWriter
iProp
- the property indexdt
- the Date property value to write in ISO8601
formatIOException
- if an I/O error occurspublic void writeDateTimeWithZone(int iProp, OffsetDateTime dt) throws IOException
PofWriter
This method encodes the year, month, day, hour, minute, second, millisecond and timezone information of the specified OffsetDateTime object.
writeDateTimeWithZone
in interface PofWriter
iProp
- the property indexdt
- the OffsetDateTime property value to write in ISO8601
formatIOException
- if an I/O error occurspublic void writeDateTimeWithZone(int iProp, Timestamp dt) throws IOException
This method encodes the year, month, day, hour, minute, second, millisecond, nanosecond and timezone information of the specified Timestamp object.
writeDateTimeWithZone
in interface PofWriter
iProp
- the property indexdt
- the Timestamp property value to write in ISO8601
formatIOException
- if an I/O error occurspublic void writeTime(int iProp, Date dt) throws IOException
This method encodes the hour, minute, second and millisecond information of the specified Date object. No year, month, day or timezone information is encoded.
writeTime
in interface PofWriter
iProp
- the property indexdt
- the Date property value to write in ISO8601
formatIOException
- if an I/O error occurspublic void writeTime(int iProp, LocalTime dt) throws IOException
PofWriter
This method encodes the hour, minute, second and millisecond information of the specified LocalTime object. No year, month, day or timezone information is encoded.
writeTime
in interface PofWriter
iProp
- the property indexdt
- the LocalTime property value to write in ISO8601
formatIOException
- if an I/O error occurspublic void writeTime(int iProp, Timestamp dt) throws IOException
This method encodes the hour, minute, second, millisecond and nanosecond information of the specified Timestamp object.
writeTime
in interface PofWriter
iProp
- the property indexdt
- the Timestamp property value to write in ISO8601
formatIOException
- if an I/O error occurspublic void writeTimeWithZone(int iProp, Date dt) throws IOException
This method encodes the hour, minute, second, millisecond and timezone information of the specified Date object. No year, month or day information is encoded.
writeTimeWithZone
in interface PofWriter
iProp
- the property indexdt
- the Date property value to write in ISO8601
formatIOException
- if an I/O error occurspublic void writeTimeWithZone(int iProp, OffsetTime dt) throws IOException
PofWriter
This method encodes the hour, minute, second, millisecond and timezone information of the specified OffsetTime object. No year, month or day information is encoded.
writeTimeWithZone
in interface PofWriter
iProp
- the property indexdt
- the OffsetTime property value to write in ISO8601
formatIOException
- if an I/O error occurspublic void writeTimeWithZone(int iProp, Timestamp dt) throws IOException
This method encodes the hour, minute, second, millisecond, nanosecond and timezone information of the specified Timestamp object. No year, month or day information is encoded.
writeTimeWithZone
in interface PofWriter
iProp
- the property indexdt
- the Timestamp property value to write in ISO8601
formatIOException
- if an I/O error occurspublic void writeRawDate(int iProp, RawDate date) throws IOException
writeRawDate
in interface PofWriter
iProp
- the property indexdate
- the RawDate property value to writeIOException
- if an I/O error occurspublic void writeRawTime(int iProp, RawTime time) throws IOException
writeRawTime
in interface PofWriter
iProp
- the property indextime
- the RawTime property value to writeIOException
- if an I/O error occurspublic void writeRawDateTime(int iProp, RawDateTime dt) throws IOException
writeRawDateTime
in interface PofWriter
iProp
- the property indexdt
- the RawDateTime property value to writeIOException
- if an I/O error occurspublic void writeRawYearMonthInterval(int iProp, RawYearMonthInterval interval) throws IOException
writeRawYearMonthInterval
in interface PofWriter
iProp
- the property indexinterval
- the RawYearMonthInterval property value to
writeIOException
- if an I/O error occurspublic void writeRawTimeInterval(int iProp, RawTimeInterval interval) throws IOException
writeRawTimeInterval
in interface PofWriter
iProp
- the property indexinterval
- the RawTimeInterval property value to writeIOException
- if an I/O error occurspublic void writeRawDayTimeInterval(int iProp, RawDayTimeInterval interval) throws IOException
writeRawDayTimeInterval
in interface PofWriter
iProp
- the property indexinterval
- the RawDayTimeInterval property value to
writeIOException
- if an I/O error occurspublic void writeObject(int iProp, Object o) throws IOException
The given object must be an instance of one of the following:
RawQuad
Binary
RawDate
RawTime
RawDateTime
RawYearMonthInterval
RawTimeInterval
RawDayTimeInterval
LongArray
PortableObject
Otherwise, a PofSerializer
for the object must be obtainable
from the PofContext
associated with this PofWriter.
writeObject
in interface PofWriter
iProp
- the property indexo
- the Object property to writeIOException
- if an I/O error occursprotected void writeUserType(int iProp, Object o) throws IOException
iProp
- the property indexo
- the object to writeIOException
- if an I/O error occurspublic <T> void writeObjectArray(int iProp, T[] ao) throws IOException
Each element of the given array must be an instance (or an array of instances) of one of the following:
RawQuad
Binary
RawDate
RawTime
RawDateTime
RawYearMonthInterval
RawTimeInterval
RawDayTimeInterval
LongArray
PortableObject
Otherwise, a PofSerializer
for each element of the array must
be obtainable from the PofContext
associated with this
PofWriter.
writeObjectArray
in interface PofWriter
T
- type of the elements in the arrayiProp
- the property indexao
- the Object[] property to writeIOException
- if an I/O error occurspublic <T> void writeObjectArray(int iProp, T[] ao, Class<? extends T> clz) throws IOException
Each element of the given array must be an instance (or an array of instances) of one of the following:
RawQuad
Binary
RawDate
RawTime
RawDateTime
RawYearMonthInterval
RawTimeInterval
RawDayTimeInterval
LongArray
PortableObject
Otherwise, a PofSerializer
for each element of the array must
be obtainable from the PofContext
associated with this
PofWriter.
Additionally, the type of each element must be equal to the specified class.
writeObjectArray
in interface PofWriter
T
- the type of the elements in the arrayiProp
- the property indexao
- the Object[] property to writeclz
- the class of all elements; must not be nullIOException
- if an I/O error occurspublic <T> void writeCollection(int iProp, Collection<? extends T> coll) throws IOException
Each element of the given Collection must be an instance (or an array of instances) of one of the following:
RawQuad
Binary
RawDate
RawTime
RawDateTime
RawYearMonthInterval
RawTimeInterval
RawDayTimeInterval
LongArray
PortableObject
Otherwise, a PofSerializer
for each element of the Collection
must be obtainable from the PofContext
associated with this
PofWriter.
writeCollection
in interface PofWriter
T
- the type of elements in CollectioniProp
- the property indexcoll
- the Collection property to writeIOException
- if an I/O error occurspublic <T> void writeCollection(int iProp, Collection<? extends T> coll, Class<? extends T> clz) throws IOException
Each element of the given Collection must be an instance (or an array of instances) of one of the following:
RawQuad
Binary
RawDate
RawTime
RawDateTime
RawYearMonthInterval
RawTimeInterval
RawDayTimeInterval
LongArray
PortableObject
Otherwise, a PofSerializer
for each element of the Collection
must be obtainable from the PofContext
associated with this
PofWriter.
Additionally, the type of each element must be equal to the specified class.
writeCollection
in interface PofWriter
T
- the type of elements in the CollectioniProp
- the property indexcoll
- the Collection property to writeclz
- the class of all elements; must not be nullIOException
- if an I/O error occurspublic void writeLongArray(int iProp, LongArray la) throws IOException
PofWriter
Each element of the given LongArray must be an instance (or an array of instances) of one of the following:
RawQuad
Binary
RawDate
RawTime
RawDateTime
RawYearMonthInterval
RawTimeInterval
RawDayTimeInterval
LongArray
PortableObject
Otherwise, a PofSerializer
for each element of the LongArray
must be obtainable from the PofContext
associated with this
PofWriter.
writeLongArray
in interface PofWriter
iProp
- the property indexla
- the LongArray property to writeIOException
- if an I/O error occurspublic void writeLongArray(int iProp, LongArray la, Class clz) throws IOException
Each element of the given LongArray must be an instance (or an array of instances) of one of the following:
RawQuad
Binary
RawDate
RawTime
RawDateTime
RawYearMonthInterval
RawTimeInterval
RawDayTimeInterval
LongArray
PortableObject
Otherwise, a PofSerializer
for each element of the LongArray
must be obtainable from the PofContext
associated with this
PofWriter.
Additionally, the type of each element must be equal to the specified class.
writeLongArray
in interface PofWriter
iProp
- the property indexla
- the LongArray property to writeclz
- the class of all elements; must not be nullIOException
- if an I/O error occurspublic <K,V> void writeMap(int iProp, Map<? extends K,? extends V> map) throws IOException
Each key and value of the given Map must be an instance (or an array of instances) of one of the following:
RawQuad
Binary
RawDate
RawTime
RawDateTime
RawYearMonthInterval
RawTimeInterval
RawDayTimeInterval
LongArray
PortableObject
Otherwise, a PofSerializer
for each key and value of the Map
must be obtainable from the PofContext
associated with this
PofWriter.
writeMap
in interface PofWriter
K
- the key typeV
- the value typeiProp
- the property indexmap
- the Map property to writeIOException
- if an I/O error occurspublic <K,V> void writeMap(int iProp, Map<K,? extends V> map, Class<? extends K> clzKey) throws IOException
Each key and value of the given Map must be an instance (or an array of instances) of one of the following:
RawQuad
Binary
RawDate
RawTime
RawDateTime
RawYearMonthInterval
RawTimeInterval
RawDayTimeInterval
LongArray
PortableObject
Otherwise, a PofSerializer
for each key and value of the Map
must be obtainable from the PofContext
associated with this
PofWriter.
Additionally, the type of each key must be equal to the specified class.
writeMap
in interface PofWriter
K
- the key typeV
- the value typeiProp
- the property indexmap
- the Map property to writeclzKey
- the class of all keys; must not be nullIOException
- if an I/O error occurspublic <K,V> void writeMap(int iProp, Map<K,V> map, Class<? extends K> clzKey, Class<? extends V> clzValue) throws IOException
Each key and value of the given Map must be an instance (or an array of instances) of one of the following:
RawQuad
Binary
RawDate
RawTime
RawDateTime
RawYearMonthInterval
RawTimeInterval
RawDayTimeInterval
LongArray
PortableObject
Otherwise, a PofSerializer
for each key and value of the Map
must be obtainable from the PofContext
associated with this
PofWriter.
Additionally, the type of each key and value must be equal to the specified key class and value class respectively.
writeMap
in interface PofWriter
K
- the key typeV
- the value typeiProp
- the property indexmap
- the Map property to writeclzKey
- the class of all keys; must not be nullclzValue
- the class of all values; must not be nullIOException
- if an I/O error occurspublic void writeOptionalInt(int iProp, OptionalInt n) throws IOException
IOException
public void writeOptionalLong(int iProp, OptionalLong n) throws IOException
IOException
public void writeOptionalDouble(int iProp, OptionalDouble n) throws IOException
IOException
public <T> void writeOptional(int iProp, Optional<T> o) throws IOException
IOException
public PofContext getPofContext()
getPofContext
in interface PofWriter
public void setPofContext(PofContext ctx)
Note: this is an advanced method that should be used with care. For example, if this method is being used to switch to another PofContext mid-POF stream, it is important to eventually restore the original PofContext. For example:
PofContext ctxOrig = writer.getPofContext(); try { // switch to another PofContext PofContext ctxNew = ...; writer.setContext(ctxNew); // output POF data using the writer } finally { // restore the original PofContext writer.setPofContext(ctxOrig); }
setPofContext
in interface PofWriter
ctx
- the new PofContext; must not be nullpublic int getUserTypeId()
getUserTypeId
in interface PofWriter
public int getVersionId()
getVersionId
in interface PofWriter
public void setVersionId(int nVersionId)
setVersionId
in interface PofWriter
nVersionId
- the user type identifier; must be non-negativepublic PofWriter createNestedPofWriter(int iProp) throws IOException
createNestedPofWriter
in interface PofWriter
iProp
- the property indexIOException
- if an I/O error occurspublic PofWriter createNestedPofWriter(int iProp, int nTypeId) throws IOException
createNestedPofWriter
in interface PofWriter
iProp
- the property indexnTypeId
- the type identifier of the nested propertyIOException
- if an I/O error occurspublic void writeRemainder(Binary binProps) throws IOException
Calling this method terminates the current user type by writing a -1 to the POF stream after the last indexed property. Subsequent calls to the various writeXYZ methods of this interface will fail after this method is called.
writeRemainder
in interface PofWriter
binProps
- a Binary object containing zero or more indexed
properties in binary POF encoded form; may be nullIOException
- if an I/O error occursprotected PofBufferWriter getParentWriter()
protected void beginProperty(int iProp) throws IOException
This method call will be followed by one or more separate calls to a
"write" method and the property extent will then be terminated by a
call to endProperty(int)
.
iProp
- the index of the property being writtenIllegalArgumentException
- if the property index is invalid, or
is less than or equal to the index of the previous property
written to the POF streamIOException
- if an I/O error occursprotected void endProperty(int iProp)
iProp
- the index of the current propertyprotected void onException(Exception e) throws IOException
If the given exception wraps an IOException, the IOException is unwrapped and rethrown; otherwise the given exception is rethrown.
e
- the exceptionIOException
- the wrapped IOException, if the given exception is
a wrapped IOExceptionprotected static Date fixNanos(Date dt)
Date
which is suitable for POF serialization
Similar to Timestamp
, POF requires that dates have positive
sub-second values.
dt
- the Date object to checkprotected static int getNanos(Date dt)
dt
- the Date object to extract the nanoseconds fromprotected static void assertEqual(Class clz, Class clzTest)
clz
- the expected class; must not be nullclzTest
- the class to test for equality; must not be nullIllegalArgumentException
- if the second class is not equal to
the firstprotected WriteBuffer.BufferOutput getBufferOutput()
protected WritingPofHandler getPofHandler()
public void enableReference()
public boolean isReferenceEnabled()
protected boolean isEvolvable()
protected void setEvolvable(boolean fEvolvable)
fEvolvable
- true iff the object to be written is Evolvablepublic static void main(String[] args)