From 71abca2afb983fa451b1546e0d5fe308ca0b28aa Mon Sep 17 00:00:00 2001 From: Andreas Bergmeier Date: Thu, 21 Jun 2018 15:41:47 +0200 Subject: [PATCH] DBZ-759 Fix unusable array information in Serialization According to ErrorProne, (implicitly) calling toString on the array does not give useful information. Also applying Base64 encoding is strange here. --- .../main/java/io/debezium/data/SchemaUtil.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/debezium-core/src/main/java/io/debezium/data/SchemaUtil.java b/debezium-core/src/main/java/io/debezium/data/SchemaUtil.java index c4b4eaa98..7a365601b 100644 --- a/debezium-core/src/main/java/io/debezium/data/SchemaUtil.java +++ b/debezium-core/src/main/java/io/debezium/data/SchemaUtil.java @@ -9,7 +9,7 @@ import java.time.Instant; import java.time.format.DateTimeFormatter; import java.time.temporal.TemporalAccessor; -import java.util.Base64; +import java.util.Arrays; import java.util.List; import java.util.Map; @@ -175,10 +175,9 @@ public RecordWriter append(Object obj) { } sb.append('}'); } else if (obj instanceof ByteBuffer) { - ByteBuffer b = (ByteBuffer) obj; - sb.append('"').append(Base64.getEncoder().encode(b.array())).append('"'); + append((ByteBuffer)obj); } else if (obj instanceof byte[]) { - sb.append('"').append(Base64.getEncoder().encode((byte[])obj)).append('"'); + append((byte[])obj); } else if (obj instanceof Map) { Map map = (Map) obj; sb.append('{'); @@ -253,6 +252,15 @@ public RecordWriter append(Object obj) { return this; } + protected void append(ByteBuffer b) { + append(b.array()); + } + + protected void append(byte[] b) { + String arrayString = Arrays.toString(b); + sb.append('"').append(arrayString).append('"'); + } + protected void appendFirst(String name, Object value) { append(name); sb.append(" : ");