public SharedBuffer(KeyedStateStore stateStore, TypeSerializer<V> valueSerializer) { this.eventsBuffer = stateStore.getMapState( new MapStateDescriptor<>( eventsStateName, EventId.EventIdSerializer.INSTANCE, new Lockable.LockableTypeSerializer<>(valueSerializer))); this.entries = stateStore.getMapState( new MapStateDescriptor<>( entriesStateName, NodeId.NodeIdSerializer.INSTANCE, new Lockable.LockableTypeSerializer<>(new SharedBufferNode.SharedBufferNodeSerializer()))); this.eventsCount = stateStore.getMapState( new MapStateDescriptor<>( eventsCountStateName, LongSerializer.INSTANCE, IntSerializer.INSTANCE)); }
@Override public TypeSerializerSchemaCompatibility<Lockable<E>> resolveSchemaCompatibility(TypeSerializer<Lockable<E>> newSerializer) { checkState(nestedElementSerializerSnapshot != null); if (newSerializer instanceof Lockable.LockableTypeSerializer) { Lockable.LockableTypeSerializer<E> serializer = (Lockable.LockableTypeSerializer<E>) newSerializer; return nestedElementSerializerSnapshot.resolveCompatibilityWithNested( TypeSerializerSchemaCompatibility.compatibleAsIs(), serializer.getElementSerializer()); } else { return TypeSerializerSchemaCompatibility.incompatible(); } }
@Override public Lockable<E> copy( Lockable<E> from, Lockable<E> reuse) { return copy(from); }
public SharedBuffer(KeyedStateStore stateStore, TypeSerializer<V> valueSerializer) { this.eventsBuffer = stateStore.getMapState( new MapStateDescriptor<>( eventsStateName, EventId.EventIdSerializer.INSTANCE, new Lockable.LockableTypeSerializer<>(valueSerializer))); this.entries = stateStore.getMapState( new MapStateDescriptor<>( entriesStateName, NodeId.NodeIdSerializer.INSTANCE, new Lockable.LockableTypeSerializer<>(new SharedBufferNode.SharedBufferNodeSerializer()))); this.eventsCount = stateStore.getMapState( new MapStateDescriptor<>( eventsCountStateName, LongSerializer.INSTANCE, IntSerializer.INSTANCE)); }
@Override public TypeSerializer<Lockable<E>> restoreSerializer() { return new Lockable.LockableTypeSerializer<>(nestedElementSerializerSnapshot.getRestoreSerializer(0)); }
@Override public TypeSerializerSchemaCompatibility<Lockable<E>> resolveSchemaCompatibility(TypeSerializer<Lockable<E>> newSerializer) { checkState(nestedElementSerializerSnapshot != null); if (newSerializer instanceof Lockable.LockableTypeSerializer) { Lockable.LockableTypeSerializer<E> serializer = (Lockable.LockableTypeSerializer<E>) newSerializer; return nestedElementSerializerSnapshot.resolveCompatibilityWithNested( TypeSerializerSchemaCompatibility.compatibleAsIs(), serializer.getElementSerializer()); } else { return TypeSerializerSchemaCompatibility.incompatible(); } }
@Override public Lockable<E> deserialize( Lockable<E> reuse, DataInputView source) throws IOException { return deserialize(source); }
@Override public Lockable<E> deserialize( Lockable<E> reuse, DataInputView source) throws IOException { return deserialize(source); }
@Override public LockableTypeSerializer<E> duplicate() { TypeSerializer<E> elementSerializerCopy = elementSerializer.duplicate(); return elementSerializerCopy == elementSerializer ? this : new LockableTypeSerializer<>(elementSerializerCopy); }
@Override public Lockable<E> copy( Lockable<E> from, Lockable<E> reuse) { return copy(from); }
@Override public TypeSerializer<Lockable<E>> restoreSerializer() { return new Lockable.LockableTypeSerializer<>(nestedElementSerializerSnapshot.getRestoreSerializer(0)); }
@Override public LockableTypeSerializer<E> duplicate() { TypeSerializer<E> elementSerializerCopy = elementSerializer.duplicate(); return elementSerializerCopy == elementSerializer ? this : new LockableTypeSerializer<>(elementSerializerCopy); }
public SharedBuffer(KeyedStateStore stateStore, TypeSerializer<V> valueSerializer) { this.eventsBuffer = stateStore.getMapState( new MapStateDescriptor<>( eventsStateName, EventId.EventIdSerializer.INSTANCE, new Lockable.LockableTypeSerializer<>(valueSerializer))); this.entries = stateStore.getMapState( new MapStateDescriptor<>( entriesStateName, new NodeId.NodeIdSerializer(), new Lockable.LockableTypeSerializer<>(new SharedBufferNode.SharedBufferNodeSerializer()))); this.eventsCount = stateStore.getMapState( new MapStateDescriptor<>( eventsCountStateName, LongSerializer.INSTANCE, IntSerializer.INSTANCE)); }
/** * This tests that {@link Lockable.LockableTypeSerializer#duplicate()} works as expected. */ @Test public void testDuplicate() { IntSerializer nonDuplicatingInnerSerializer = IntSerializer.INSTANCE; Assert.assertSame(nonDuplicatingInnerSerializer, nonDuplicatingInnerSerializer.duplicate()); Lockable.LockableTypeSerializer<Integer> candidateTestShallowDuplicate = new Lockable.LockableTypeSerializer<>(nonDuplicatingInnerSerializer); Assert.assertSame(candidateTestShallowDuplicate, candidateTestShallowDuplicate.duplicate()); TestDuplicateSerializer duplicatingInnerSerializer = new TestDuplicateSerializer(); Assert.assertNotSame(duplicatingInnerSerializer, duplicatingInnerSerializer.duplicate()); Lockable.LockableTypeSerializer<Integer> candidateTestDeepDuplicate = new Lockable.LockableTypeSerializer<>(duplicatingInnerSerializer); Lockable.LockableTypeSerializer<Integer> deepDuplicate = candidateTestDeepDuplicate.duplicate(); Assert.assertNotSame(candidateTestDeepDuplicate, deepDuplicate); Assert.assertNotSame(candidateTestDeepDuplicate.getElementSerializer(), deepDuplicate.getElementSerializer()); } }
@Override protected Lockable.LockableTypeSerializer createOuterSerializerWithNestedSerializers(TypeSerializer<?>[] nestedSerializers) { @SuppressWarnings("unchecked") TypeSerializer<E> elementSerializer = (TypeSerializer<E>) nestedSerializers[0]; return new Lockable.LockableTypeSerializer<>(elementSerializer); }
@Override public Lockable<E> deserialize( Lockable<E> reuse, DataInputView source) throws IOException { return deserialize(source); }
@Override public Lockable<E> copy( Lockable<E> from, Lockable<E> reuse) { return copy(from); }
@Override public LockableTypeSerializer<E> duplicate() { TypeSerializer<E> elementSerializerCopy = elementSerializer.duplicate(); return elementSerializerCopy == elementSerializer ? this : new LockableTypeSerializer<>(elementSerializerCopy); }
@SuppressWarnings("unchecked") @Parameterized.Parameters(name = "Test Specification = {0}") public static Collection<TestSpecification<?>> testSpecifications() { final TestSpecifications testSpecifications = new TestSpecifications(MigrationVersion.v1_6, MigrationVersion.v1_7); testSpecifications.add( SPEC_NAME, Lockable.LockableTypeSerializer.class, LockableTypeSerializerSnapshot.class, () -> new Lockable.LockableTypeSerializer<>(StringSerializer.INSTANCE)); return testSpecifications.get(); } }
@Override protected TypeSerializer<?>[] getNestedSerializers(Lockable.LockableTypeSerializer outerSerializer) { return new TypeSerializer<?>[] { outerSerializer.getElementSerializer() }; } }