*/
package org.opendaylight.yangtools.yang.data.codec.xml;
-import java.io.FileNotFoundException;
+import java.io.IOException;
import java.io.StringWriter;
-import java.net.URISyntaxException;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
import org.custommonkey.xmlunit.Diff;
import org.custommonkey.xmlunit.XMLAssert;
import org.custommonkey.xmlunit.XMLUnit;
-import org.junit.Before;
import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
+import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
+import org.opendaylight.yangtools.yang.data.api.schema.UserMapNode;
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.Builders;
import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
import org.opendaylight.yangtools.yang.data.impl.schema.SchemaOrderedNormalizedNodeWriter;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
-import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
+import org.xml.sax.SAXException;
+@RunWith(Parameterized.class)
public class SchemaOrderedNormalizedNodeWriterTest {
+ @Parameterized.Parameters(name = "{0}")
+ public static Collection<Object[]> data() {
+ return TestFactories.junitParameters();
+ }
private static final String EXPECTED_1 = ""
- + "<root>\n"
+ + "<root xmlns=\"foo\">\n"
+ " <policy>\n"
+ " <name>policy1</name>\n"
+ " <rule>\n"
private static final String EXPECTED_2 = ""
- + "<root>\n"
+ + "<root xmlns=\"order\">\n"
+ " <id>id1</id>\n"
+ " <cont>\n"
+ " <content>content1</content>\n"
private static final String POLICY_NODE = "policy";
private static final String ORDER_NAMESPACE = "order";
+ private final XMLOutputFactory factory;
- @Before
- public void setUp() throws Exception {
+ public SchemaOrderedNormalizedNodeWriterTest(final String factoryMode, final XMLOutputFactory factory) {
+ this.factory = factory;
XMLUnit.setIgnoreWhitespace(true);
}
@Test
- public void testWrite() throws Exception {
+ public void testWrite() throws XMLStreamException, IOException, SAXException {
final StringWriter stringWriter = new StringWriter();
- final XMLStreamWriter xmlStreamWriter = XMLOutputFactory.newFactory().createXMLStreamWriter(stringWriter);
+ final XMLStreamWriter xmlStreamWriter = factory.createXMLStreamWriter(stringWriter);
- SchemaContext schemaContext = getSchemaContext("/bug1848/foo.yang");
+ EffectiveModelContext schemaContext = getSchemaContext("/bug1848/foo.yang");
NormalizedNodeStreamWriter writer = XMLStreamNormalizedNodeStreamWriter.create(xmlStreamWriter, schemaContext);
try (SchemaOrderedNormalizedNodeWriter nnw = new SchemaOrderedNormalizedNodeWriter(writer, schemaContext,
rule1Names.add(ImmutableNodes.mapEntry(createQName(FOO_NAMESPACE, RULE_NODE),
createQName(FOO_NAMESPACE, NAME_NODE), "rule4"));
- DataContainerChild<?, ?> rules1 = Builders.orderedMapBuilder()
+ UserMapNode rules1 = Builders.orderedMapBuilder()
.withNodeIdentifier(getNodeIdentifier(FOO_NAMESPACE, RULE_NODE))
.withValue(rule1Names)
.build();
- DataContainerChild<?, ?> rules2 = Builders.orderedMapBuilder()
+ UserMapNode rules2 = Builders.orderedMapBuilder()
.withNodeIdentifier(getNodeIdentifier(FOO_NAMESPACE, RULE_NODE))
.withValue(rule2Names)
.build();
policyNodes.add(pn1);
policyNodes.add(pn2);
- DataContainerChild<?, ?> policy = Builders.orderedMapBuilder()
+ UserMapNode policy = Builders.orderedMapBuilder()
.withNodeIdentifier(getNodeIdentifier(FOO_NAMESPACE, POLICY_NODE))
.withValue(policyNodes)
.build();
- NormalizedNode<?, ?> root = Builders.containerBuilder()
+ ContainerNode root = Builders.containerBuilder()
.withNodeIdentifier(getNodeIdentifier(FOO_NAMESPACE, "root"))
.withChild(policy).build();
nnw.write(root);
}
@Test
- public void testWriteOrder() throws Exception {
+ public void testWriteOrder() throws XMLStreamException, IOException, SAXException {
final StringWriter stringWriter = new StringWriter();
- final XMLStreamWriter xmlStreamWriter = XMLOutputFactory.newFactory().createXMLStreamWriter(stringWriter);
- SchemaContext schemaContext = getSchemaContext("/bug1848/order.yang");
+ final XMLStreamWriter xmlStreamWriter = factory.createXMLStreamWriter(stringWriter);
+ EffectiveModelContext schemaContext = getSchemaContext("/bug1848/order.yang");
NormalizedNodeStreamWriter writer = XMLStreamNormalizedNodeStreamWriter.create(xmlStreamWriter, schemaContext);
try (NormalizedNodeWriter nnw = new SchemaOrderedNormalizedNodeWriter(writer, schemaContext, SchemaPath.ROOT)) {
- DataContainerChild<?, ?> cont = Builders.containerBuilder()
+ ContainerNode cont = Builders.containerBuilder()
.withNodeIdentifier(getNodeIdentifier(ORDER_NAMESPACE, "cont"))
.withChild(ImmutableNodes.leafNode(createQName(ORDER_NAMESPACE, "content"), "content1"))
.build();
- NormalizedNode<?, ?> root = Builders.containerBuilder()
+ ContainerNode root = Builders.containerBuilder()
.withNodeIdentifier(getNodeIdentifier(ORDER_NAMESPACE, "root"))
.withChild(cont)
.withChild(ImmutableNodes.leafNode(createQName(ORDER_NAMESPACE, "id"), "id1"))
XMLAssert.assertXMLIdentical(new Diff(EXPECTED_2, stringWriter.toString()), true);
}
- private static SchemaContext getSchemaContext(final String filePath) throws URISyntaxException,
- ReactorException, FileNotFoundException {
+ private static EffectiveModelContext getSchemaContext(final String filePath) {
return YangParserTestUtils.parseYangResource(filePath);
}