private static List<MetaData> fillMetaData( List<Tuple2<ColumnFamilyHandle, RegisteredStateMetaInfoBase>> metaDataCopy) { List<MetaData> metaData = new ArrayList<>(metaDataCopy.size()); for (Tuple2<ColumnFamilyHandle, RegisteredStateMetaInfoBase> metaInfo : metaDataCopy) { StateSnapshotTransformer<byte[]> stateSnapshotTransformer = null; if (metaInfo.f1 instanceof RegisteredKeyValueStateBackendMetaInfo) { stateSnapshotTransformer = ((RegisteredKeyValueStateBackendMetaInfo<?, ?>) metaInfo.f1). getStateSnapshotTransformFactory().createForSerializedState().orElse(null); } metaData.add(new MetaData(metaInfo.f0, metaInfo.f1, stateSnapshotTransformer)); } return metaData; }
@Override public Optional<StateSnapshotTransformer<byte[]>> createForSerializedState() { return snapshotTransformFactory.createForSerializedState() .map(RocksDBMapState.StateSnapshotTransformerWrapper::new); } }
@SuppressWarnings("unchecked") private <SV, SEV> StateSnapshotTransformer<SV> getStateSnapshotTransformer( StateDescriptor<?, SV> stateDesc, StateSnapshotTransformFactory<SEV> snapshotTransformFactory) { if (stateDesc instanceof ListStateDescriptor) { Optional<StateSnapshotTransformer<SEV>> original = snapshotTransformFactory.createForDeserializedState(); return original.map(est -> createRocksDBListStateTransformer(stateDesc, est)).orElse(null); } else if (stateDesc instanceof MapStateDescriptor) { Optional<StateSnapshotTransformer<byte[]>> original = snapshotTransformFactory.createForSerializedState(); return (StateSnapshotTransformer<SV>) original .map(RocksDBMapState.StateSnapshotTransformerWrapper::new).orElse(null); } else { Optional<StateSnapshotTransformer<byte[]>> original = snapshotTransformFactory.createForSerializedState(); return (StateSnapshotTransformer<SV>) original.orElse(null); } }
@SuppressWarnings("unchecked") private <SV, SEV> StateSnapshotTransformer<SV> getStateSnapshotTransformer( StateDescriptor<?, SV> stateDesc, StateSnapshotTransformFactory<SEV> snapshotTransformFactory) { if (stateDesc instanceof ListStateDescriptor) { Optional<StateSnapshotTransformer<SEV>> original = snapshotTransformFactory.createForDeserializedState(); return original.map(est -> createRocksDBListStateTransformer(stateDesc, est)).orElse(null); } else if (stateDesc instanceof MapStateDescriptor) { Optional<StateSnapshotTransformer<byte[]>> original = snapshotTransformFactory.createForSerializedState(); return (StateSnapshotTransformer<SV>) original .map(RocksDBMapState.StateSnapshotTransformerWrapper::new).orElse(null); } else { Optional<StateSnapshotTransformer<byte[]>> original = snapshotTransformFactory.createForSerializedState(); return (StateSnapshotTransformer<SV>) original.orElse(null); } }
@Override public Optional<StateSnapshotTransformer<byte[]>> createForSerializedState() { return snapshotTransformFactory.createForSerializedState(); } }