Jelajahi Sumber

HADOOP-1165. In records, replace identical generated toString methods with a method on the base class. Contributed by Milind.

git-svn-id: https://svn.apache.org/repos/asf/lucene/hadoop/trunk@524178 13f79535-47bb-0310-9956-ffa450edef68
Doug Cutting 18 tahun lalu
induk
melakukan
76e36a2ce9

+ 3 - 0
CHANGES.txt

@@ -52,6 +52,9 @@ Trunk (unreleased changes)
     "reduce input records" counter to be "reduce input groups".
     (David Bowen via cutting)
 
+16. HADOOP-1165.  In records, replace idential generated toString
+    methods with a method on the base class.  (Milind Bhandarkar via cutting)
+
 
 Release 0.12.3 (not yet released)
 

+ 13 - 0
src/java/org/apache/hadoop/record/Record.java

@@ -20,6 +20,7 @@ package org.apache.hadoop.record;
 
 import java.io.DataInput;
 import java.io.DataOutput;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import org.apache.hadoop.io.WritableComparable;
 
@@ -76,4 +77,16 @@ public abstract class Record implements WritableComparable, Cloneable {
     BinaryRecordInput rin = BinaryRecordInput.get(din);
     this.deserialize(rin);
   }
+
+  // inherit javadoc
+  public String toString() {
+    try {
+      ByteArrayOutputStream s = new ByteArrayOutputStream();
+      CsvRecordOutput a = new CsvRecordOutput(s);
+      this.serialize(a);
+      return new String(s.toByteArray(), "UTF-8");
+    } catch (Throwable ex) {
+      throw new RuntimeException(ex);
+    }
+  }
 }

+ 0 - 13
src/java/org/apache/hadoop/record/compiler/JRecord.java

@@ -161,19 +161,6 @@ public class JRecord extends JCompType {
       cb.append("a.endRecord(tag);\n");
       cb.append("}\n");
       
-      cb.append("public String toString() {\n");
-      cb.append("try {\n");
-      cb.append("java.io.ByteArrayOutputStream s =\n");
-      cb.append("  new java.io.ByteArrayOutputStream();\n");
-      cb.append("org.apache.hadoop.record.CsvRecordOutput a = \n");
-      cb.append("  new org.apache.hadoop.record.CsvRecordOutput(s);\n");
-      cb.append("this.serialize(a);\n");
-      cb.append("return new String(s.toByteArray(), \"UTF-8\");\n");
-      cb.append("} catch (Throwable ex) {\n");
-      cb.append("throw new RuntimeException(ex);\n");
-      cb.append("}\n");
-      cb.append("}\n");
-      
       cb.append("public int compareTo (final Object peer_) throws ClassCastException {\n");
       cb.append("if (!(peer_ instanceof "+name+")) {\n");
       cb.append("throw new ClassCastException(\"Comparing different types of records.\");\n");