From e3333c9625e56138c9f28b0d626857af37fd704a Mon Sep 17 00:00:00 2001 From: Colin Dixon Date: Thu, 9 Apr 2015 20:36:49 -0400 Subject: [PATCH] Provide better error messages when parsing JSON. Change-Id: Ia3a613964ce74a6179a568098b83f9d3755fb9a4 Signed-off-by: Colin Dixon --- .../yangtools/yang/data/codec/gson/JsonParserStream.java | 6 +++--- .../data/codec/gson/JsonStreamToNormalizedNodeTest.java | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) 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")); } } -- 2.36.6