From: Robert Varga Date: Fri, 22 Jan 2016 17:56:06 +0000 (+0100) Subject: Add leaf context when value deserialization fails X-Git-Tag: release/beryllium~17 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;ds=sidebyside;h=07100904d0ac0aa25288187526f8f25466b84cc2;hp=f3a3253eb4a5033515898723fcee5a9819135729;p=yangtools.git Add leaf context when value deserialization fails When the codecs throw an IllegalArgumentException, it is useful to know which leaf has failed to parse. Catch the exception and chain it to an exception which gives more context. Change-Id: I6466b5d86294a1f0116477081267a80c0a696bfb Signed-off-by: Robert Varga --- diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/LeafNodeDomParser.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/LeafNodeDomParser.java index e059deadf9..6f32c13c1c 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/LeafNodeDomParser.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/LeafNodeDomParser.java @@ -20,7 +20,6 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.w3c.dom.Element; final class LeafNodeDomParser extends LeafNodeBaseParser { - private final XmlCodecProvider codecProvider; private final SchemaContext ctx; @@ -38,13 +37,17 @@ final class LeafNodeDomParser extends LeafNodeBaseParser { @Override protected Object parseLeaf(final Element xmlElement, final LeafSchemaNode schema) { - return ctx == null ? DomUtils.parseXmlValue(xmlElement, codecProvider, schema.getType()) - : DomUtils.parseXmlValue(xmlElement, codecProvider, schema, schema.getType(), ctx); + try { + return ctx == null ? DomUtils.parseXmlValue(xmlElement, codecProvider, schema.getType()) + : DomUtils.parseXmlValue(xmlElement, codecProvider, schema, schema.getType(), ctx); + } catch (IllegalArgumentException e) { + throw new IllegalArgumentException(String.format("Failed to parse element %s as leaf %s", + xmlElement, schema.getPath()), e); + } } @Override protected Map getAttributes(final Element element) { return DomUtils.toAttributes(element.getAttributes()); } - }