summary |
shortlog |
log |
commit | commitdiff |
review |
tree
raw |
patch |
inline | side by side (from parent 1:
f3a3253)
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 <robert.varga@pantheon.sk>
import org.w3c.dom.Element;
final class LeafNodeDomParser extends LeafNodeBaseParser<Element> {
import org.w3c.dom.Element;
final class LeafNodeDomParser extends LeafNodeBaseParser<Element> {
private final XmlCodecProvider codecProvider;
private final SchemaContext ctx;
private final XmlCodecProvider codecProvider;
private final SchemaContext ctx;
@Override
protected Object parseLeaf(final Element xmlElement, final LeafSchemaNode schema) {
@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());
}
}
@Override
protected Map<QName, String> getAttributes(final Element element) {
return DomUtils.toAttributes(element.getAttributes());
}