org.apache.cassandra.db.marshal

## Class TupleType

- java.lang.Object
- - org.apache.cassandra.db.marshal.AbstractType<java.nio.ByteBuffer>
  - - org.apache.cassandra.db.marshal.TupleType

All Implemented Interfaces:
  java.util.Comparator<java.nio.ByteBuffer>

Direct Known Subclasses:
  UserType

    public class TupleType
    extends AbstractType<java.nio.ByteBuffer>

This is essentially like a CompositeType, but it's not primarily meant for comparison, just to pack multiple values together so has a more friendly encoding.

### Field Summary

Fields
`protected java.util.List<AbstractType<?>>` `types`

### Fields inherited from class org.apache.cassandra.db.marshal.AbstractType

`reverseComparator`

### Constructor Summary

Constructors
Constructor and Description
`TupleType(java.util.List<AbstractType<?>> types)`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`java.util.List<AbstractType<?>>` `allTypes()`
`CQL3Type` `asCQL3Type()`
`static java.nio.ByteBuffer` `buildValue(java.nio.ByteBuffer[] components)`
`int` `compare(java.nio.ByteBuffer o1, java.nio.ByteBuffer o2)`
`boolean` `equals(java.lang.Object o)`
`Term` `fromJSONObject(java.lang.Object parsed)` Given a parsed JSON string, return a byte representation of the object.
`java.nio.ByteBuffer` `fromString(java.lang.String source)` get a byte representation of the given string.
`static TupleType` `getInstance(TypeParser parser)`
`TypeSerializer<java.nio.ByteBuffer>` `getSerializer()`
`java.lang.String` `getString(java.nio.ByteBuffer value)` get a string representation of the bytes suitable for log messages
`int` `hashCode()`
`boolean` `isCompatibleWith(AbstractType<?> previous)` Returns true if this comparator is compatible with the provided previous comparator, that is if previous can safely be replaced by this.
`boolean` `isValueCompatibleWithInternal(AbstractType<?> otherType)` Needed to handle ReversedType in value-compatibility checks.
`boolean` `references(AbstractType<?> check)` Checks whether this type or any of the types this type contains references the given type.
`int` `size()`
`java.nio.ByteBuffer[]` `split(java.nio.ByteBuffer value)` Split a tuple value into its component values.
`java.lang.String` `toJSONString(java.nio.ByteBuffer buffer, int protocolVersion)` Converts the specified value into its JSON representation.
`java.lang.String` `toString()` This must be overriden by subclasses if necessary so that for any AbstractType, this == TypeParser.parse(toString()).
`AbstractType<?>` `type(int i)`

### Methods inherited from class org.apache.cassandra.db.marshal.AbstractType

`asCQLTypeStringList, compareCollectionMembers, componentsCount, compose, decompose, freeze, getComponents, getString, isByteOrderComparable, isCollection, isCounter, isEmptyValueMeaningless, isFrozenCollection, isMultiCell, isReversed, isValueCompatibleWith, parseDefaultParameters, toString, validate, validateCellValue, validateCollectionMember`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface java.util.Comparator

`comparing, comparing, comparingDouble, comparingInt, comparingLong, naturalOrder, nullsFirst, nullsLast, reversed, reverseOrder, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong`

### Field Detail

#### types

    protected final java.util.List<AbstractType<?>> types

### Constructor Detail

#### TupleType

    public TupleType(java.util.List<AbstractType<?>> types)

### Method Detail

#### getInstance

    public static TupleType getInstance(TypeParser parser)
                                 throws ConfigurationException,
                                        SyntaxException

Throws:
  `ConfigurationException`
  `SyntaxException`

#### references

    public boolean references(AbstractType<?> check)

Description copied from class: `AbstractType`
Checks whether this type or any of the types this type contains references the given type.

Overrides:
  `references` in class `AbstractType<java.nio.ByteBuffer>`

#### type

    public AbstractType<?> type(int i)

#### size

    public int size()

#### allTypes

    public java.util.List<AbstractType<?>> allTypes()

#### compare

    public int compare(java.nio.ByteBuffer o1,
                       java.nio.ByteBuffer o2)

#### split

    public java.nio.ByteBuffer[] split(java.nio.ByteBuffer value)

Split a tuple value into its component values.

#### buildValue

    public static java.nio.ByteBuffer buildValue(java.nio.ByteBuffer[] components)

#### getString

    public java.lang.String getString(java.nio.ByteBuffer value)

Description copied from class: `AbstractType`
get a string representation of the bytes suitable for log messages

Overrides:
  `getString` in class `AbstractType<java.nio.ByteBuffer>`

#### fromString

    public java.nio.ByteBuffer fromString(java.lang.String source)

Description copied from class: `AbstractType`
get a byte representation of the given string.

Specified by:
  `fromString` in class `AbstractType<java.nio.ByteBuffer>`

#### fromJSONObject

    public Term fromJSONObject(java.lang.Object parsed)
                        throws MarshalException

Description copied from class: `AbstractType`
Given a parsed JSON string, return a byte representation of the object.

Specified by:
  `fromJSONObject` in class `AbstractType<java.nio.ByteBuffer>`
Parameters:
  `parsed` - the result of parsing a json string
Throws:
  `MarshalException`

#### toJSONString

    public java.lang.String toJSONString(java.nio.ByteBuffer buffer,
                                         int protocolVersion)

Description copied from class: `AbstractType`
Converts the specified value into its JSON representation.

The buffer position will stay the same.

Overrides:
  `toJSONString` in class `AbstractType<java.nio.ByteBuffer>`
Parameters:
  `buffer` - the value to convert
  `protocolVersion` - the protocol version to use for the conversion
Returns:
  a JSON string representing the specified value

#### getSerializer

    public TypeSerializer<java.nio.ByteBuffer> getSerializer()

Specified by:
  `getSerializer` in class `AbstractType<java.nio.ByteBuffer>`

#### isCompatibleWith

    public boolean isCompatibleWith(AbstractType<?> previous)

Description copied from class: `AbstractType`
Returns true if this comparator is compatible with the provided previous comparator, that is if previous can safely be replaced by this. A comparator cn should be compatible with a previous one cp if forall columns c1 and c2, if cn.validate(c1) and cn.validate(c2) and cn.compare(c1, c2) == v, then cp.validate(c1) and cp.validate(c2) and cp.compare(c1, c2) == v. Note that a type should be compatible with at least itself and when in doubt, keep the default behavior of not being compatible with any other comparator!

Overrides:
  `isCompatibleWith` in class `AbstractType<java.nio.ByteBuffer>`

#### isValueCompatibleWithInternal

    public boolean isValueCompatibleWithInternal(AbstractType<?> otherType)

Description copied from class: `AbstractType`
Needed to handle ReversedType in value-compatibility checks. Subclasses should implement this instead of isValueCompatibleWith().

Overrides:
  `isValueCompatibleWithInternal` in class `AbstractType<java.nio.ByteBuffer>`

#### hashCode

    public int hashCode()

Overrides:
  `hashCode` in class `java.lang.Object`

#### equals

    public boolean equals(java.lang.Object o)

Specified by:
  `equals` in interface `java.util.Comparator<java.nio.ByteBuffer>`
Overrides:
  `equals` in class `java.lang.Object`

#### asCQL3Type

    public CQL3Type asCQL3Type()

Overrides:
  `asCQL3Type` in class `AbstractType<java.nio.ByteBuffer>`

#### toString

    public java.lang.String toString()

Description copied from class: `AbstractType`
This must be overriden by subclasses if necessary so that for any AbstractType, this == TypeParser.parse(toString()). Note that for backwards compatibility this includes the full classname. For CQL purposes the short name is fine.

Overrides:
  `toString` in class `AbstractType<java.nio.ByteBuffer>`