/** * Creates a new {@code ListStateDescriptor} with the given name and list element type. * * @param name The (unique) name for the state. * @param typeSerializer The type serializer for the list values. */ public ListStateDescriptor(String name, TypeSerializer<T> typeSerializer) { super(name, new ListSerializer<>(typeSerializer), null); }
@Override protected TypeSerializer<?>[] getNestedSerializers(ListSerializer outerSerializer) { return new TypeSerializer<?>[] { outerSerializer.getElementSerializer() }; } }
@Override public List<T> copy(List<T> from, List<T> reuse) { return copy(from); }
@Override public List<T> deserialize(List<T> reuse, DataInputView source) throws IOException { return deserialize(source); }
@Override public void serialize(SharedBufferNode record, DataOutputView target) throws IOException { edgesSerializer.serialize(record.edges, target); }
@Override public SharedBufferNode deserialize(DataInputView source) throws IOException { List<SharedBufferEdge> edges = edgesSerializer.deserialize(source); return new SharedBufferNode(edges); }
@Override public void serialize(SharedBufferNode record, DataOutputView target) throws IOException { edgesSerializer.serialize(record.edges, target); }
@Override protected ListSerializer createOuterSerializerWithNestedSerializers(TypeSerializer<?>[] nestedSerializers) { @SuppressWarnings("unchecked") TypeSerializer<T> elementSerializer = (TypeSerializer<T>) nestedSerializers[0]; return new ListSerializer<>(elementSerializer); }
/** * Creates a new {@code RocksDBListState}. * * @param columnFamily The RocksDB column family that this state is associated to. * @param namespaceSerializer The serializer for the namespace. * @param valueSerializer The serializer for the state. * @param defaultValue The default value for the state. * @param backend The backend for which this state is bind to. */ private RocksDBListState( ColumnFamilyHandle columnFamily, TypeSerializer<N> namespaceSerializer, TypeSerializer<List<V>> valueSerializer, List<V> defaultValue, RocksDBKeyedStateBackend<K> backend) { super(columnFamily, namespaceSerializer, valueSerializer, defaultValue, backend); ListSerializer<V> castedListSerializer = (ListSerializer<V>) valueSerializer; this.elementSerializer = castedListSerializer.getElementSerializer(); }
@Override public void copy(DataInputView source, DataOutputView target) throws IOException { edgesSerializer.copy(source, target); }
@Override public List<T> deserialize(List<T> reuse, DataInputView source) throws IOException { return deserialize(source); }
@Override public void serialize(SharedBufferNode record, DataOutputView target) throws IOException { edgesSerializer.serialize(record.edges, target); }
@Override protected TypeSerializer<List<Long>> createSerializer() { return new ListSerializer<>(LongSerializer.INSTANCE); }
/** * Gets the serializer for the elements contained in the list. * * @return The serializer for the elements in the list. */ public TypeSerializer<T> getElementSerializer() { // call getSerializer() here to get the initialization check and proper error message final TypeSerializer<List<T>> rawSerializer = getSerializer(); if (!(rawSerializer instanceof ListSerializer)) { throw new IllegalStateException(); } return ((ListSerializer<T>) rawSerializer).getElementSerializer(); }
@Override public SharedBufferNode copy(SharedBufferNode from) { return new SharedBufferNode(edgesSerializer.copy(from.edges)); }
@Override public List<T> deserialize(List<T> reuse, DataInputView source) throws IOException { return deserialize(source); }
@Override public TypeSerializer<List<T>> duplicate() { TypeSerializer<T> duplicateElement = elementSerializer.duplicate(); return duplicateElement == elementSerializer ? this : new ListSerializer<>(duplicateElement); }
@SuppressWarnings("unchecked") static <SV, SEV> StateSnapshotTransformFactory<SV> wrapStateSnapshotTransformFactory( StateDescriptor<?, SV> stateDesc, StateSnapshotTransformFactory<SEV> snapshotTransformFactory, TypeSerializer<SV> stateSerializer) { if (stateDesc instanceof ListStateDescriptor) { TypeSerializer<SEV> elementSerializer = ((ListSerializer<SEV>) stateSerializer).getElementSerializer(); return new RocksDBListStateSnapshotTransformFactory<>(snapshotTransformFactory, elementSerializer); } else if (stateDesc instanceof MapStateDescriptor) { return new RocksDBMapStateSnapshotTransformFactory<>(snapshotTransformFactory); } else { return new RocksDBValueStateSnapshotTransformFactory<>(snapshotTransformFactory); } }
@Override public List<T> copy(List<T> from, List<T> reuse) { return copy(from); }
@Override public SharedBufferNode deserialize(DataInputView source) throws IOException { List<SharedBufferEdge> edges = edgesSerializer.deserialize(source); return new SharedBufferNode(edges); }