@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 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 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 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(); }
@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 ); } }
@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 ); }