Package org.apache.cassandra.db.marshal
Class ReversedType<T>
- java.lang.Object
-
- org.apache.cassandra.db.marshal.AbstractType<T>
-
- org.apache.cassandra.db.marshal.ReversedType<T>
-
- All Implemented Interfaces:
java.util.Comparator<java.nio.ByteBuffer>
,AssignmentTestable
public class ReversedType<T> extends AbstractType<T>
-
-
Nested Class Summary
-
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 Modifier and Type Field Description AbstractType<T>
baseType
-
Fields inherited from class org.apache.cassandra.db.marshal.AbstractType
comparatorSet, comparisonType, isByteOrderComparable, reverseComparator
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description CQL3Type
asCQL3Type()
<VL,VR>
intcompareCustom(VL left, ValueAccessor<VL> accessorL, VR right, ValueAccessor<VR> accessorR)
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 semanticsint
compareForCQL(java.nio.ByteBuffer v1, java.nio.ByteBuffer v2)
Same as compare except that this ignore ReversedType.AbstractType<?>
expandUserTypes()
Replace any instances of UserType with equivalent TupleType-s.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 <T> ReversedType<T>
getInstance(AbstractType<T> baseType)
static <T> ReversedType<T>
getInstance(TypeParser parser)
TypeSerializer<T>
getSerializer()
<V> java.lang.String
getString(V value, ValueAccessor<V> accessor)
get a string representation of the bytes used for various identifier (NOT just for log messages)boolean
isCompatibleWith(AbstractType<?> otherType)
Returns true if this comparator is compatible with the provided previous comparator, that is if previous can safely be replaced by this.boolean
isEmptyValueMeaningless()
boolean
isReversed()
boolean
isValueCompatibleWith(AbstractType<?> otherType)
Returns true if values of the other AbstractType can be read and "reasonably" interpreted by the this AbstractType.<V> boolean
referencesUserType(V name, ValueAccessor<V> accessor)
java.lang.String
toJSONString(java.nio.ByteBuffer buffer, ProtocolVersion 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()).int
valueLengthIfFixed()
The length of values for this type if all values are of fixed length, -1 otherwise.ReversedType<?>
withUpdatedUserType(UserType udt)
Returns an instance of this type with all references to the provided user type recursively replaced with its new definition.-
Methods inherited from class org.apache.cassandra.db.marshal.AbstractType
asCQLTypeStringList, checkComparable, compare, compare, compareCollectionMembers, compose, compose, decompose, freeze, freezeNestedMulticellTypes, getComponents, getString, getString, isCollection, isCounter, isFreezable, isFrozenCollection, isMultiCell, isTuple, isUDT, isValueCompatibleWithInternal, parseDefaultParameters, read, readArray, readBuffer, readBuffer, referencesDuration, referencesUserType, skipValue, subTypes, testAssignment, testAssignment, toJSONString, toString, validate, validate, validateCellValue, validateCollectionMember, writeValue, writeValue, writtenLength, writtenLength
-
-
-
-
Field Detail
-
baseType
public final AbstractType<T> baseType
-
-
Method Detail
-
getInstance
public static <T> ReversedType<T> getInstance(TypeParser parser)
-
getInstance
public static <T> ReversedType<T> getInstance(AbstractType<T> baseType)
-
isEmptyValueMeaningless
public boolean isEmptyValueMeaningless()
Description copied from class:AbstractType
- Overrides:
isEmptyValueMeaningless
in classAbstractType<T>
-
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 classAbstractType<T>
-
compareForCQL
public int compareForCQL(java.nio.ByteBuffer v1, java.nio.ByteBuffer v2)
Description copied from class:AbstractType
Same as compare except that this ignore ReversedType. This is to be use when comparing 2 values to decide for a CQL condition (see Operator.isSatisfiedBy) as for CQL, ReversedType is simply an "hint" to the storage engine but it does not change the meaning of queries per-se.- Overrides:
compareForCQL
in classAbstractType<T>
-
getString
public <V> java.lang.String getString(V value, 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 classAbstractType<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 classAbstractType<T>
-
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 classAbstractType<T>
- 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 classAbstractType<T>
- Parameters:
buffer
- the value to convertprotocolVersion
- the protocol version to use for the conversion- Returns:
- a JSON string representing the specified value
-
isCompatibleWith
public boolean isCompatibleWith(AbstractType<?> otherType)
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 classAbstractType<T>
-
isValueCompatibleWith
public boolean isValueCompatibleWith(AbstractType<?> otherType)
Description copied from class:AbstractType
Returns true if values of the other AbstractType can be read and "reasonably" interpreted by the this AbstractType. Note that this is a weaker version of isCompatibleWith, as it does not require that both type compare values the same way. The restriction on the other type being "reasonably" interpreted is to prevent, for example, IntegerType from being compatible with all other types. Even though any byte string is a valid IntegerType value, it doesn't necessarily make sense to interpret a UUID or a UTF8 string as an integer. Note that a type should be compatible with at least itself.- Overrides:
isValueCompatibleWith
in classAbstractType<T>
-
asCQL3Type
public CQL3Type asCQL3Type()
- Overrides:
asCQL3Type
in classAbstractType<T>
-
getSerializer
public TypeSerializer<T> getSerializer()
- Specified by:
getSerializer
in classAbstractType<T>
-
referencesUserType
public <V> boolean referencesUserType(V name, ValueAccessor<V> accessor)
- Overrides:
referencesUserType
in classAbstractType<T>
-
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 classAbstractType<T>
-
withUpdatedUserType
public ReversedType<?> 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 classAbstractType<T>
-
valueLengthIfFixed
public int valueLengthIfFixed()
Description copied from class:AbstractType
The length of values for this type if all values are of fixed length, -1 otherwise.- Overrides:
valueLengthIfFixed
in classAbstractType<T>
-
isReversed
public boolean isReversed()
- Overrides:
isReversed
in classAbstractType<T>
-
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 classAbstractType<T>
-
-