org.apache.cassandra.db.marshal

## Class CollectionType<T>

- java.lang.Object
- - org.apache.cassandra.db.marshal.AbstractType<T>
  - - org.apache.cassandra.db.marshal.CollectionType<T>

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

Direct Known Subclasses:
  ListType, MapType, SetType

    public abstract class CollectionType<T>
    extends AbstractType<T>

The abstract validator that is the base for maps, sets and lists (both frozen and non-frozen). Please note that this comparator shouldn't be used "manually" (through thrift for instance).

### Nested Class Summary

Nested Classes
`static class` `CollectionType.Kind`

### Nested classes/interfaces inherited from class org.apache.cassandra.db.marshal.AbstractType

`AbstractType.ComparisonType`

### Nested classes/interfaces inherited from interface org.apache.cassandra.cql3.AssignmentTestable

`AssignmentTestable.TestResult`

### Field Summary

Fields
`static CellPath.Serializer` `cellPathSerializer`
`CollectionType.Kind` `kind`

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

`comparisonType, isByteOrderComparable, reverseComparator`

### Constructor Summary

Constructors
`protected` `CollectionType(AbstractType.ComparisonType comparisonType, CollectionType.Kind kind)`

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`CQL3Type` `asCQL3Type()`
`protected int` `collectionSize(java.util.List<java.nio.ByteBuffer> values)`
`boolean` `equals(java.lang.Object o, boolean ignoreFreezing)` Checks to see if two types are equal when ignoring or not ignoring differences in being frozen, depending on the value of the ignoreFreezing parameter.
`java.nio.ByteBuffer` `fromString(java.lang.String source)` get a byte representation of the given string.
`abstract CollectionSerializer<T>` `getSerializer()`
`java.lang.String` `getString(java.nio.ByteBuffer bytes)` get a string representation of the bytes used for various identifier (NOT just for log messages)
`boolean` `isCollection()`
`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.
`protected abstract boolean` `isCompatibleWithFrozen(CollectionType<?> previous)` A version of isCompatibleWith() to deal with non-multicell (frozen) collections
`boolean` `isFreezable()`
`boolean` `isMap()` Checks if this collection is Map.
`protected abstract boolean` `isValueCompatibleWithFrozen(CollectionType<?> previous)` A version of isValueCompatibleWith() to deal with non-multicell (frozen) collections
`boolean` `isValueCompatibleWithInternal(AbstractType<?> previous)` Needed to handle ReversedType in value-compatibility checks.
`ColumnSpecification` `makeCollectionReceiver(ColumnSpecification collection, boolean isKey)`
`abstract AbstractType<?>` `nameComparator()`
`protected abstract java.util.List<java.nio.ByteBuffer>` `serializedValues(java.util.Iterator<Cell> cells)`
`java.nio.ByteBuffer` `serializeForNativeProtocol(java.util.Iterator<Cell> cells, ProtocolVersion version)`
`java.lang.String` `toString()` This must be overriden by subclasses if necessary so that for any AbstractType, this == TypeParser.parse(toString()).
`void` `validateCellValue(java.nio.ByteBuffer cellValue)` Validate cell value.
`abstract AbstractType<?>` `valueComparator()`

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

`asCQLTypeStringList, checkComparable, compare, compareCollectionMembers, compareCustom, compareForCQL, componentsCount, compose, decompose, freeze, freezeNestedMulticellTypes, fromJSONObject, getComponents, getString, isCounter, isEmptyValueMeaningless, isFrozenCollection, isMultiCell, isReversed, isTuple, isUDT, isValueCompatibleWith, parseDefaultParameters, readValue, readValue, referencesDuration, referencesUserType, skipValue, testAssignment, toJSONString, toString, validate, validateCollectionMember, valueLengthIfFixed, writeValue, writtenLength`

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

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

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

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

### Field Detail

#### cellPathSerializer

    public static CellPath.Serializer cellPathSerializer

#### kind

    public final CollectionType.Kind kind

### Constructor Detail

#### CollectionType

    protected CollectionType(AbstractType.ComparisonType comparisonType,
                             CollectionType.Kind kind)

### Method Detail

#### nameComparator

    public abstract AbstractType<?> nameComparator()

#### valueComparator

    public abstract AbstractType<?> valueComparator()

#### serializedValues

    protected abstract java.util.List<java.nio.ByteBuffer> serializedValues(java.util.Iterator<Cell> cells)

#### getSerializer

    public abstract CollectionSerializer<T> getSerializer()

Specified by:
  `getSerializer` in class `AbstractType<T>`

#### makeCollectionReceiver

    public ColumnSpecification makeCollectionReceiver(ColumnSpecification collection,
                                                      boolean isKey)

#### getString

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

Description copied from class: `AbstractType`
get a string representation of the bytes used for various identifier (NOT just for log messages)

Overrides:
  `getString` in class `AbstractType<T>`

#### 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<T>`

#### isCollection

    public boolean isCollection()

Overrides:
  `isCollection` in class `AbstractType<T>`

#### validateCellValue

    public void validateCellValue(java.nio.ByteBuffer cellValue)
                           throws MarshalException

Description copied from class: `AbstractType`
Validate cell value. Unlike AbstractType.validate(java.nio.ByteBuffer), cell value is passed to validate its content. Usually, this is the same as validate except collection.

Overrides:
  `validateCellValue` in class `AbstractType<T>`
Parameters:
  `cellValue` - ByteBuffer representing cell value
Throws:
  `MarshalException`

#### isMap

    public boolean isMap()

Checks if this collection is Map.

Returns:
  `true` if this collection is a Map, `false` otherwise.

#### isFreezable

    public boolean isFreezable()

Overrides:
  `isFreezable` in class `AbstractType<T>`

#### collectionSize

    protected int collectionSize(java.util.List<java.nio.ByteBuffer> values)

#### serializeForNativeProtocol

    public java.nio.ByteBuffer serializeForNativeProtocol(java.util.Iterator<Cell> cells,
                                                          ProtocolVersion version)

#### 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<T>`

#### isValueCompatibleWithInternal

    public boolean isValueCompatibleWithInternal(AbstractType<?> previous)

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<T>`

#### isCompatibleWithFrozen

    protected abstract boolean isCompatibleWithFrozen(CollectionType<?> previous)

A version of isCompatibleWith() to deal with non-multicell (frozen) collections

#### isValueCompatibleWithFrozen

    protected abstract boolean isValueCompatibleWithFrozen(CollectionType<?> previous)

A version of isValueCompatibleWith() to deal with non-multicell (frozen) collections

#### asCQL3Type

    public CQL3Type asCQL3Type()

Overrides:
  `asCQL3Type` in class `AbstractType<T>`

#### equals

    public boolean equals(java.lang.Object o,
                          boolean ignoreFreezing)

Description copied from class: `AbstractType`
Checks to see if two types are equal when ignoring or not ignoring differences in being frozen, depending on the value of the ignoreFreezing parameter.

Overrides:
  `equals` in class `AbstractType<T>`
Parameters:
  `o` - type to compare
  `ignoreFreezing` - if true, differences in the types being frozen will be ignored

#### 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<T>`