private List<MvccLogEntry> parseResults( final ColumnList<UUID> columns, final Id entityId ) { List<MvccLogEntry> results = new ArrayList<MvccLogEntry>( columns.size() ); for ( Column<UUID> col : columns ) { final UUID storedVersion = col.getName(); final StageStatus stage = col.getValue( SER ); results.add( new MvccLogEntryImpl( entityId, storedVersion, stage.stage, stage.state ) ); } return results; }
@Override public MvccEntity parseColumn( Column<UUID> column ) { final EntityWrapper deSerialized; final UUID version = column.getName(); try { deSerialized = column.getValue( entityJsonSerializer ); } catch ( DataCorruptionException e ) { logger.error( "DATA CORRUPTION DETECTED when de-serializing entity with Id {} and version {}. This means the write was truncated.", id, version, e ); //return an empty entity, we can never load this one, and we don't want it to bring the system //to a grinding halt return new MvccEntityImpl( id, version, MvccEntity.Status.DELETED, Optional.<Entity>absent(),0 ); } //Inject the id into it. if ( deSerialized.entity.isPresent() ) { EntityUtils.setId( deSerialized.entity.get(), id ); } return new MvccEntityImpl( id, version, deSerialized.status, deSerialized.entity, 0 ); } }
@Override public MvccEntity parseColumn( Column<Boolean> column ) { final EntityWrapper deSerialized; try { deSerialized = column.getValue( entityJsonSerializer ); } catch ( DataCorruptionException e ) { log.error( "DATA CORRUPTION DETECTED when de-serializing entity with Id {}. This means the" + " write was truncated.", id, e ); //return an empty entity, we can never load this one, and we don't want it to bring the system //to a grinding halt //TODO fix this return new MvccEntityImpl( id, UUIDGenerator.newTimeUUID(), MvccEntity.Status.DELETED, Optional.<Entity>absent() ); } Optional<Entity> entity = deSerialized.getOptionalEntity() ; return new MvccEntityImpl( id, deSerialized.getVersion(), deSerialized.getStatus(), entity, deSerialized.getSize()); } }
final StageStatus stageStatus = column.getValue( SER );
return column.getValue(SHARD_SERIALIZER);
@Override public <T> T getValue(C columnName, Serializer<T> serializer, T defaultValue) { Column<C> column = map.get(columnName); if (column == null) { return defaultValue; } else { return column.getValue(serializer); } }
@Override public V getValue() { //TODO: support types other than String as well return (V)astyanaxColumn.getValue(StringSerializer.get()); } @Override
@Override public <V> V getValue(Serializer<V> serializer) { return _content != null ? serializer.fromByteBuffer(_content) : _oldColumn.getValue(serializer); }
@Override public <V> V getValue(Serializer<V> serializer) { return _content != null ? serializer.fromByteBuffer(_content) : _oldColumn.getValue(serializer); }
@Override public <T> T getValue(C columnName, Serializer<T> serializer, T defaultValue) { Column<C> column = getColumnByName(columnName); if (column == null || !column.hasValue()) return defaultValue; return column.getValue(serializer); }
@SuppressWarnings("unchecked") public Map<C, V> lookup(TridentTupleMapper<K, C, V> tupleMapper, TridentTuple input, List<C> slice) throws Exception { String cf = tupleMapper.mapToColumnFamily(input); String keyspace = tupleMapper.mapToKeyspace(input); K rowKey = tupleMapper.mapToRowKey(input); Class<K> keyClass = tupleMapper.getKeyClass(); Class<C> colClass = tupleMapper.getColumnNameClass(); ColumnFamily<K, C> columnFamily = new ColumnFamily<K, C>(cf, (Serializer<K>) serializerFor(keyClass), (Serializer<C>) serializerFor(colClass)); HashMap<C, V> retval = new HashMap<C, V>(); for (C c : slice) { RowQuery<K, C> query = this.getKeyspace(keyspace).prepareQuery(columnFamily).getKey(rowKey); query = query.withColumnRange(getRangeBuilder(c, c, null, (Serializer<C>) serializerFor(colClass))); OperationResult<ColumnList<C>> result = query.execute(); LOG.debug("Selecting [" + c.toString() + "] returned [" + result.getResult().size() + "] results."); Iterator<Column<C>> it = result.getResult().iterator(); while (it.hasNext()) { Column<C> col = it.next(); LOG.debug("Adding [" + col.getName() + "]=>[" + col.getStringValue() + "]"); retval.put(col.getName(), col.getValue((Serializer<V>) serializerFor(tupleMapper.getColumnValueClass()))); } } return retval; }
@SuppressWarnings("unchecked") public Map<C, V> lookup(TupleMapper<K, C, V> tupleMapper, Tuple input) throws Exception { String cf = tupleMapper.mapToColumnFamily(input); String keyspace = tupleMapper.mapToKeyspace(input); K rowKey = tupleMapper.mapToRowKey(input); Class<K> keyClass = tupleMapper.getKeyClass(); Class<C> colClass = tupleMapper.getColumnNameClass(); ColumnFamily<K, C> columnFamily = new ColumnFamily<K, C>(cf, (Serializer<K>) serializerFor(keyClass), (Serializer<C>) serializerFor(colClass)); OperationResult<ColumnList<C>> result; result = this.getKeyspace(keyspace).prepareQuery(columnFamily).getKey(rowKey).execute(); ColumnList<C> columns = (ColumnList<C>) result.getResult(); HashMap<C, V> retval = new HashMap<C, V>(); Iterator<Column<C>> it = columns.iterator(); while (it.hasNext()) { Column<C> col = it.next(); retval.put(col.getName(), col.getValue((Serializer<V>) serializerFor(tupleMapper.getColumnValueClass()))); } return retval; }
@SuppressWarnings("unchecked") public Map<C, V> lookup(TridentTupleMapper<K, C, V> tupleMapper, TridentTuple input) throws Exception { String cf = tupleMapper.mapToColumnFamily(input); String keyspace = tupleMapper.mapToKeyspace(input); K rowKey = tupleMapper.mapToRowKey(input); Class<K> keyClass = tupleMapper.getKeyClass(); Class<C> colClass = tupleMapper.getColumnNameClass(); ColumnFamily<K, C> columnFamily = new ColumnFamily<K, C>(cf, (Serializer<K>) serializerFor(keyClass), (Serializer<C>) serializerFor(colClass)); OperationResult<ColumnList<C>> result; result = this.getKeyspace(keyspace).prepareQuery(columnFamily).getKey(rowKey).execute(); ColumnList<C> columns = (ColumnList<C>) result.getResult(); HashMap<C, V> retval = new HashMap<C, V>(); Iterator<Column<C>> it = columns.iterator(); while (it.hasNext()) { Column<C> col = it.next(); retval.put(col.getName(), col.getValue((Serializer<V>) serializerFor(tupleMapper.getColumnValueClass()))); } return retval; }
@SuppressWarnings("unchecked") public Map<C, V> lookup(TupleMapper<K, C, V> tupleMapper, Tuple input, List<C> slice) throws Exception { String cf = tupleMapper.mapToColumnFamily(input); String keyspace = tupleMapper.mapToKeyspace(input); K rowKey = tupleMapper.mapToRowKey(input); Class<K> keyClass = tupleMapper.getKeyClass(); Class<C> colClass = tupleMapper.getColumnNameClass(); ColumnFamily<K, C> columnFamily = new ColumnFamily<K, C>(cf, (Serializer<K>) serializerFor(keyClass), (Serializer<C>) serializerFor(colClass)); HashMap<C, V> retval = new HashMap<C, V>(); for (C c : slice) { RowQuery<K, C> query = this.getKeyspace(keyspace).prepareQuery(columnFamily).getKey(rowKey); query = query.withColumnRange(getRangeBuilder(c, c, null, (Serializer<C>) serializerFor(colClass))); OperationResult<ColumnList<C>> result = query.execute(); Iterator<Column<C>> it = result.getResult().iterator(); while (it.hasNext()) { Column<C> col = it.next(); retval.put(col.getName(), col.getValue((Serializer<V>) serializerFor(tupleMapper.getColumnValueClass()))); } } return retval; }
@SuppressWarnings("unchecked") public Map<C, V> lookup(TridentTupleMapper<K, C, V> tupleMapper, TridentTuple input, C start, C end, Equality equality) throws Exception { if (start == null || end == null) { return null; } String cf = tupleMapper.mapToColumnFamily(input); String keyspace = tupleMapper.mapToKeyspace(input); K rowKey = tupleMapper.mapToRowKey(input); Class<K> keyClass = tupleMapper.getKeyClass(); Class<C> colClass = tupleMapper.getColumnNameClass(); ColumnFamily<K, C> columnFamily = new ColumnFamily<K, C>(cf, (Serializer<K>) serializerFor(keyClass), (Serializer<C>) serializerFor(colClass)); RowQuery<K, C> query = this.getKeyspace(keyspace).prepareQuery(columnFamily).getKey(rowKey); query = query.withColumnRange(getRangeBuilder(start, end, equality, (Serializer<C>) serializerFor(colClass))); OperationResult<ColumnList<C>> result = query.execute(); ColumnList<C> columns = (ColumnList<C>) result.getResult(); HashMap<C, V> retval = new HashMap<C, V>(); Iterator<Column<C>> it = columns.iterator(); while (it.hasNext()) { Column<C> col = it.next(); retval.put(col.getName(), col.getValue((Serializer<V>) serializerFor(tupleMapper.getColumnValueClass()))); } return retval; }
@SuppressWarnings("unchecked") public Map<C, V> lookup(TupleMapper<K, C, V> tupleMapper, Tuple input, C start, C end, Equality equality) throws Exception { if (start == null || end == null) { return null; } String cf = tupleMapper.mapToColumnFamily(input); String keyspace = tupleMapper.mapToKeyspace(input); K rowKey = tupleMapper.mapToRowKey(input); Class<K> keyClass = tupleMapper.getKeyClass(); Class<C> colClass = tupleMapper.getColumnNameClass(); ColumnFamily<K, C> columnFamily = new ColumnFamily<K, C>(cf, (Serializer<K>) serializerFor(keyClass), (Serializer<C>) serializerFor(colClass)); OperationResult<ColumnList<C>> result = this.getKeyspace(keyspace).prepareQuery(columnFamily).getKey(rowKey) .withColumnRange(getRangeBuilder(start, end, equality, (Serializer<C>) serializerFor(colClass))) .execute(); ColumnList<C> columns = (ColumnList<C>) result.getResult(); HashMap<C, V> retval = new HashMap<C, V>(); Iterator<Column<C>> it = columns.iterator(); while (it.hasNext()) { Column<C> col = it.next(); retval.put(col.getName(), col.getValue((Serializer<V>) serializerFor(tupleMapper.getColumnValueClass()))); } return retval; }
@Test public void testSerializedClassValue() throws Exception { UserInfo smo = new UserInfo(); smo.setLastName("Landau"); smo.setFirstName("Eran"); ByteBuffer bb = ObjectSerializer.get().toByteBuffer(smo); keyspace.prepareColumnMutation(CF_STANDARD1, "Key_SerializeTest", "Column1").putValue(bb, null).execute(); UserInfo smo2 = (UserInfo) keyspace.prepareQuery(CF_STANDARD1) .getKey("Key_SerializeTest").getColumn("Column1").execute() .getResult().getValue(ObjectSerializer.get()); Assert.assertEquals(smo, smo2); }