public class ZonedDateTimeCodec extends TypeCodec.AbstractTupleCodec<ZonedDateTime>
TypeCodec that maps
ZonedDateTime to CQL tuple<timestamp,varchar>,
providing a pattern for maintaining timezone information in
Cassandra.
Since Cassandra's timestamp type preserves only
milliseconds since epoch, any timezone information
would normally be lost. By using a
tuple<timestamp,varchar> a timezone ID can be
persisted in the varchar field such that when the
value is deserialized the timezone is
preserved.
IMPORTANT: this codec's format method formats
timestamps using an ISO-8601 format that includes milliseconds.
This format is incompatible with Cassandra versions < 2.0.9.TypeCodec.AbstractCollectionCodec<E,C extends Collection<E>>, TypeCodec.AbstractMapCodec<K,V>, TypeCodec.AbstractTupleCodec<T>, TypeCodec.AbstractUDTCodec<T>, TypeCodec.PrimitiveBooleanCodec, TypeCodec.PrimitiveByteCodec, TypeCodec.PrimitiveDoubleCodec, TypeCodec.PrimitiveFloatCodec, TypeCodec.PrimitiveIntCodec, TypeCodec.PrimitiveLongCodec, TypeCodec.PrimitiveShortCodecdefinition| Constructor and Description |
|---|
ZonedDateTimeCodec(TupleType tupleType) |
| Modifier and Type | Method and Description |
|---|---|
protected ZonedDateTime |
deserializeAndSetField(ByteBuffer input,
ZonedDateTime target,
int index,
ProtocolVersion protocolVersion)
Deserialize an individual field and set it on an object, as part of deserializing the whole
object from a CQL tuple (see
TypeCodec.AbstractTupleCodec.deserialize(ByteBuffer, ProtocolVersion)). |
protected String |
formatField(ZonedDateTime value,
int index)
Format an individual field in an object as a CQL literal, as part of formatting the whole object
(see
TypeCodec.AbstractTupleCodec.format(Object)). |
protected ZonedDateTime |
newInstance()
Return a new instance of
T. |
protected ZonedDateTime |
parseAndSetField(String input,
ZonedDateTime target,
int index)
Parse an individual field and set it on an object, as part of parsing the whole object
(see
TypeCodec.AbstractTupleCodec.parse(String)). |
protected ByteBuffer |
serializeField(ZonedDateTime source,
int index,
ProtocolVersion protocolVersion)
Serialize an individual field in an object, as part of serializing the whole object to a CQL
tuple (see
TypeCodec.AbstractTupleCodec.serialize(Object, ProtocolVersion)). |
accepts, deserialize, format, parse, serializeaccepts, accepts, accepts, ascii, bigint, blob, cboolean, cdouble, cfloat, cint, counter, custom, date, decimal, getCqlType, getJavaType, inet, list, map, set, smallInt, time, timestamp, timeUUID, tinyInt, toString, tuple, userType, uuid, varchar, varintpublic ZonedDateTimeCodec(TupleType tupleType)
protected ZonedDateTime newInstance()
TypeCodec.AbstractTupleCodecT.newInstance in class TypeCodec.AbstractTupleCodec<ZonedDateTime>T.protected ByteBuffer serializeField(ZonedDateTime source, int index, ProtocolVersion protocolVersion)
TypeCodec.AbstractTupleCodecTypeCodec.AbstractTupleCodec.serialize(Object, ProtocolVersion)).serializeField in class TypeCodec.AbstractTupleCodec<ZonedDateTime>source - The object to read the field from.index - The index of the field.protocolVersion - The protocol version to use.null if that field should be ignored.protected ZonedDateTime deserializeAndSetField(ByteBuffer input, ZonedDateTime target, int index, ProtocolVersion protocolVersion)
TypeCodec.AbstractTupleCodecTypeCodec.AbstractTupleCodec.deserialize(ByteBuffer, ProtocolVersion)).deserializeAndSetField in class TypeCodec.AbstractTupleCodec<ZonedDateTime>input - The serialized form of the field.target - The object to set the field on.index - The index of the field.protocolVersion - The protocol version to use.target, but if you're dealing
with immutable types you'll need to return a different instance.protected String formatField(ZonedDateTime value, int index)
TypeCodec.AbstractTupleCodecTypeCodec.AbstractTupleCodec.format(Object)).formatField in class TypeCodec.AbstractTupleCodec<ZonedDateTime>value - The object to read the field from.index - The index of the field.protected ZonedDateTime parseAndSetField(String input, ZonedDateTime target, int index)
TypeCodec.AbstractTupleCodecTypeCodec.AbstractTupleCodec.parse(String)).parseAndSetField in class TypeCodec.AbstractTupleCodec<ZonedDateTime>input - The String to parse the field from.target - The value to write to.index - The index of the field.target, but if you're dealing
with immutable types you'll need to return a different instance.