List of usage examples for org.apache.cassandra.db.marshal AbstractType getSerializer
public abstract TypeSerializer<T> getSerializer();
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*/ }