diff --git a/src/main/java/com/github/shyiko/mysql/binlog/event/deserialization/json/JsonBinary.java b/src/main/java/com/github/shyiko/mysql/binlog/event/deserialization/json/JsonBinary.java index a6b5fc0e..61fe3e66 100644 --- a/src/main/java/com/github/shyiko/mysql/binlog/event/deserialization/json/JsonBinary.java +++ b/src/main/java/com/github/shyiko/mysql/binlog/event/deserialization/json/JsonBinary.java @@ -189,6 +189,7 @@ public JsonBinary(byte[] bytes) { public JsonBinary(ByteArrayInputStream contents) { this.reader = contents; + this.reader.mark(Integer.MAX_VALUE); } public String getString() { @@ -397,6 +398,8 @@ protected void parseObject(boolean small, JsonFormatter formatter) } } else { // Parse the value ... + this.reader.reset(); + this.reader.skip(entry.index + 1); parse(entry.type, formatter); } } diff --git a/src/main/java/com/github/shyiko/mysql/binlog/io/ByteArrayInputStream.java b/src/main/java/com/github/shyiko/mysql/binlog/io/ByteArrayInputStream.java index 350b8709..d899818c 100644 --- a/src/main/java/com/github/shyiko/mysql/binlog/io/ByteArrayInputStream.java +++ b/src/main/java/com/github/shyiko/mysql/binlog/io/ByteArrayInputStream.java @@ -218,4 +218,18 @@ public void skipToTheEndOfTheBlock() throws IOException { } } + @Override + public synchronized void mark(int readlimit) { + inputStream.mark(readlimit); + } + + @Override + public boolean markSupported() { + return inputStream.markSupported(); + } + + @Override + public synchronized void reset() throws IOException { + inputStream.reset(); + } }