org.apache.hadoop.hbase.types
Class PBType<T extends com.google.protobuf.Message>

java.lang.Object
  extended by org.apache.hadoop.hbase.types.PBType<T>
All Implemented Interfaces:
DataType<T>
Direct Known Subclasses:
PBCell

@InterfaceAudience.Public
@InterfaceStability.Evolving
public abstract class PBType<T extends com.google.protobuf.Message>
extends Object
implements DataType<T>

A base-class for DataType implementations backed by protobuf. See PBKeyValue in hbase-examples module.


Constructor Summary
PBType()
           
 
Method Summary
 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.
static com.google.protobuf.CodedInputStream inputStreamFromByteRange(PositionedByteRange src)
          Create a CodedInputStream from a PositionedByteRange.
 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.
static com.google.protobuf.CodedOutputStream outputStreamFromByteRange(PositionedByteRange dst)
          Create a CodedOutputStream from a PositionedByteRange.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.apache.hadoop.hbase.types.DataType
decode, encode, encodedClass, skip
 

Constructor Detail

PBType

public PBType()
Method Detail

isOrderPreserving

public boolean isOrderPreserving()
Description copied from interface: DataType
Indicates whether this instance writes encoded byte[]'s which preserve the natural sort order of the unencoded value.

Specified by:
isOrderPreserving in interface DataType<T extends com.google.protobuf.Message>
Returns:
true when natural order is preserved, false otherwise.

getOrder

public Order getOrder()
Description copied from interface: DataType
Retrieve the sort Order 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.

Specified by:
getOrder in interface DataType<T extends com.google.protobuf.Message>

isNullable

public boolean isNullable()
Description copied from interface: DataType
Indicates whether this instance supports encoding null values. This depends on the implementation details of the encoding format. All DataTypes that support null should treat null as comparing less than any non-null value for default sort ordering purposes.

Specified by:
isNullable in interface DataType<T extends com.google.protobuf.Message>
Returns:
true when null is supported, false otherwise.

isSkippable

public boolean isSkippable()
Description copied from interface: DataType
Indicates whether this instance is able to skip over it's encoded value. DataTypes that are not skippable can only be used as the right-most field of a Struct.

Specified by:
isSkippable in interface DataType<T extends com.google.protobuf.Message>

encodedLength

public int encodedLength(T val)
Description copied from interface: DataType
Inform consumers how long the encoded byte[] will be.

Specified by:
encodedLength in interface DataType<T extends com.google.protobuf.Message>
Parameters:
val - The value to check.
Returns:
the number of bytes required to encode val.a

inputStreamFromByteRange

public static com.google.protobuf.CodedInputStream inputStreamFromByteRange(PositionedByteRange src)
Create a CodedInputStream from a PositionedByteRange. Be sure to update src's position after consuming from the stream.

For example:

 Foo.Builder builder = ...
 CodedInputStream is = inputStreamFromByteRange(src);
 Foo ret = builder.mergeFrom(is).build();
 src.setPosition(src.getPosition() + is.getTotalBytesRead());
 


outputStreamFromByteRange

public static com.google.protobuf.CodedOutputStream outputStreamFromByteRange(PositionedByteRange dst)
Create a CodedOutputStream from a PositionedByteRange. Be sure to update dst's position after writing to the stream.

For example:

 CodedOutputStream os = outputStreamFromByteRange(dst);
 int before = os.spaceLeft(), after, written;
 val.writeTo(os);
 after = os.spaceLeft();
 written = before - after;
 dst.setPosition(dst.getPosition() + written);
 



Copyright © 2007–2015 The Apache Software Foundation. All rights reserved.