@Override protected GenericArraySerializer createOuterSerializerWithNestedSerializers(TypeSerializer<?>[] nestedSerializers) { @SuppressWarnings("unchecked") TypeSerializer<C> componentSerializer = (TypeSerializer<C>) nestedSerializers[0]; return new GenericArraySerializer<>(componentClass, componentSerializer); }
@Override public GenericArraySerializer<C> duplicate() { TypeSerializer<C> duplicateComponentSerializer = this.componentSerializer.duplicate(); if (duplicateComponentSerializer == this.componentSerializer) { // is not stateful, return ourselves return this; } else { return new GenericArraySerializer<C>(componentClass, duplicateComponentSerializer); } }
private <T> GenericArraySerializer<T> createSerializer(Class<T> type, TypeSerializer<T> componentSerializer) { return new GenericArraySerializer<T>(type, componentSerializer); }
@Override public GenericArraySerializer<C> restoreSerializer() { checkState(componentClass != null && nestedSnapshot != null); return new GenericArraySerializer<>(componentClass, nestedSnapshot.getRestoredNestedSerializer(0)); }
@SuppressWarnings("unchecked") @Override @PublicEvolving public TypeSerializer<T> createSerializer(ExecutionConfig executionConfig) { return (TypeSerializer<T>) new GenericArraySerializer<C>( componentInfo.getTypeClass(), componentInfo.createSerializer(executionConfig)); }
@Override @SuppressWarnings("unchecked") @PublicEvolving public TypeSerializer<T> createSerializer(ExecutionConfig executionConfig) { // special case the string array if (componentInfo.getTypeClass().equals(String.class)) { return (TypeSerializer<T>) StringArraySerializer.INSTANCE; } else { return (TypeSerializer<T>) new GenericArraySerializer<>( this.componentInfo.getTypeClass(), this.componentInfo.createSerializer(executionConfig)); } }
@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( "either-serializer", EitherSerializer.class, JavaEitherSerializerSnapshot.class, () -> new EitherSerializer<>(StringSerializer.INSTANCE, IntSerializer.INSTANCE)); testSpecifications.add( "generic-array-serializer", GenericArraySerializer.class, GenericArraySerializerSnapshot.class, () -> new GenericArraySerializer<>(String.class, StringSerializer.INSTANCE)); return testSpecifications.get(); } }
@Override public GenericArraySerializer<C> duplicate() { TypeSerializer<C> duplicateComponentSerializer = this.componentSerializer.duplicate(); if (duplicateComponentSerializer == this.componentSerializer) { // is not stateful, return ourselves return this; } else { return new GenericArraySerializer<C>(componentClass, duplicateComponentSerializer); } }
@Override public GenericArraySerializer<C> duplicate() { TypeSerializer<C> duplicateComponentSerializer = this.componentSerializer.duplicate(); if (duplicateComponentSerializer == this.componentSerializer) { // is not stateful, return ourselves return this; } else { return new GenericArraySerializer<C>(componentClass, duplicateComponentSerializer); } }
@Override public TypeSerializer<C[]> restoreSerializer() { checkState(componentClass != null && nestedSnapshot != null); return new GenericArraySerializer<>(componentClass, nestedSnapshot.getRestoreSerializer(0)); }
@SuppressWarnings("unchecked") @Override @PublicEvolving public TypeSerializer<T> createSerializer(ExecutionConfig executionConfig) { return (TypeSerializer<T>) new GenericArraySerializer<C>( componentInfo.getTypeClass(), componentInfo.createSerializer(executionConfig)); }
@SuppressWarnings("unchecked") @Override @PublicEvolving public TypeSerializer<T> createSerializer(ExecutionConfig executionConfig) { return (TypeSerializer<T>) new GenericArraySerializer<C>( componentInfo.getTypeClass(), componentInfo.createSerializer(executionConfig)); }
@Override @SuppressWarnings("unchecked") @PublicEvolving public TypeSerializer<T> createSerializer(ExecutionConfig executionConfig) { // special case the string array if (componentInfo.getTypeClass().equals(String.class)) { return (TypeSerializer<T>) StringArraySerializer.INSTANCE; } else { return (TypeSerializer<T>) new GenericArraySerializer<>( this.componentInfo.getTypeClass(), this.componentInfo.createSerializer(executionConfig)); } }
@Override @SuppressWarnings("unchecked") @PublicEvolving public TypeSerializer<T> createSerializer(ExecutionConfig executionConfig) { // special case the string array if (componentInfo.getTypeClass().equals(String.class)) { return (TypeSerializer<T>) StringArraySerializer.INSTANCE; } else { return (TypeSerializer<T>) new GenericArraySerializer<>( this.componentInfo.getTypeClass(), this.componentInfo.createSerializer(executionConfig)); } }
@Override public CompatibilityResult<C[]> ensureCompatibility(TypeSerializerConfigSnapshot configSnapshot) { if (configSnapshot instanceof GenericArraySerializerConfigSnapshot) { final GenericArraySerializerConfigSnapshot config = (GenericArraySerializerConfigSnapshot) configSnapshot; if (componentClass.equals(config.getComponentClass())) { Tuple2<TypeSerializer<?>, TypeSerializerConfigSnapshot> previousComponentSerializerAndConfig = config.getSingleNestedSerializerAndConfig(); CompatibilityResult<C> compatResult = CompatibilityUtil.resolveCompatibilityResult( previousComponentSerializerAndConfig.f0, UnloadableDummyTypeSerializer.class, previousComponentSerializerAndConfig.f1, componentSerializer); if (!compatResult.isRequiresMigration()) { return CompatibilityResult.compatible(); } else if (compatResult.getConvertDeserializer() != null) { return CompatibilityResult.requiresMigration( new GenericArraySerializer<>( componentClass, new TypeDeserializerAdapter<>(compatResult.getConvertDeserializer()))); } } } return CompatibilityResult.requiresMigration(); } }