@InterfaceAudience.Public public class TerminatedWrapper<T> extends Object implements DataType<T>
DataType implementation as a terminated version of itself. This has the
useful side-effect of turning an existing DataType which is not skippable into a
skippable variant.| Modifier and Type | Field and Description |
|---|---|
protected byte[] |
term |
protected DataType<T> |
wrapped |
| Constructor and Description |
|---|
TerminatedWrapper(DataType<T> wrapped,
byte[] term)
Create a terminated version of the
wrapped. |
TerminatedWrapper(DataType<T> wrapped,
String term)
Create a terminated version of the
wrapped. |
| Modifier and Type | Method and Description |
|---|---|
T |
decode(PositionedByteRange src)
Read an instance of
T from the buffer src. |
int |
encode(PositionedByteRange dst,
T val)
Write instance
val into buffer dst. |
Class<T> |
encodedClass()
Inform consumers over what type this
DataType operates. |
int |
encodedLength(T val)
Inform consumers how long the encoded
byte[] will be. |
Order |
getOrder()
Retrieve the sort
Order imposed by this data type, or null when natural ordering is not
preserved. |
boolean |
isNullable()
Indicates whether this instance supports encoding null values.
|
boolean |
isOrderPreserving()
Indicates whether this instance writes encoded
byte[]'s which preserve the natural sort
order of the unencoded value. |
boolean |
isSkippable()
Indicates whether this instance is able to skip over it's encoded value.
|
int |
skip(PositionedByteRange src)
Skip
src's position forward over one encoded value. |
protected int |
terminatorPosition(PositionedByteRange src)
Return the position at which
term begins within src, or -1 if
term is not found. |
public TerminatedWrapper(DataType<T> wrapped, byte[] term)
wrapped.IllegalArgumentException - when term is null or empty.public TerminatedWrapper(DataType<T> wrapped, String term)
wrapped. term is converted to a
byte[] using Bytes.toBytes(String).IllegalArgumentException - when term is null or empty.public boolean isOrderPreserving()
DataTypebyte[]'s which preserve the natural sort
order of the unencoded value.isOrderPreserving in interface DataType<T>true when natural order is preserved, false otherwise.public Order getOrder()
DataTypeOrder imposed by this data type, or null when natural ordering is not
preserved. Value is either ascending or descending. Default is assumed to be
Order.ASCENDING.public boolean isNullable()
DataTypeDataTypes that support null should
treat null as comparing less than any non-null value for default sort ordering purposes.isNullable in interface DataType<T>true when null is supported, false otherwise.public boolean isSkippable()
DataTypeDataTypes that
are not skippable can only be used as the right-most field of a Struct.isSkippable in interface DataType<T>public int encodedLength(T val)
DataTypebyte[] will be.encodedLength in interface DataType<T>val - The value to check.val.apublic Class<T> encodedClass()
DataTypeDataType operates. Useful when working with bare
DataType instances.encodedClass in interface DataType<T>protected int terminatorPosition(PositionedByteRange src)
term begins within src, or -1 if
term is not found.public int skip(PositionedByteRange src)
src's position forward over one encoded value.skip in interface DataType<T>src - the buffer containing the encoded value.IllegalArgumentException - when the terminator sequence is not found.public T decode(PositionedByteRange src)
DataTypeT from the buffer src.public int encode(PositionedByteRange dst, T val)
val into buffer dst.encode in interface DataType<T>dst - the buffer containing the encoded value.val - the value to encode onto dst.IllegalArgumentException - when the encoded representation of val contains the
term sequence.Copyright © 2007–2020 The Apache Software Foundation. All rights reserved.