Example usage for org.apache.cassandra.db.marshal AbstractType getSerializer

List of usage examples for org.apache.cassandra.db.marshal AbstractType getSerializer

Introduction

In this page you can find the example usage for org.apache.cassandra.db.marshal AbstractType getSerializer.

Prototype

public abstract TypeSerializer<T> getSerializer();

Source Link

Usage

From source file:com.impetus.client.cassandra.CassandraClientBase.java

License:Apache License

/**
 * Compose column value./* w  w w.j a v  a2s .c om*/
 * 
 * @param cqlMetadata
 *            the cql metadata
 * @param thriftColumnValue
 *            the thrift column value
 * @param thriftColumnName
 *            the thrift column name
 * @return the object
 */
private Object composeColumnValue(CqlMetadata cqlMetadata, byte[] thriftColumnValue, byte[] thriftColumnName) {
    Map<ByteBuffer, String> schemaTypes = cqlMetadata.getValue_types();
    AbstractType<?> type = null;
    try {
        type = TypeParser.parse(schemaTypes.get(ByteBuffer.wrap(thriftColumnName)));
    } catch (SyntaxException | ConfigurationException ex) {
        log.error(ex.getMessage());
        throw new KunderaException("Error while deserializing column value " + ex);
    }
    if (type.isCollection()) {
        return ((CollectionSerializer) type.getSerializer())
                .deserializeForNativeProtocol(ByteBuffer.wrap(thriftColumnValue), 2);
    }
    return type.compose(ByteBuffer.wrap(thriftColumnValue));
}

From source file:com.impetus.client.cassandra.datahandler.CassandraDataHandlerBase.java

License:Apache License

/**
 * Populate embedded recursive.// w ww .  ja  va  2s . co m
 * 
 * @param value
 *            the value
 * @param types
 *            the types
 * @param fieldNames
 *            the field names
 * @param entity
 *            the entity
 * @param metaModel
 *            the meta model
 * @return the object
 */
public Object populateEmbeddedRecursive(ByteBuffer value, List<AbstractType<?>> types,
        List<ByteBuffer> fieldNames, Object entity, MetamodelImpl metaModel) {
    ByteBuffer input = value.duplicate();
    EmbeddableType emb = metaModel.embeddable(entity.getClass());

    for (int i = 0; i < types.size(); i++) {

        if (!input.hasRemaining())
            return entity;

        AbstractType<?> type = types.get(i);
        String name = new String(fieldNames.get(i).array()); // JPA name,
                                                             // convert to
                                                             // column name

        Field fieldToSet = null;
        AbstractAttribute attribute = null;
        // change this if possible
        for (Object attr : emb.getAttributes()) {
            if (((AbstractAttribute) attr).getJPAColumnName().equals(name)) {
                attribute = (AbstractAttribute) attr;
                break;
            }
        }
        fieldToSet = (Field) attribute.getJavaMember();
        Class embeddedClass = attribute.getBindableJavaType();

        int size = input.getInt();
        if (size < 0) {
            continue;
        }

        ByteBuffer field = ByteBufferUtil.readBytes(input, size);

        if (type.getClass().getSimpleName().equals("UserType")) {
            List<ByteBuffer> subFieldNames = ((UserType) type).fieldNames();// ok
            List<AbstractType<?>> subfieldTypes = ((UserType) type).fieldTypes();

            // create entity with type_name and populate fields, set entity
            // in parent object after exit
            Object embeddedObjectChild = KunderaCoreUtils.createNewInstance(embeddedClass);

            Object processedEntity = populateEmbeddedRecursive(field, subfieldTypes, subFieldNames,
                    embeddedObjectChild, metaModel);
            PropertyAccessorHelper.set(entity, fieldToSet, processedEntity);
        } else {
            boolean flag = true;

            if (type.getClass().getSimpleName().equals("MapType")) {
                if (((MapType) type).getValuesType().getClass().getSimpleName().equals("UserType")) {
                    flag = false;
                    // create instance of embedded object (UserType)
                    setElementCollectionMap((MapType) type, field, entity, fieldToSet, metaModel, embeddedClass,
                            false);
                }
            } else if (type.getClass().getSimpleName().equals("ListType")) {
                if (((ListType) type).getElementsType().getClass().getSimpleName().equals("UserType")) {
                    flag = false;
                    setElementCollectionList((ListType) type, field, entity, fieldToSet, metaModel,
                            embeddedClass, false);
                }
            } else if (type.getClass().getSimpleName().equals("SetType")) {
                if (((SetType) type).getElementsType().getClass().getSimpleName().equals("UserType")) {
                    flag = false;
                    setElementCollectionSet((SetType) type, field, entity, fieldToSet, metaModel, embeddedClass,
                            false);
                }
            }
            if (flag) {
                TypeSerializer serializer = type.getSerializer();
                serializer.validate(field);

                Object finalValue = serializer.deserialize(field);
                PropertyAccessorHelper.set(entity, fieldToSet, finalValue);
            }

        }

    }
    return entity;
}

From source file:org.elassandra.cluster.InternalCassandraClusterService.java

License:Apache License

public static ArrayNode addToJsonArray(final AbstractType<?> type, final Object value, ArrayNode an) {
    TypeSerializer<?> typeSerializer = type.getSerializer();
    if (typeSerializer instanceof BooleanSerializer)
        an.add((Boolean) value);// ww  w . ja v a2  s.  c o  m
    else if ((typeSerializer instanceof IntegerSerializer) || (typeSerializer instanceof Int32Serializer))
        an.add(Integer.parseInt(value.toString()));
    else if (typeSerializer instanceof LongSerializer)
        an.add(Long.parseLong(value.toString()));
    else if (typeSerializer instanceof DoubleSerializer)
        an.add(Double.parseDouble(value.toString()));
    else if (typeSerializer instanceof DecimalSerializer)
        an.add(new BigDecimal(value.toString()));
    else if (typeSerializer instanceof FloatSerializer)
        an.add(Float.parseFloat(value.toString()));
    else if (typeSerializer instanceof TimestampSerializer)
        an.add(((Date) value).getTime());
    else
        an.add(stringify(type, value));
    return an;
}

From source file:org.elassandra.cluster.InternalCassandraClusterService.java

License:Apache License

public static String stringify(AbstractType<?> type, Object value) {
    // Thanks' generics !
    TypeSerializer<?> typeSerializer = type.getSerializer();
    if (typeSerializer instanceof AsciiSerializer)
        return ((AsciiSerializer) typeSerializer).toString((String) value);
    if (typeSerializer instanceof UTF8Serializer)
        return ((UTF8Serializer) typeSerializer).toString((String) value);
    if (typeSerializer instanceof BooleanSerializer)
        return ((BooleanSerializer) typeSerializer).toString((Boolean) value);
    if (typeSerializer instanceof BytesSerializer)
        return ((BytesSerializer) typeSerializer).toString((ByteBuffer) value);
    if (typeSerializer instanceof DecimalSerializer)
        return ((DecimalSerializer) typeSerializer).toString((BigDecimal) value);
    if (typeSerializer instanceof DoubleSerializer)
        return ((DoubleSerializer) typeSerializer).toString((Double) value);
    if (typeSerializer instanceof FloatSerializer)
        return ((FloatSerializer) typeSerializer).toString((Float) value);
    if (typeSerializer instanceof LongSerializer)
        return ((LongSerializer) typeSerializer).toString((Long) value);
    if (typeSerializer instanceof Int32Serializer)
        return ((Int32Serializer) typeSerializer).toString((Integer) value);
    if (typeSerializer instanceof IntegerSerializer)
        return ((IntegerSerializer) typeSerializer).toString((BigInteger) value);
    if (typeSerializer instanceof TimestampSerializer)
        return ((TimestampSerializer) typeSerializer).toString((Date) value);
    if (typeSerializer instanceof TimeUUIDSerializer)
        return ((TimeUUIDSerializer) typeSerializer).toString((UUID) value);
    if (typeSerializer instanceof UUIDSerializer)
        return ((UUIDSerializer) typeSerializer).toString((UUID) value);
    if (typeSerializer instanceof ListSerializer)
        return ((ListSerializer) typeSerializer).toString((List) value);
    if (typeSerializer instanceof SetSerializer)
        return ((SetSerializer) typeSerializer).toString((Set) value);
    if (typeSerializer instanceof MapSerializer)
        return ((MapSerializer) typeSerializer).toString((Map) value);
    if (typeSerializer instanceof EmptySerializer)
        return ((EmptySerializer) typeSerializer).toString((Void) value);
    return null;/*w  ww.  j  a  va 2  s .  com*/
}