import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
-import java.io.IOException;
import java.io.StringWriter;
-import java.net.URISyntaxException;
-import java.util.Collection;
import javax.xml.stream.XMLOutputFactory;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-import javax.xml.stream.XMLStreamWriter;
-import javax.xml.transform.TransformerException;
import javax.xml.transform.dom.DOMResult;
import javax.xml.transform.dom.DOMSource;
import org.custommonkey.xmlunit.Diff;
-import org.custommonkey.xmlunit.DifferenceListener;
import org.custommonkey.xmlunit.IgnoreTextAndAttributeValuesDifferenceListener;
import org.custommonkey.xmlunit.XMLAssert;
import org.custommonkey.xmlunit.XMLUnit;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.ArgumentsSource;
import org.opendaylight.yangtools.util.xml.UntrustedXML;
import org.opendaylight.yangtools.yang.data.api.schema.AnydataNode;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedAnydata;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter;
import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
-import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableAnydataNodeBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
-import org.opendaylight.yangtools.yang.data.util.ImmutableNormalizedAnydata;
+import org.opendaylight.yangtools.yang.data.impl.schema.NormalizationResultHolder;
+import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
import org.opendaylight.yangtools.yang.model.spi.DefaultSchemaTreeInference;
import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack.Inference;
-import org.w3c.dom.Document;
-import org.xml.sax.SAXException;
-@RunWith(Parameterized.class)
-public class AnydataSerializeTest extends AbstractAnydataTest {
-
- @Parameterized.Parameters(name = "{0}")
- public static Collection<Object[]> data() {
- return TestFactories.junitParameters();
- }
-
- private final XMLOutputFactory factory;
-
- public AnydataSerializeTest(final String factoryMode, final XMLOutputFactory factory) {
- this.factory = factory;
- }
-
- @Test
- public void testDOMAnydata() throws XMLStreamException, IOException {
- final StringWriter writer = new StringWriter();
- final XMLStreamWriter xmlStreamWriter = factory.createXMLStreamWriter(writer);
-
- final NormalizedNodeStreamWriter xmlNormalizedNodeStreamWriter = XMLStreamNormalizedNodeStreamWriter.create(
- xmlStreamWriter, SCHEMA_CONTEXT);
- final NormalizedNodeWriter normalizedNodeWriter = NormalizedNodeWriter.forStreamWriter(
- xmlNormalizedNodeStreamWriter);
- normalizedNodeWriter.write(ImmutableAnydataNodeBuilder.create(DOMSourceAnydata.class)
- .withNodeIdentifier(FOO_NODEID).withValue(toDOMSource("<bar xmlns=\"test-anydata\"/>")).build());
+class AnydataSerializeTest extends AbstractAnydataTest {
+ @ParameterizedTest(name = "{0}")
+ @ArgumentsSource(TestFactories.class)
+ public void testDOMAnydata(final String factoryMode, final XMLOutputFactory factory) throws Exception {
+ final var writer = new StringWriter();
+ final var xmlStreamWriter = factory.createXMLStreamWriter(writer);
+
+ final var xmlNormalizedNodeStreamWriter = XMLStreamNormalizedNodeStreamWriter.create(xmlStreamWriter,
+ SCHEMA_CONTEXT);
+ final var normalizedNodeWriter = NormalizedNodeWriter.forStreamWriter(xmlNormalizedNodeStreamWriter);
+ normalizedNodeWriter.write(ImmutableNodes.newAnydataBuilder(DOMSourceAnydata.class)
+ .withNodeIdentifier(FOO_NODEID)
+ .withValue(toDOMSource("<bar xmlns=\"test-anydata\"/>"))
+ .build());
normalizedNodeWriter.flush();
final String serializedXml = writer.toString();
assertEquals("<foo xmlns=\"test-anydata\"><bar xmlns=\"test-anydata\"></bar></foo>", serializedXml);
}
- @Test
- public void testXmlParseAnydata()
- throws IOException, SAXException, XMLStreamException, URISyntaxException, TransformerException {
+ @ParameterizedTest(name = "{0}")
+ @ArgumentsSource(TestFactories.class)
+ public void testXmlParseAnydata(final String factoryMode, final XMLOutputFactory factory) throws Exception {
// deserialization
- final XMLStreamReader reader
- = UntrustedXML.createXMLStreamReader(loadResourcesAsInputStream("/test-anydata.xml"));
+ final var reader = UntrustedXML.createXMLStreamReader(
+ AnydataSerializeTest.class.getResourceAsStream("/test-anydata.xml"));
- final NormalizedNodeResult result = new NormalizedNodeResult();
- final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
- final XmlParserStream xmlParser = XmlParserStream.create(streamWriter,
- Inference.ofDataTreePath(SCHEMA_CONTEXT, FOO_QNAME));
+ final var result = new NormalizationResultHolder();
+ final var streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
+ final var xmlParser = XmlParserStream.create(streamWriter, Inference.ofDataTreePath(SCHEMA_CONTEXT, FOO_QNAME));
xmlParser.parse(reader);
- final NormalizedNode transformedInput = result.getResult();
+ final var transformedInput = result.getResult().data();
assertThat(transformedInput, instanceOf(AnydataNode.class));
- AnydataNode<?> anydataNode = (AnydataNode<?>) transformedInput;
+ final var anydataNode = (AnydataNode<?>) transformedInput;
// serialization
- final StringWriter writer = new StringWriter();
- final XMLStreamWriter xmlStreamWriter = factory.createXMLStreamWriter(writer);
- final NormalizedNodeStreamWriter xmlNormalizedNodeStreamWriter = XMLStreamNormalizedNodeStreamWriter.create(
- xmlStreamWriter, SCHEMA_CONTEXT);
- final NormalizedNodeWriter normalizedNodeWriter = NormalizedNodeWriter.forStreamWriter(
- xmlNormalizedNodeStreamWriter);
+ final var writer = new StringWriter();
+ final var xmlStreamWriter = factory.createXMLStreamWriter(writer);
+ final var xmlNormalizedNodeStreamWriter = XMLStreamNormalizedNodeStreamWriter.create(xmlStreamWriter,
+ SCHEMA_CONTEXT);
+ final var normalizedNodeWriter = NormalizedNodeWriter.forStreamWriter(xmlNormalizedNodeStreamWriter);
normalizedNodeWriter.write(transformedInput);
normalizedNodeWriter.flush();
XMLUnit.setIgnoreWhitespace(true);
XMLUnit.setNormalize(true);
final Diff diff = new Diff(deserializeXml, serializedXml);
- final DifferenceListener differenceListener = new IgnoreTextAndAttributeValuesDifferenceListener();
- diff.overrideDifferenceListener(differenceListener);
+ diff.overrideDifferenceListener(new IgnoreTextAndAttributeValuesDifferenceListener());
XMLAssert.assertXMLEqual(diff, true);
}
- @Test
- public void testAnydataLoadFromXML() throws IOException, SAXException, XMLStreamException, URISyntaxException {
+ @ParameterizedTest(name = "{0}")
+ @ArgumentsSource(TestFactories.class)
+ public void testAnydataLoadFromXML(final String factoryMode, final XMLOutputFactory factory) throws Exception {
// Load XML file
- Document doc = loadXmlDocument("/test-anydata.xml");
- final DOMSource domSource = new DOMSource(doc.getDocumentElement());
+ final var doc = loadDocument("/test-anydata.xml");
+ final var domSource = new DOMSource(doc.getDocumentElement());
//Load XML from file and write it with xmlParseStream
- final DOMResult domResult = new DOMResult(UntrustedXML.newDocumentBuilder().newDocument());
- final XMLStreamWriter xmlStreamWriter = factory.createXMLStreamWriter(domResult);
- final NormalizedNodeStreamWriter streamWriter = XMLStreamNormalizedNodeStreamWriter.create(
- xmlStreamWriter, SCHEMA_CONTEXT);
- final XMLStreamReader reader = new DOMSourceXMLStreamReader(domSource);
- final XmlParserStream xmlParser = XmlParserStream.create(streamWriter,
- Inference.ofDataTreePath(SCHEMA_CONTEXT, FOO_QNAME));
+ final var domResult = new DOMResult(UntrustedXML.newDocumentBuilder().newDocument());
+ final var xmlStreamWriter = factory.createXMLStreamWriter(domResult);
+ final var streamWriter = XMLStreamNormalizedNodeStreamWriter.create(xmlStreamWriter, SCHEMA_CONTEXT);
+ final var reader = new DOMSourceXMLStreamReader(domSource);
+ final var xmlParser = XmlParserStream.create(streamWriter, Inference.ofDataTreePath(SCHEMA_CONTEXT, FOO_QNAME));
xmlParser.parse(reader);
xmlParser.flush();
final String expectedXml = toString(doc.getDocumentElement());
final String serializedXml = toString(domResult.getNode());
final Diff diff = new Diff(expectedXml, serializedXml);
- final DifferenceListener differenceListener = new IgnoreTextAndAttributeValuesDifferenceListener();
- diff.overrideDifferenceListener(differenceListener);
+ diff.overrideDifferenceListener(new IgnoreTextAndAttributeValuesDifferenceListener());
XMLAssert.assertXMLEqual(diff, true);
}
- @Test
- public void testAnydataSerialization()
- throws IOException, SAXException, XMLStreamException, URISyntaxException, TransformerException {
+ @ParameterizedTest(name = "{0}")
+ @ArgumentsSource(TestFactories.class)
+ public void testAnydataSerialization(final String factoryMode, final XMLOutputFactory factory) throws Exception {
//Get XML Data.
- Document doc = loadXmlDocument("/test-anydata.xml");
- final DOMSource domSource = new DOMSource(doc.getDocumentElement());
+ final var doc = loadDocument("/test-anydata.xml");
+ final var domSource = new DOMSource(doc.getDocumentElement());
//Create NormalizedNodeResult
- NormalizedNodeResult normalizedResult = new NormalizedNodeResult();
- final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(normalizedResult);
+ final var normalizedResult = new NormalizationResultHolder();
+ final var streamWriter = ImmutableNormalizedNodeStreamWriter.from(normalizedResult);
//Initialize Reader with XML file
- final XMLStreamReader reader = new DOMSourceXMLStreamReader(domSource);
- final XmlParserStream xmlParser = XmlParserStream.create(streamWriter,
- Inference.ofDataTreePath(SCHEMA_CONTEXT, FOO_QNAME));
+ final var reader = new DOMSourceXMLStreamReader(domSource);
+ final var xmlParser = XmlParserStream.create(streamWriter, Inference.ofDataTreePath(SCHEMA_CONTEXT, FOO_QNAME));
xmlParser.parse(reader);
xmlParser.flush();
//Get Result
- final NormalizedNode node = normalizedResult.getResult();
+ final var node = normalizedResult.getResult().data();
assertThat(node, instanceOf(AnydataNode.class));
- final AnydataNode<?> anydataResult = (AnydataNode<?>) node;
+ final var anydataResult = (AnydataNode<?>) node;
//Get Result in formatted String
assertThat(anydataResult.body(), instanceOf(DOMSourceAnydata.class));
//Looking for difference in Serialized xml and in Loaded XML
final Diff diff = new Diff(expectedXml, serializedXml);
- final DifferenceListener differenceListener = new IgnoreTextAndAttributeValuesDifferenceListener();
- diff.overrideDifferenceListener(differenceListener);
+ diff.overrideDifferenceListener(new IgnoreTextAndAttributeValuesDifferenceListener());
XMLAssert.assertXMLEqual(diff, true);
}
- @Test
- public void testSiblingSerialize() throws IOException, XMLStreamException {
- final StringWriter writer = new StringWriter();
- final XMLStreamWriter xmlStreamWriter = factory.createXMLStreamWriter(writer);
-
- final NormalizedNodeStreamWriter xmlNormalizedNodeStreamWriter = XMLStreamNormalizedNodeStreamWriter.create(
- xmlStreamWriter, SCHEMA_CONTEXT);
- final NormalizedNodeWriter normalizedNodeWriter = NormalizedNodeWriter.forStreamWriter(
- xmlNormalizedNodeStreamWriter);
- normalizedNodeWriter.write(ImmutableContainerNodeBuilder.create().withNodeIdentifier(CONT_NODEID)
- .withChild(ImmutableAnydataNodeBuilder.create(DOMSourceAnydata.class).withNodeIdentifier(CONT_ANY_NODEID)
- .withValue(toDOMSource("<bar xmlns=\"test-anydata\"/>")).build())
+ @ParameterizedTest(name = "{0}")
+ @ArgumentsSource(TestFactories.class)
+ public void testSiblingSerialize(final String factoryMode, final XMLOutputFactory factory) throws Exception {
+ final var writer = new StringWriter();
+ final var xmlStreamWriter = factory.createXMLStreamWriter(writer);
+
+ final var xmlNormalizedNodeStreamWriter = XMLStreamNormalizedNodeStreamWriter.create(xmlStreamWriter,
+ SCHEMA_CONTEXT);
+ final var normalizedNodeWriter = NormalizedNodeWriter.forStreamWriter(xmlNormalizedNodeStreamWriter);
+ normalizedNodeWriter.write(ImmutableNodes.newContainerBuilder()
+ .withNodeIdentifier(CONT_NODEID)
+ .withChild(ImmutableNodes.newAnydataBuilder(DOMSourceAnydata.class)
+ .withNodeIdentifier(CONT_ANY_NODEID)
+ .withValue(toDOMSource("<bar xmlns=\"test-anydata\"/>"))
+ .build())
.withChild(CONT_LEAF)
.build());
normalizedNodeWriter.flush();
+ "<cont-leaf>abc</cont-leaf></cont>", serializedXml);
}
- @Test
- public void testNormalizedSerialize() throws IOException, XMLStreamException {
- final StringWriter writer = new StringWriter();
- final XMLStreamWriter xmlStreamWriter = factory.createXMLStreamWriter(writer);
+ @ParameterizedTest(name = "{0}")
+ @ArgumentsSource(TestFactories.class)
+ public void testNormalizedSerialize(final String factoryMode, final XMLOutputFactory factory) throws Exception {
+ final var writer = new StringWriter();
+ final var xmlStreamWriter = factory.createXMLStreamWriter(writer);
- final NormalizedNodeStreamWriter xmlNormalizedNodeStreamWriter = XMLStreamNormalizedNodeStreamWriter.create(
- xmlStreamWriter, SCHEMA_CONTEXT);
- final NormalizedNodeWriter normalizedNodeWriter = NormalizedNodeWriter.forStreamWriter(
- xmlNormalizedNodeStreamWriter);
- normalizedNodeWriter.write(ImmutableContainerNodeBuilder.create()
+ final var xmlNormalizedNodeStreamWriter = XMLStreamNormalizedNodeStreamWriter.create(xmlStreamWriter,
+ SCHEMA_CONTEXT);
+ final var normalizedNodeWriter = NormalizedNodeWriter.forStreamWriter(xmlNormalizedNodeStreamWriter);
+ normalizedNodeWriter.write(ImmutableNodes.newContainerBuilder()
.withNodeIdentifier(CONT_NODEID)
- .withChild(ImmutableAnydataNodeBuilder.create(NormalizedAnydata.class)
+ .withChild(ImmutableNodes.newAnydataBuilder(NormalizedAnydata.class)
.withNodeIdentifier(CONT_ANY_NODEID)
- .withValue(new ImmutableNormalizedAnydata(
+ .withValue(NormalizedAnydata.of(
DefaultSchemaTreeInference.of(SCHEMA_CONTEXT, Absolute.of(CONT_QNAME)),
- ImmutableContainerNodeBuilder.create().withNodeIdentifier(CONT_NODEID).build()))
+ ImmutableNodes.newContainerBuilder().withNodeIdentifier(CONT_NODEID).build()))
.build())
.build());
normalizedNodeWriter.flush();