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 2010/10/29 23:30:55 UTC
svn commit: r1028910 - in /avro/trunk: CHANGES.txt
lang/java/src/java/org/apache/avro/io/parsing/ResolvingGrammarGenerator.java
lang/py/src/avro/io.py
Author: cutting
Date: Fri Oct 29 21:30:55 2010
New Revision: 1028910
URL: http://svn.apache.org/viewvc?rev=1028910&view=rev
Log:
AVRO-642. Pretty-print schemas in some validation error messages. Contributed by Harsh J Chouraria.
Modified:
avro/trunk/CHANGES.txt
avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/ResolvingGrammarGenerator.java
avro/trunk/lang/py/src/avro/io.py
Modified: avro/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/avro/trunk/CHANGES.txt?rev=1028910&r1=1028909&r2=1028910&view=diff
==============================================================================
--- avro/trunk/CHANGES.txt (original)
+++ avro/trunk/CHANGES.txt Fri Oct 29 21:30:55 2010
@@ -22,6 +22,9 @@ Avro 1.5.0 (unreleased)
AVRO-683. Java: Fix RPC proxy factories to not require casting.
(Stephen Gargan via cutting)
+ AVRO-642. Java, Python: Pretty-print schemas in some validation
+ error messages. (Harsh J Chouraria via cutting)
+
BUG FIXES
AVRO-675. C: Bytes and fixed setters don't update datum size.
Modified: avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/ResolvingGrammarGenerator.java
URL: http://svn.apache.org/viewvc/avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/ResolvingGrammarGenerator.java?rev=1028910&r1=1028909&r2=1028910&view=diff
==============================================================================
--- avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/ResolvingGrammarGenerator.java (original)
+++ avro/trunk/lang/java/src/java/org/apache/avro/io/parsing/ResolvingGrammarGenerator.java Fri Oct 29 21:30:55 2010
@@ -167,7 +167,8 @@ public class ResolvingGrammarGenerator e
throw new RuntimeException("Unexpected schema type: " + readerType);
}
}
- return Symbol.error("Found " + writer + ", expecting " + reader);
+ return Symbol.error("Found " + writer.toString(true)
+ + ", expecting " + reader.toString(true));
}
private Symbol resolveUnion(Schema writer, Schema reader,
@@ -216,7 +217,8 @@ public class ResolvingGrammarGenerator e
String fname = rf.name();
if (writer.getField(fname) == null) {
if (rf.defaultValue() == null) {
- result = Symbol.error("Found " + writer + ", expecting " + reader);
+ result = Symbol.error("Found " + writer.toString(true)
+ + ", expecting " + reader.toString(true));
seen.put(wsc, result);
return result;
} else {
Modified: avro/trunk/lang/py/src/avro/io.py
URL: http://svn.apache.org/viewvc/avro/trunk/lang/py/src/avro/io.py?rev=1028910&r1=1028909&r2=1028910&view=diff
==============================================================================
--- avro/trunk/lang/py/src/avro/io.py (original)
+++ avro/trunk/lang/py/src/avro/io.py Fri Oct 29 21:30:55 2010
@@ -40,6 +40,11 @@ import struct
from avro import schema
import sys
+try:
+ import json
+except ImportError:
+ import simplejson as json
+
#
# Constants
#
@@ -74,14 +79,17 @@ STRUCT_DOUBLE = struct_class('!d') # bi
class AvroTypeException(schema.AvroException):
"""Raised when datum is not an example of schema."""
def __init__(self, expected_schema, datum):
+ pretty_expected = json.dumps(json.loads(str(expected_schema)), indent=2)
fail_msg = "The datum %s is not an example of the schema %s"\
- % (datum, expected_schema)
+ % (datum, pretty_expected)
schema.AvroException.__init__(self, fail_msg)
class SchemaResolutionException(schema.AvroException):
def __init__(self, fail_msg, writers_schema=None, readers_schema=None):
- if writers_schema: fail_msg += "\nWriter's Schema: %s" % writers_schema
- if readers_schema: fail_msg += "\nReader's Schema: %s" % readers_schema
+ pretty_writers = json.dumps(json.loads(str(writers_schema)), indent=2)
+ pretty_readers = json.dumps(json.loads(str(readers_schema)), indent=2)
+ if writers_schema: fail_msg += "\nWriter's Schema: %s" % pretty_writers
+ if readers_schema: fail_msg += "\nReader's Schema: %s" % pretty_readers
schema.AvroException.__init__(self, fail_msg)
#