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 2009/11/24 22:25:16 UTC
svn commit: r883884 - in /hadoop/avro/trunk: CHANGES.txt
src/java/org/apache/avro/Protocol.java src/java/org/apache/avro/Schema.java
src/java/org/apache/avro/reflect/InduceSchemaTool.java
src/java/org/apache/avro/tool/Tool.java src/test/bin/test_avroj.sh
Author: cutting
Date: Tue Nov 24 21:25:15 2009
New Revision: 883884
URL: http://svn.apache.org/viewvc?rev=883884&view=rev
Log:
AVRO-236. Add protocol support to avroj induce tool.
Modified:
hadoop/avro/trunk/CHANGES.txt
hadoop/avro/trunk/src/java/org/apache/avro/Protocol.java
hadoop/avro/trunk/src/java/org/apache/avro/Schema.java
hadoop/avro/trunk/src/java/org/apache/avro/reflect/InduceSchemaTool.java
hadoop/avro/trunk/src/java/org/apache/avro/tool/Tool.java
hadoop/avro/trunk/src/test/bin/test_avroj.sh
Modified: hadoop/avro/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/CHANGES.txt?rev=883884&r1=883883&r2=883884&view=diff
==============================================================================
--- hadoop/avro/trunk/CHANGES.txt (original)
+++ hadoop/avro/trunk/CHANGES.txt Tue Nov 24 21:25:15 2009
@@ -103,6 +103,8 @@
AVRO-233. Elaborate Java tool API. (Philip Zeyliger via cutting)
+ AVRO-236. Add protocol support to avroj induce tool. (cutting)
+
OPTIMIZATIONS
AVRO-172. More efficient schema processing (massie)
Modified: hadoop/avro/trunk/src/java/org/apache/avro/Protocol.java
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/src/java/org/apache/avro/Protocol.java?rev=883884&r1=883883&r2=883884&view=diff
==============================================================================
--- hadoop/avro/trunk/src/java/org/apache/avro/Protocol.java (original)
+++ hadoop/avro/trunk/src/java/org/apache/avro/Protocol.java Tue Nov 24 21:25:15 2009
@@ -193,10 +193,18 @@
+ types.hashCode() + messages.hashCode();
}
- public String toString() {
+ /** Render this as <a href="http://json.org/">JSON</a>.*/
+ @Override
+ public String toString() { return toString(false); }
+
+ /** Render this as <a href="http://json.org/">JSON</a>.
+ * @param pretty if true, pretty-print JSON.
+ */
+ public String toString(boolean pretty) {
try {
StringWriter writer = new StringWriter();
JsonGenerator gen = Schema.FACTORY.createJsonGenerator(writer);
+ if (pretty) gen.useDefaultPrettyPrinter();
toJson(gen);
gen.flush();
return writer.toString();
Modified: hadoop/avro/trunk/src/java/org/apache/avro/Schema.java
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/src/java/org/apache/avro/Schema.java?rev=883884&r1=883883&r2=883884&view=diff
==============================================================================
--- hadoop/avro/trunk/src/java/org/apache/avro/Schema.java (original)
+++ hadoop/avro/trunk/src/java/org/apache/avro/Schema.java Tue Nov 24 21:25:15 2009
@@ -200,10 +200,17 @@
}
/** Render this as <a href="http://json.org/">JSON</a>.*/
- public String toString() {
+ @Override
+ public String toString() { return toString(false); }
+
+ /** Render this as <a href="http://json.org/">JSON</a>.
+ * @param pretty if true, pretty-print JSON.
+ */
+ public String toString(boolean pretty) {
try {
StringWriter writer = new StringWriter();
JsonGenerator gen = FACTORY.createJsonGenerator(writer);
+ if (pretty) gen.useDefaultPrettyPrinter();
toJson(new Names(), gen);
gen.flush();
return writer.toString();
Modified: hadoop/avro/trunk/src/java/org/apache/avro/reflect/InduceSchemaTool.java
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/src/java/org/apache/avro/reflect/InduceSchemaTool.java?rev=883884&r1=883883&r2=883884&view=diff
==============================================================================
--- hadoop/avro/trunk/src/java/org/apache/avro/reflect/InduceSchemaTool.java (original)
+++ hadoop/avro/trunk/src/java/org/apache/avro/reflect/InduceSchemaTool.java Tue Nov 24 21:25:15 2009
@@ -27,8 +27,7 @@
import org.apache.avro.tool.Tool;
/**
- * Utility to induce the schema of a given class using
- * reflection.
+ * Utility to induce a schema from a class or a protocol from an interface.
*/
public class InduceSchemaTool implements Tool {
@@ -57,7 +56,11 @@
}
Class<?> klass = classLoader.loadClass(className);
- System.out.println(ReflectData.get().getSchema(klass).toString());
+ if (klass.isInterface()) {
+ System.out.println(ReflectData.get().getProtocol(klass).toString(true));
+ } else {
+ System.out.println(ReflectData.get().getSchema(klass).toString(true));
+ }
}
@Override
@@ -67,6 +70,7 @@
@Override
public String getShortDescription() {
- return "Uses reflection to induce schema for a given class.";
+ return "Use reflection to induce a schema from a class"
+ + " or a protocol from an interface.";
}
}
Modified: hadoop/avro/trunk/src/java/org/apache/avro/tool/Tool.java
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/src/java/org/apache/avro/tool/Tool.java?rev=883884&r1=883883&r2=883884&view=diff
==============================================================================
--- hadoop/avro/trunk/src/java/org/apache/avro/tool/Tool.java (original)
+++ hadoop/avro/trunk/src/java/org/apache/avro/tool/Tool.java Tue Nov 24 21:25:15 2009
@@ -18,7 +18,6 @@
package org.apache.avro.tool;
import java.io.InputStream;
-import java.io.OutputStream;
import java.io.PrintStream;
import java.util.List;
@@ -48,4 +47,4 @@
* 1-line description to be used in command listings.
*/
String getShortDescription();
-}
\ No newline at end of file
+}
Modified: hadoop/avro/trunk/src/test/bin/test_avroj.sh
URL: http://svn.apache.org/viewvc/hadoop/avro/trunk/src/test/bin/test_avroj.sh?rev=883884&r1=883883&r2=883884&view=diff
==============================================================================
--- hadoop/avro/trunk/src/test/bin/test_avroj.sh (original)
+++ hadoop/avro/trunk/src/test/bin/test_avroj.sh Tue Nov 24 21:25:15 2009
@@ -54,9 +54,13 @@
"$(find $TMPDIR/schema -name "*.java" \
| awk -F "/" '{ print $NF }' | sort | tr '\n' ' ')" ]
######################################################################
-echo "Testing induce schema..."
-$CMD induce build/test/classes org.apache.avro.BarRecord | grep -q -F \
- '{"type":"record","name":"BarRecord","namespace":"org.apache.avro","fields":[{"name":"beerMsg","type":"string"}]}'
+# Testing induce schema
+$CMD induce build/test/classes org.apache.avro.BarRecord \
+ | tr -d '\n ' | grep -q -F '{"type":"record","name":"BarRecord"'
+######################################################################
+# Test induce protocol
+$CMD induce build/test/classes 'org.apache.avro.TestReflect$C' \
+ | tr -d '\n ' | grep -q -F '{"protocol":"C"'
######################################################################
$CMD 2>&1 | grep -q "Available tools:"
$CMD doesnotexist 2>&1 | grep -q "Available tools:"