@Override public EdgeRowKey fromComposite( final CompositeParser composite ) { final Id sourceId = ID_SER.fromComposite( composite ); final String edgeType = composite.readString(); final Id targetId = ID_SER.fromComposite( composite ); final long shard = composite.readLong(); return new EdgeRowKey( sourceId, edgeType, targetId, shard ); }
@Override public EdgeIdTypeKey fromComposite( final CompositeParser composite ) { final Id id = ID_SER.fromComposite( composite ); final String edgeType = composite.readString(); return new EdgeIdTypeKey( id, edgeType ); }
@Override public EdgeIdTypeKey fromComposite( final CompositeParser composite ) { final Id id = ID_SER.fromComposite( composite ); final String edgeType = composite.readString(); return new EdgeIdTypeKey( id, edgeType ); }
@Override public ScopedRowKey<CollectionPrefixedKey<K>> fromByteBuffer( final ByteBuffer byteBuffer ) { final CompositeParser parser = Composites.newCompositeParser( byteBuffer ); //read back the id final Id orgId = ID_SER.fromComposite( parser ); final Id scopeId = ID_SER.fromComposite( parser ); final String scopeName = parser.readString(); final K value = keySerializer.fromComposite( parser ); final CollectionPrefixedKey<K> collectionPrefixedKey = new CollectionPrefixedKey<>( scopeName, scopeId, value ); return new ScopedRowKey<>( orgId, collectionPrefixedKey ); } }
@Override public RowKey fromComposite( final CompositeParser composite ) { final Id id = ID_SER.fromComposite( composite ); final String edgeType = composite.readString(); final long shard = composite.readLong(); return new RowKey( id, edgeType, shard ); }
@Override public ScopedRowKey<K> fromByteBuffer( final ByteBuffer byteBuffer ) { final CompositeParser parser = Composites.newCompositeParser( byteBuffer ); //read back the id final Id orgId = ID_SER.fromComposite( parser ); final K value = keySerializer.fromComposite( parser ); return new ScopedRowKey<K>( orgId, value ); } }
@Override public RowKeyType fromComposite( final CompositeParser composite ) { final Id id = ID_SER.fromComposite( composite ); final String edgeType = composite.readString(); final String idType = composite.readString(); final long shard = composite.readLong(); return new RowKeyType( id, edgeType, idType, shard); }
@Override public BucketScopedRowKey<K> fromByteBuffer( final ByteBuffer byteBuffer ) { final CompositeParser parser = Composites.newCompositeParser( byteBuffer ); //read back the id final Id orgId = ID_SER.fromComposite( parser ); final int bucket = parser.readInteger(); final K value = keySerializer.fromComposite( parser ); return new BucketScopedRowKey<>( orgId, value, bucket ); } }
@Override public DirectedEdgeMeta fromComposite( final CompositeParser composite ) { final int storageType = composite.readInteger(); final DirectedEdgeMeta.MetaType metaType = DirectedEdgeMeta.MetaType.fromStorage( storageType ); final int idLength = composite.readInteger(); final DirectedEdgeMeta.NodeMeta[] nodePairs = new DirectedEdgeMeta.NodeMeta[idLength]; for ( int i = 0; i < idLength; i++ ) { final Id sourceId = ID_SER.fromComposite( composite ); final NodeType type = NodeType.get( composite.readInteger() ); nodePairs[i] = new DirectedEdgeMeta.NodeMeta( sourceId, type ); } final int length = composite.readInteger(); String[] types = new String[length]; for ( int i = 0; i < length; i++ ) { types[i] = composite.readString(); } return DirectedEdgeMeta.fromStorage( metaType, nodePairs, types ); }
@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 ); }