2 * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.yangtools.yang.data.codec.xml;
11 import static org.junit.Assert.assertNotNull;
13 import java.io.InputStream;
14 import javax.xml.stream.XMLStreamReader;
15 import org.junit.AfterClass;
16 import org.junit.BeforeClass;
17 import org.junit.Test;
18 import org.opendaylight.yangtools.util.xml.UntrustedXML;
19 import org.opendaylight.yangtools.yang.common.QName;
20 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
21 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
22 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
23 import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult;
24 import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
25 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
26 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
27 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
28 import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
29 import org.opendaylight.yangtools.yang.model.api.Module;
30 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
31 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
33 public class Bug8675Test {
35 private static SchemaContext schemaContext;
36 private static Module fooModule;
39 public static void setup() {
40 schemaContext = YangParserTestUtils.parseYangResource("/bug8675/foo.yang");
41 fooModule = schemaContext.getModules().iterator().next();
45 public static void cleanup() {
51 public void testParsingEmptyElements() throws Exception {
52 final ContainerSchemaNode topLevelContainer = (ContainerSchemaNode) fooModule.findDataChildByName(
53 QName.create(fooModule.getQNameModule(), "top-level-container")).get();
55 final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream(
58 final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
60 final NormalizedNodeResult result = new NormalizedNodeResult();
61 final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
63 final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelContainer);
64 xmlParser.parse(reader);
66 final NormalizedNode<?, ?> transformedInput = result.getResult();
67 assertNotNull(transformedInput);
71 public void testParsingEmptyRootElement() throws Exception {
72 final ContainerSchemaNode topLevelContainer = (ContainerSchemaNode) fooModule.findDataChildByName(
73 QName.create(fooModule.getQNameModule(), "top-level-container")).get();
75 final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream(
76 "/bug8675/foo-2.xml");
78 final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
80 final NormalizedNodeResult result = new NormalizedNodeResult();
81 final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
83 final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelContainer);
84 xmlParser.parse(reader);
86 final NormalizedNode<?, ?> transformedInput = result.getResult();
87 assertNotNull(transformedInput);
91 public void testListAsRootElement() throws Exception {
92 final ListSchemaNode topLevelList = (ListSchemaNode) fooModule.findDataChildByName(
93 QName.create(fooModule.getQNameModule(), "top-level-list")).get();
95 final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-3.xml");
97 final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
99 final NormalizedNodeResult result = new NormalizedNodeResult();
100 final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
102 final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelList);
103 xmlParser.parse(reader);
105 final NormalizedNode<?, ?> transformedInput = result.getResult();
106 assertNotNull(transformedInput);
110 public void testAnyXmlAsRootElement() throws Exception {
111 final AnyXmlSchemaNode topLevelAnyXml = (AnyXmlSchemaNode) fooModule.findDataChildByName(
112 QName.create(fooModule.getQNameModule(), "top-level-anyxml")).get();
114 final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-4.xml");
116 final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
118 final NormalizedNodeResult result = new NormalizedNodeResult();
119 final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
121 final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelAnyXml);
122 xmlParser.parse(reader);
124 final NormalizedNode<?, ?> transformedInput = result.getResult();
125 assertNotNull(transformedInput);
129 public void testLeafAsRootElement() throws Exception {
130 final LeafSchemaNode topLevelLeaf = (LeafSchemaNode) fooModule.findDataChildByName(
131 QName.create(fooModule.getQNameModule(), "top-level-leaf")).get();
133 final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-5.xml");
135 final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
137 final NormalizedNodeResult result = new NormalizedNodeResult();
138 final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
140 final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelLeaf);
141 xmlParser.parse(reader);
143 final NormalizedNode<?, ?> transformedInput = result.getResult();
144 assertNotNull(transformedInput);
148 public void testLeafListAsRootElement() throws Exception {
149 final LeafListSchemaNode topLevelLeafList = (LeafListSchemaNode) fooModule.findDataChildByName(
150 QName.create(fooModule.getQNameModule(), "top-level-leaf-list")).get();
152 final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-6.xml");
154 final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
156 final NormalizedNodeResult result = new NormalizedNodeResult();
157 final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
159 final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelLeafList);
160 xmlParser.parse(reader);
162 final NormalizedNode<?, ?> transformedInput = result.getResult();
163 assertNotNull(transformedInput);