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.PrimitiveShortCodec
definition
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, serialize
accepts, 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, varint
public ZonedDateTimeCodec(TupleType tupleType)
protected ZonedDateTime newInstance()
TypeCodec.AbstractTupleCodec
T
.newInstance
in class TypeCodec.AbstractTupleCodec<ZonedDateTime>
T
.protected ByteBuffer serializeField(ZonedDateTime source, int index, ProtocolVersion protocolVersion)
TypeCodec.AbstractTupleCodec
TypeCodec.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.AbstractTupleCodec
TypeCodec.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.AbstractTupleCodec
TypeCodec.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.AbstractTupleCodec
TypeCodec.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.