Class TupleType

  • All Implemented Interfaces:
    java.util.Comparator<java.nio.ByteBuffer>, AssignmentTestable
    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 Detail

      • types

        protected final java.util.List<AbstractType<?>> types
    • Constructor Detail

      • TupleType

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

        protected TupleType​(java.util.List<AbstractType<?>> types,
                            boolean freezeInner)
    • Method Detail

      • withUpdatedUserType

        public TupleType withUpdatedUserType​(UserType udt)
        Description copied from class: AbstractType
        Returns an instance of this type with all references to the provided user type recursively replaced with its new definition.
        Overrides:
        withUpdatedUserType in class AbstractType<java.nio.ByteBuffer>
      • expandUserTypes

        public AbstractType<?> expandUserTypes()
        Description copied from class: AbstractType
        Replace any instances of UserType with equivalent TupleType-s. We need it for dropped_columns, to allow safely dropping unused user types later without retaining any references to them in system_schema.dropped_columns.
        Overrides:
        expandUserTypes in class AbstractType<java.nio.ByteBuffer>
      • size

        public int size()
      • allTypes

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

        public boolean isTuple()
        Overrides:
        isTuple in class AbstractType<java.nio.ByteBuffer>
      • compareCustom

        public <VL,​VR> int compareCustom​(VL left,
                                               ValueAccessor<VL> accessorL,
                                               VR right,
                                               ValueAccessor<VR> accessorR)
        Description copied from class: AbstractType
        Implement IFF ComparisonType is CUSTOM Compares the byte representation of two instances of this class, for types where this cannot be done by simple in-order comparison of the unsigned bytes Standard Java compare semantics
        Overrides:
        compareCustom in class AbstractType<java.nio.ByteBuffer>
      • split

        public java.nio.ByteBuffer[] split​(java.nio.ByteBuffer value)
        Split a tuple value into its component values.
      • buildValue

        public static <V> V buildValue​(ValueAccessor<V> accessor,
                                       V[] components)
      • buildValue

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

        public <V> java.lang.String getString​(V input,
                                              ValueAccessor<V> accessor)
        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<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,
                                             ProtocolVersion 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
      • 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
      • 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>