import java.util.Set;
import javax.xml.XMLConstants;
import javax.xml.namespace.NamespaceContext;
-import javax.xml.stream.Location;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
final String xmlElementNamespace = in.getNamespaceURI();
if (!namesakes.add(new SimpleImmutableEntry<>(xmlElementNamespace, xmlElementName))) {
- final Location loc = in.getLocation();
- throw new IllegalStateException(String.format(
- "Duplicate namespace \"%s\" element \"%s\" in XML input at: line %s column %s",
- xmlElementNamespace, xmlElementName, loc.getLineNumber(), loc.getColumnNumber()));
+ throw new XMLStreamException(String.format(
+ "Duplicate namespace \"%s\" element \"%s\" in XML input", xmlElementNamespace,
+ xmlElementName), in.getLocation());
}
final Deque<DataSchemaNode> childDataSchemaNodes =
new URI(xmlElementNamespace));
if (childDataSchemaNodes.isEmpty()) {
- checkState(!strictParsing, "Schema for node with name %s and namespace %s does not exist at %s",
- xmlElementName, xmlElementNamespace, parentSchema.getPath());
- skipUnknownNode(in);
- continue;
+ if (!strictParsing) {
+ LOG.debug("Skipping unknown node ns=\"{}\" localName=\"{}\" at path {}",
+ xmlElementNamespace, xmlElementName, parentSchema.getPath());
+ skipUnknownNode(in);
+ continue;
+ }
+
+ throw new XMLStreamException(String.format(
+ "Schema for node with name %s and namespace %s does not exist at %s",
+ xmlElementName, xmlElementNamespace, parentSchema.getPath(), in.getLocation()));
}
read(in, ((CompositeNodeDataWithSchema<?>) parent).addChild(childDataSchemaNodes), rootElement);
import static org.junit.Assert.fail;
import java.io.InputStream;
+import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import org.junit.Test;
import org.opendaylight.yangtools.util.xml.UntrustedXML;
final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelContainer, true);
try {
xmlParser.parse(reader);
- fail("IllegalStateException should have been thrown because of an unknown child node.");
- } catch (IllegalStateException ex) {
+ fail("XMLStreamException should have been thrown because of an unknown child node.");
+ } catch (XMLStreamException ex) {
assertEquals("Schema for node with name unknown-container-a and namespace foo does not exist at "
+ "AbsoluteSchemaPath{path=[(foo)top-level-container]}", ex.getMessage());
}
package org.opendaylight.yangtools.yang.data.codec.xml;
import static org.hamcrest.CoreMatchers.containsString;
-import static org.hamcrest.CoreMatchers.startsWith;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;
final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, parentContainerSchema);
try {
xmlParser.parse(reader);
- fail("IllegalStateException should have been thrown because of duplicate leaf.");
- } catch (IllegalStateException ex) {
- assertThat(ex.getMessage(), startsWith("Duplicate namespace \"foo-namespace\" element \"decimal64-leaf\" "
- + "in XML input at: line 7 column "));
+ fail("XMLStreamException should have been thrown because of duplicate leaf.");
+ } catch (XMLStreamException ex) {
+ assertThat(ex.getMessage(), containsString("Duplicate namespace \"foo-namespace\" element "
+ + "\"decimal64-leaf\" in XML input"));
}
}
final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, parentContainerSchema);
try {
xmlParser.parse(reader);
- fail("IllegalStateException should have been thrown because of duplicate anyxml");
- } catch (IllegalStateException ex) {
- assertThat(ex.getMessage(), startsWith("Duplicate namespace \"foo-namespace\" element \"my-anyxml\" in XML "
- + "input at: line 19 column "));
+ fail("XMLStreamException should have been thrown because of duplicate anyxml");
+ } catch (XMLStreamException ex) {
+ assertThat(ex.getMessage(), containsString("Duplicate namespace \"foo-namespace\" element \"my-anyxml\""));
}
}
final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, parentContainerSchema);
try {
xmlParser.parse(reader);
- fail("IllegalStateException should have been thrown because of duplicate container");
- } catch (IllegalStateException ex) {
- assertThat(ex.getMessage(), startsWith("Duplicate namespace \"foo-namespace\" element \"leaf-container\" "
- + "in XML input at: line 13 column "));
+ fail("XMLStreamException should have been thrown because of duplicate container");
+ } catch (XMLStreamException ex) {
+ assertThat(ex.getMessage(), containsString("Duplicate namespace \"foo-namespace\" element "
+ + "\"leaf-container\" in XML input"));
}
}
final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, outerContainerSchema);
try {
xmlParser.parse(reader);
- fail("IllegalStateException should have been thrown because of an unknown child node.");
- } catch (IllegalStateException ex) {
+ fail("XMLStreamException should have been thrown because of an unknown child node.");
+ } catch (XMLStreamException ex) {
assertEquals("Schema for node with name my-container-1 and namespace baz-namespace does not exist at "
+ "AbsoluteSchemaPath{path=[(baz-namespace)outer-container, (baz-namespace)my-container-1]}",
ex.getMessage());