You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by cu...@apache.org on 2012/09/13 22:04:48 UTC

svn commit: r1384500 - in /avro/trunk: CHANGES.txt lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java lang/java/avro/src/test/java/org/apache/avro/generic/TestGenericData.java

Author: cutting
Date: Thu Sep 13 20:04:47 2012
New Revision: 1384500

URL: http://svn.apache.org/viewvc?rev=1384500&view=rev
Log:
AVRO-851. Java: Fix a bug in GenericData#toString() when escaping characters.  Contributed by Jeff Mesnil.

Modified:
    avro/trunk/CHANGES.txt
    avro/trunk/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java
    avro/trunk/lang/java/avro/src/test/java/org/apache/avro/generic/TestGenericData.java

Modified: avro/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/avro/trunk/CHANGES.txt?rev=1384500&r1=1384499&r2=1384500&view=diff
==============================================================================
--- avro/trunk/CHANGES.txt (original)
+++ avro/trunk/CHANGES.txt Thu Sep 13 20:04:47 2012
@@ -49,6 +49,9 @@ Avro 1.7.2 (unreleased)
     AVRO-1155. Stringable Date test in TestReflect fails if timezone doesn't
     match locale's default. Removed Date from built-in stringables. (tomwhite)
 
+    AVRO-851. Java: Fix a bug in GenericData#toString() when escaping
+    characters. (Jeff Mesnil via cutting)
+
 Avro 1.7.1 (16 July 2012)
 
   NEW FEATURES

Modified: avro/trunk/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java?rev=1384500&r1=1384499&r2=1384500&view=diff
==============================================================================
--- avro/trunk/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java (original)
+++ avro/trunk/lang/java/avro/src/main/java/org/apache/avro/generic/GenericData.java Thu Sep 13 20:04:47 2012
@@ -445,9 +445,9 @@ public class GenericData {
           if((ch>='\u0000' && ch<='\u001F') || (ch>='\u007F' && ch<='\u009F') || (ch>='\u2000' && ch<='\u20FF')){
             String hex = Integer.toHexString(ch);
             builder.append("\\u");
-            for(int j = 0; j < 4-builder.length(); j++)
+            for(int j = 0; j < 4 - hex.length(); j++)
               builder.append('0');
-            builder.append(string.toUpperCase());
+            builder.append(hex.toUpperCase());
           } else {
             builder.append(ch);
           }

Modified: avro/trunk/lang/java/avro/src/test/java/org/apache/avro/generic/TestGenericData.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/avro/src/test/java/org/apache/avro/generic/TestGenericData.java?rev=1384500&r1=1384499&r2=1384500&view=diff
==============================================================================
--- avro/trunk/lang/java/avro/src/test/java/org/apache/avro/generic/TestGenericData.java (original)
+++ avro/trunk/lang/java/avro/src/test/java/org/apache/avro/generic/TestGenericData.java Thu Sep 13 20:04:47 2012
@@ -305,7 +305,8 @@ public class TestGenericData {
     schema.setFields(Arrays.asList(stringField, enumField));
     
     GenericRecord r = new GenericData.Record(schema);
-    r.put(stringField.name(), "hello\nthere\"\tyou}");
+    // \u2013 is EN DASH
+    r.put(stringField.name(), "hello\nthere\"\tyou\u2013}");
     r.put(enumField.name(), new GenericData.EnumSymbol(enumField.schema(),"a"));
     
     String json = r.toString();