Add leaf context when value deserialization fails
[yangtools.git] / yang / yang-data-impl / src / main / java / org / opendaylight / yangtools / yang / data / impl / schema / transform / dom / parser / LeafNodeDomParser.java
index e059deadf9ea534880687d5e578cd36358749c91..6f32c13c1ca2d3fe80cfac2e30a6e59978d6bd09 100644 (file)
@@ -20,7 +20,6 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.w3c.dom.Element;
 
 final class LeafNodeDomParser extends LeafNodeBaseParser<Element> {
-
     private final XmlCodecProvider codecProvider;
     private final SchemaContext ctx;
 
@@ -38,13 +37,17 @@ final class LeafNodeDomParser extends LeafNodeBaseParser<Element> {
 
     @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<QName, String> getAttributes(final Element element) {
         return DomUtils.toAttributes(element.getAttributes());
     }
-
 }