Search in sources :

Example 1 with AbstractCompositeType

use of org.apache.cassandra.db.marshal.AbstractCompositeType in project cassandra by apache.

the class SSTableHeaderFixTest method freezeUdt.

private AbstractType<?> freezeUdt(AbstractType<?> type) {
    if (type instanceof CollectionType) {
        if (type.getClass() == ListType.class) {
            ListType<?> cHeader = (ListType<?>) type;
            return ListType.getInstance(freezeUdt(cHeader.getElementsType()), cHeader.isMultiCell());
        } else if (type.getClass() == SetType.class) {
            SetType<?> cHeader = (SetType<?>) type;
            return SetType.getInstance(freezeUdt(cHeader.getElementsType()), cHeader.isMultiCell());
        } else if (type.getClass() == MapType.class) {
            MapType<?, ?> cHeader = (MapType<?, ?>) type;
            return MapType.getInstance(freezeUdt(cHeader.getKeysType()), freezeUdt(cHeader.getValuesType()), cHeader.isMultiCell());
        }
    } else if (type instanceof AbstractCompositeType) {
        if (type.getClass() == CompositeType.class) {
            CompositeType cHeader = (CompositeType) type;
            return CompositeType.getInstance(cHeader.types.stream().map(this::freezeUdt).collect(Collectors.toList()));
        }
    } else if (type instanceof TupleType) {
        if (type.getClass() == UserType.class) {
            UserType cHeader = (UserType) type;
            cHeader = cHeader.freeze();
            return new UserType(cHeader.keyspace, cHeader.name, cHeader.fieldNames(), cHeader.allTypes().stream().map(this::freezeUdt).collect(Collectors.toList()), cHeader.isMultiCell());
        }
    }
    return type;
}
Also used : SetType(org.apache.cassandra.db.marshal.SetType) CollectionType(org.apache.cassandra.db.marshal.CollectionType) ListType(org.apache.cassandra.db.marshal.ListType) TupleType(org.apache.cassandra.db.marshal.TupleType) UserType(org.apache.cassandra.db.marshal.UserType) MapType(org.apache.cassandra.db.marshal.MapType) AbstractCompositeType(org.apache.cassandra.db.marshal.AbstractCompositeType) CompositeType(org.apache.cassandra.db.marshal.CompositeType) AbstractCompositeType(org.apache.cassandra.db.marshal.AbstractCompositeType)

Aggregations

AbstractCompositeType (org.apache.cassandra.db.marshal.AbstractCompositeType)1 CollectionType (org.apache.cassandra.db.marshal.CollectionType)1 CompositeType (org.apache.cassandra.db.marshal.CompositeType)1 ListType (org.apache.cassandra.db.marshal.ListType)1 MapType (org.apache.cassandra.db.marshal.MapType)1 SetType (org.apache.cassandra.db.marshal.SetType)1 TupleType (org.apache.cassandra.db.marshal.TupleType)1 UserType (org.apache.cassandra.db.marshal.UserType)1