From: Colin Dixon Date: Fri, 10 Apr 2015 00:36:49 +0000 (-0400) Subject: Provide better error messages when parsing JSON. X-Git-Tag: release/lithium~14 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F71%2F20171%2F4;p=yangtools.git Provide better error messages when parsing JSON. Change-Id: Ia3a613964ce74a6179a568098b83f9d3755fb9a4 Signed-off-by: Colin Dixon --- diff --git a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonParserStream.java b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonParserStream.java index f7eeff3f01..69cfb6fea4 100644 --- a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonParserStream.java +++ b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonParserStream.java @@ -105,7 +105,7 @@ public final class JsonParserStream implements Closeable, Flushable { } private final void setValue(final AbstractNodeDataWithSchema parent, final String value) { - Preconditions.checkArgument(parent instanceof SimpleNodeDataWithSchema, "Node %s is not a simple type", parent); + Preconditions.checkArgument(parent instanceof SimpleNodeDataWithSchema, "Node %s is not a simple type", parent.getSchema().getQName()); final Object translatedValue = translateValueByType(value, parent.getSchema()); ((SimpleNodeDataWithSchema) parent).setValue(translatedValue); @@ -199,7 +199,7 @@ public final class JsonParserStream implements Closeable, Flushable { } else if (parent instanceof LeafListNodeDataWithSchema) { newChild = new LeafListEntryNodeDataWithSchema(parent.getSchema()); } else { - throw new IllegalStateException("Incorrec nesting caused by parser."); + throw new IllegalStateException("Found an unexpected array nested under "+ parent.getSchema().getQName()); } ((CompositeNodeDataWithSchema) parent).addChild(newChild); return newChild; @@ -250,7 +250,7 @@ public final class JsonParserStream implements Closeable, Flushable { } else if (potentialUris.size() > 1) { throw new IllegalStateException("Choose suitable module name for element "+nodeNamePart+":"+toModuleNames(potentialUris)); } else if (potentialUris.isEmpty()) { - throw new IllegalStateException("Schema node with name "+nodeNamePart+" wasn't found."); + throw new IllegalStateException("Schema node with name "+nodeNamePart+" wasn't found under "+dataSchemaNode.getQName()+"."); } } diff --git a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonStreamToNormalizedNodeTest.java b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonStreamToNormalizedNodeTest.java index 4f59b16c03..0fff8ade85 100644 --- a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonStreamToNormalizedNodeTest.java +++ b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonStreamToNormalizedNodeTest.java @@ -207,7 +207,7 @@ public class JsonStreamToNormalizedNodeTest { //second parameter isn't necessary because error will be raised before it is used. verifyTransformationToNormalizedNode(inputJson, null); } catch (final IllegalStateException e) { - assertTrue(e.getMessage().contains("Schema node with name dummy-element wasn't found.")); + assertTrue(e.getMessage().contains("Schema node with name dummy-element wasn't found")); } }