@Override public ByteBuffer toByteBuffer(final EntityVersion ev) { final UUID entityVersion = ev.getEntityVersion(); final Id entityId = ev.getEntityId(); final UUID entityUuid = entityId.getUuid(); final String entityType = entityId.getType(); CompositeBuilder builder = Composites.newDynamicCompositeBuilder(); builder.addUUID( entityVersion ); builder.addUUID( entityUuid ); builder.addString(entityType ); return builder.build(); }
@Override public ByteBuffer toByteBuffer( final EntityWrapper wrapper ) { if ( wrapper == null ) { return null; } CompositeBuilder builder = Composites.newCompositeBuilder(); builder.addBytes( VERSION ); //mark this version as empty if ( !wrapper.entity.isPresent() ) { //we're empty builder.addBytes( STATE_DELETED ); return builder.build(); } //we have an entity if ( wrapper.status == MvccEntity.Status.COMPLETE ) { builder.addBytes( STATE_COMPLETE ); } else { builder.addBytes( STATE_PARTIAL ); } try { final byte[] entityBytes = mapper.writeValueAsBytes( wrapper.entity.get() ); builder.addBytes( entityBytes ); } catch ( Exception e ) { throw new RuntimeException( "Unable to serialize entity", e ); } return builder.build(); }
@Override public void toComposite( final CompositeBuilder builder, final DirectedEdgeMeta meta ) { final DirectedEdgeMeta.NodeMeta[] nodeMeta = meta.getNodes(); //add the stored value builder.addInteger( meta.getType().getStorageValue() ); final int length = nodeMeta.length; builder.addInteger( length ); for ( DirectedEdgeMeta.NodeMeta node : nodeMeta ) { ID_SER.toComposite( builder, node.getId() ); builder.addInteger( node.getNodeType().getStorageValue() ); } final String[] edgeTypes = meta.getTypes(); builder.addInteger( edgeTypes.length ); for ( String type : edgeTypes ) { builder.addString( type ); } }
@Override public void toComposite( final CompositeBuilder builder, final Id id ) { // NOTE that this order is important. Our default behavior is to order by // Time UUID and NOT by type, so we want our UUID written BEFORE the string type builder.addUUID( id.getUuid() ); builder.addString( id.getType() ); }
.greaterThanEquals().addBytes(valSerializer.getNext(valSerializer.toByteBuffer(nextValue))) .build()); if (endValue != null) { range.setEnd(Composites.newCompositeBuilder().lessThanEquals().add(endValue, valSerializer) .build());
@Override public ByteBuffer toByteBuffer( final ScopedRowKey<CollectionPrefixedKey<K>> scopedRowKey ) { final CompositeBuilder builder = Composites.newCompositeBuilder(); //add the organization's id ID_SER.toComposite( builder, scopedRowKey.getScope() ); final CollectionPrefixedKey<K> key = scopedRowKey.getKey(); //add the scope's owner id to the composite ID_SER.toComposite( builder, key.getOwner() ); //add the scope's name builder.addString( key.getCollectionName() ); //add the key type keySerializer.toComposite( builder, key.getSubKey() ); //addOtherComponents( builder, scopedRowKey ); return builder.build(); }
@Override public ByteBuffer toByteBuffer( final ScopedRowKey<K> scopedRowKey ) { final CompositeBuilder builder = Composites.newCompositeBuilder(); //add the organization's id ID_SER.toComposite( builder, scopedRowKey.getScope() ); //add the key type keySerializer.toComposite( builder, scopedRowKey.getKey() ); return builder.build(); }
@Override public ByteBuffer toByteBuffer( final BucketScopedRowKey<K> scopedRowKey ) { final CompositeBuilder builder = Composites.newCompositeBuilder(); //add the organization's id ID_SER.toComposite( builder, scopedRowKey.getScope() ); //add the bucket builder.addInteger( scopedRowKey.getBucketNumber() ); //add the key type keySerializer.toComposite( builder, scopedRowKey.getKey() ); return builder.build(); }
@Override public void toComposite( final CompositeBuilder builder, final String string ) { builder.addString( string ); }
.greaterThanEquals().addBytes(valSerializer.getNext(valSerializer.toByteBuffer(nextValue))) .build()); if (endValue != null) { range.setEnd(Composites.newCompositeBuilder().lessThanEquals().add(endValue, valSerializer) .build());
@Test public void testBasicOperation() { Field original = new IntegerField( "count", 5 ); CompositeBuilder builder = Composites.newCompositeBuilder(); UniqueFieldRowKeySerializer fs = new UniqueFieldRowKeySerializer(); fs.toComposite( builder, original ); ByteBuffer serializer = builder.build(); CompositeParser parser = Composites.newCompositeParser( serializer ); Field deserialized = fs.fromComposite( parser ); Assert.assertEquals( original, deserialized ); } }
@Override public void toComposite( final CompositeBuilder builder, final EdgeIdTypeKey value ) { ID_SER.toComposite( builder, value.node ); builder.addString( value.edgeType ); }
range.setStart(Composites.newCompositeBuilder().greaterThanEquals().add(startValue, valSerializer) .build()); range.setEnd(Composites.newCompositeBuilder().lessThanEquals().add(endValue, valSerializer).build());
@Test public void testSerialization() { Id testId = new SimpleId( "test" ); IdRowCompositeSerializer rowSerializer = IdRowCompositeSerializer.get(); final CompositeBuilder builder = Composites.newCompositeBuilder(); rowSerializer.toComposite( builder, testId ); final CompositeParser parser = Composites.newCompositeParser( builder.build() ); //now convert it back Id deserialized = rowSerializer.fromComposite( parser ); assertEquals( "Serialization works correctly", testId, deserialized ); }
@Override public void toComposite( final CompositeBuilder builder, final EdgeIdTypeKey value ) { ID_SER.toComposite( builder, value.node ); builder.addString( value.edgeType ); }
range.setStart(Composites.newCompositeBuilder().greaterThanEquals().add(startValue, valSerializer) .build()); range.setEnd(Composites.newCompositeBuilder().lessThanEquals().add(endValue, valSerializer).build());
@Override public void toComposite( final CompositeBuilder builder, final Field field ) { final FieldTypeName fieldType = field.getTypeName(); /** * Validation we only support a subset */ switch ( fieldType ) { case BOOLEAN: case DOUBLE: case FLOAT: case INTEGER: case LONG: case STRING: case UUID: break; default: throw new RuntimeException( String.format( "Field %s has type %s: not a supported type for unique values", field.getName(), fieldType ) ); } builder.addString( fieldType.name() ); builder.addString( field.getName() ); //write all values as lowercase for normalization builder.addString( field.getValue().toString().toLowerCase() ); }