You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by bl...@apache.org on 2016/02/29 19:49:33 UTC
avro git commit: AVRO-1799: Fix GenericRecord#toString ByteBuffer bug.
Repository: avro
Updated Branches:
refs/heads/master 5e6ffb8d4 -> 62ad11dcf
AVRO-1799: Fix GenericRecord#toString ByteBuffer bug.
Reading the ByteBuffer to return a string representaton modified the
buffer's position. The solution is to duplicate the buffer before
reading its content.
Project: http://git-wip-us.apache.org/repos/asf/avro/repo
Commit: http://git-wip-us.apache.org/repos/asf/avro/commit/62ad11dc
Tree: http://git-wip-us.apache.org/repos/asf/avro/tree/62ad11dc
Diff: http://git-wip-us.apache.org/repos/asf/avro/diff/62ad11dc
Branch: refs/heads/master
Commit: 62ad11dcf765d6735ef652f4252d19e4ded7afae
Parents: 5e6ffb8
Author: Ryan Blue <bl...@apache.org>
Authored: Sun Feb 21 18:16:07 2016 -0800
Committer: Ryan Blue <bl...@apache.org>
Committed: Mon Feb 29 10:48:59 2016 -0800
----------------------------------------------------------------------
CHANGES.txt | 2 ++
.../avro/src/main/java/org/apache/avro/generic/GenericData.java | 2 +-
.../src/test/java/org/apache/avro/generic/TestGenericData.java | 4 +++-
3 files changed, 6 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/avro/blob/62ad11dc/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index cadc982..00d9deb 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -20,6 +20,8 @@ Trunk (not yet released)
AVRO-1493. Java: Avoid the "Turkish Locale Problem". Schema fingerprints are
now consistent regardless of the environment's locale.
+ AVRO-1799: Fix GenericRecord#toString ByteBuffer handling. (blue)
+
Avro 1.8.0 (22 January 2016)
INCOMPATIBLE CHANGES
http://git-wip-us.apache.org/repos/asf/avro/blob/62ad11dc/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java
----------------------------------------------------------------------
diff --git a/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java b/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java
index 7c70631..2b01de4 100644
--- a/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java
+++ b/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java
@@ -547,7 +547,7 @@ public class GenericData {
buffer.append("\"");
} else if (isBytes(datum)) {
buffer.append("{\"bytes\": \"");
- ByteBuffer bytes = (ByteBuffer)datum;
+ ByteBuffer bytes = ((ByteBuffer) datum).duplicate();
writeEscapedString(StandardCharsets.ISO_8859_1.decode(bytes), buffer);
buffer.append("\"}");
} else if (((datum instanceof Float) && // quote Nan & Infinity
http://git-wip-us.apache.org/repos/asf/avro/blob/62ad11dc/lang/java/avro/src/test/java/org/apache/avro/generic/TestGenericData.java
----------------------------------------------------------------------
diff --git a/lang/java/avro/src/test/java/org/apache/avro/generic/TestGenericData.java b/lang/java/avro/src/test/java/org/apache/avro/generic/TestGenericData.java
index 68c33b6..b8b59e2 100644
--- a/lang/java/avro/src/test/java/org/apache/avro/generic/TestGenericData.java
+++ b/lang/java/avro/src/test/java/org/apache/avro/generic/TestGenericData.java
@@ -321,7 +321,9 @@ public class TestGenericData {
@Test public void testToStringEscapesControlCharsInBytes() throws Exception {
GenericData data = GenericData.get();
- assertEquals("{\"bytes\": \"a\\nb\"}", data.toString(ByteBuffer.wrap(new byte[] {'a', '\n', 'b'})));
+ ByteBuffer bytes = ByteBuffer.wrap(new byte[] {'a', '\n', 'b'});
+ assertEquals("{\"bytes\": \"a\\nb\"}", data.toString(bytes));
+ assertEquals("{\"bytes\": \"a\\nb\"}", data.toString(bytes));
}
@Test public void testToStringFixed() throws Exception {