You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by al...@apache.org on 2019/02/21 10:59:21 UTC

[flink] 02/06: [FLINK-11334] Don't use IntSerializer in EnumValueSerializer

This is an automated email from the ASF dual-hosted git repository.

aljoscha pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git

commit 6d9b45b94ef3f12ecb9be38fe8c7662eeb7ea72c
Author: Aljoscha Krettek <al...@gmail.com>
AuthorDate: Tue Feb 19 15:59:13 2019 +0100

    [FLINK-11334] Don't use IntSerializer in EnumValueSerializer
    
    Using an IntSerialize technically makes EnumValueSerializer a composite
    serializer, which it doesn't have to be. This decouples
    EnumValueSerializer from any future changes to IntSerializer.
---
 .../flink/api/scala/typeutils/EnumValueSerializer.scala     | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/EnumValueSerializer.scala b/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/EnumValueSerializer.scala
index 84ce017..6733099 100644
--- a/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/EnumValueSerializer.scala
+++ b/flink-scala/src/main/scala/org/apache/flink/api/scala/typeutils/EnumValueSerializer.scala
@@ -21,7 +21,6 @@ import java.io.IOException
 
 import org.apache.flink.annotation.Internal
 import org.apache.flink.api.common.typeutils.{TypeSerializer, TypeSerializerConfigSnapshot, TypeSerializerSchemaCompatibility}
-import org.apache.flink.api.common.typeutils.base.IntSerializer
 import org.apache.flink.api.java.typeutils.runtime.{DataInputViewStream, DataOutputViewStream}
 import org.apache.flink.core.memory.{DataInputView, DataOutputView}
 import org.apache.flink.util.{InstantiationUtil, Preconditions}
@@ -37,25 +36,25 @@ class EnumValueSerializer[E <: Enumeration](val enum: E) extends TypeSerializer[
 
   type T = E#Value
 
-  val intSerializer = new IntSerializer()
-
   override def duplicate: EnumValueSerializer[E] = this
 
   override def createInstance: T = enum(0)
 
   override def isImmutableType: Boolean = true
 
-  override def getLength: Int = intSerializer.getLength
+  override def getLength: Int = 4
 
   override def copy(from: T): T = enum.apply(from.id)
 
   override def copy(from: T, reuse: T): T = copy(from)
 
-  override def copy(src: DataInputView, tgt: DataOutputView): Unit = intSerializer.copy(src, tgt)
+  override def copy(src: DataInputView, tgt: DataOutputView): Unit = {
+    tgt.writeInt(src.readInt())
+  }
 
-  override def serialize(v: T, tgt: DataOutputView): Unit = intSerializer.serialize(v.id, tgt)
+  override def serialize(v: T, tgt: DataOutputView): Unit = tgt.writeInt(v.id)
 
-  override def deserialize(source: DataInputView): T = enum(intSerializer.deserialize(source))
+  override def deserialize(source: DataInputView): T = enum(source.readInt())
 
   override def deserialize(reuse: T, source: DataInputView): T = deserialize(source)