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.getDataChildByName(
53 QName.create(fooModule.getQNameModule(), "top-level-container"));
54 assertNotNull(topLevelContainer);
56 final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream(
59 final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
61 final NormalizedNodeResult result = new NormalizedNodeResult();
62 final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
64 final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelContainer);
65 xmlParser.parse(reader);
67 final NormalizedNode<?, ?> transformedInput = result.getResult();
68 assertNotNull(transformedInput);
72 public void testParsingEmptyRootElement() throws Exception {
73 final ContainerSchemaNode topLevelContainer = (ContainerSchemaNode) fooModule.getDataChildByName(
74 QName.create(fooModule.getQNameModule(), "top-level-container"));
75 assertNotNull(topLevelContainer);
77 final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream(
78 "/bug8675/foo-2.xml");
80 final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
82 final NormalizedNodeResult result = new NormalizedNodeResult();
83 final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
85 final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelContainer);
86 xmlParser.parse(reader);
88 final NormalizedNode<?, ?> transformedInput = result.getResult();
89 assertNotNull(transformedInput);
93 public void testListAsRootElement() throws Exception {
94 final ListSchemaNode topLevelList = (ListSchemaNode) fooModule.getDataChildByName(
95 QName.create(fooModule.getQNameModule(), "top-level-list"));
96 assertNotNull(topLevelList);
98 final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-3.xml");
100 final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
102 final NormalizedNodeResult result = new NormalizedNodeResult();
103 final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
105 final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelList);
106 xmlParser.parse(reader);
108 final NormalizedNode<?, ?> transformedInput = result.getResult();
109 assertNotNull(transformedInput);
113 public void testAnyXmlAsRootElement() throws Exception {
114 final AnyXmlSchemaNode topLevelAnyXml = (AnyXmlSchemaNode) fooModule.getDataChildByName(
115 QName.create(fooModule.getQNameModule(), "top-level-anyxml"));
116 assertNotNull(topLevelAnyXml);
118 final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-4.xml");
120 final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
122 final NormalizedNodeResult result = new NormalizedNodeResult();
123 final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
125 final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelAnyXml);
126 xmlParser.parse(reader);
128 final NormalizedNode<?, ?> transformedInput = result.getResult();
129 assertNotNull(transformedInput);
133 public void testLeafAsRootElement() throws Exception {
134 final LeafSchemaNode topLevelLeaf = (LeafSchemaNode) fooModule.getDataChildByName(
135 QName.create(fooModule.getQNameModule(), "top-level-leaf"));
137 final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-5.xml");
139 final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
141 final NormalizedNodeResult result = new NormalizedNodeResult();
142 final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
144 final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelLeaf);
145 xmlParser.parse(reader);
147 final NormalizedNode<?, ?> transformedInput = result.getResult();
148 assertNotNull(transformedInput);
152 public void testLeafListAsRootElement() throws Exception {
153 final LeafListSchemaNode topLevelLeafList = (LeafListSchemaNode) fooModule.getDataChildByName(
154 QName.create(fooModule.getQNameModule(), "top-level-leaf-list"));
156 final InputStream resourceAsStream = XmlToNormalizedNodesTest.class.getResourceAsStream("/bug8675/foo-6.xml");
158 final XMLStreamReader reader = UntrustedXML.createXMLStreamReader(resourceAsStream);
160 final NormalizedNodeResult result = new NormalizedNodeResult();
161 final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
163 final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, topLevelLeafList);
164 xmlParser.parse(reader);
166 final NormalizedNode<?, ?> transformedInput = result.getResult();
167 assertNotNull(transformedInput);