import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
-import com.google.common.base.Optional;
import java.io.InputStream;
import java.net.URI;
import java.util.Collection;
import java.util.List;
+import java.util.Optional;
+import javax.annotation.Nonnull;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamReader;
import org.junit.Before;
import org.junit.Test;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.common.QNameModule;
-import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
import org.opendaylight.yangtools.yang.data.api.schema.YangModeledAnyXmlNode;
import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeSchemaAwareBuilder;
+import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult;
import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition;
import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
import org.opendaylight.yangtools.yang.model.api.YangModeledAnyXmlSchemaNode;
-import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangStatementSourceImpl;
+import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
public class YangModeledAnyXMLDeserializationTest {
private SchemaContext schemaContext;
@Before
- public void Init() throws Exception {
- barModuleQName = QNameModule.create(new URI("bar"), SimpleDateFormatUtil.getRevisionFormat()
- .parse("1970-01-01"));
+ public void setUp() throws Exception {
+ barModuleQName = QNameModule.create(new URI("bar"), QName.parseRevision("1970-01-01"));
myContainer1 = QName.create(barModuleQName, "my-container-1");
myLeaf1 = QName.create(barModuleQName, "my-leaf-1");
myAnyXMLDataBar = QName.create(barModuleQName, "my-anyxml-data");
- fooModuleQName = QNameModule.create(new URI("foo"), SimpleDateFormatUtil.getRevisionFormat()
- .parse("1970-01-01"));
+ fooModuleQName = QNameModule.create(new URI("foo"), QName.parseRevision("1970-01-01"));
myContainer2 = QName.create(fooModuleQName, "my-container-2");
innerContainer = QName.create(fooModuleQName, "inner-container");
myLeaf3 = QName.create(fooModuleQName, "my-leaf-3");
myLeaf2 = QName.create(fooModuleQName, "my-leaf-2");
myAnyXMLDataFoo = QName.create(fooModuleQName, "my-anyxml-data");
- CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
- reactor.addSources(new YangStatementSourceImpl("/anyxml-support/yang/foo.yang", false),
- new YangStatementSourceImpl("/anyxml-support/yang/bar.yang", false),
- new YangStatementSourceImpl("/anyxml-support/yang/yang-ext.yang", false));
-
- schemaContext = reactor.buildEffective();
+ schemaContext = YangParserTestUtils.parseYangResourceDirectory("/anyxml-support/yang");
}
@Test
public void testRawAnyXMLFromBar() throws Exception {
- DataSchemaNode barContainer = schemaContext.getDataChildByName(QName.create(barModuleQName, "bar"));;
+ DataSchemaNode barContainer = schemaContext.getDataChildByName(QName.create(barModuleQName, "bar"));
assertTrue(barContainer instanceof ContainerSchemaNode);
final YangModeledAnyXmlSchemaNode yangModeledAnyXML = new YangModeledAnyXMLSchemaNodeImplTest(myAnyXMLDataBar,
(ContainerSchemaNode) barContainer);
final XMLInputFactory factory = XMLInputFactory.newInstance();
final XMLStreamReader reader = factory.createXMLStreamReader(resourceAsStream);
-
- final ImmutableContainerNodeBuilder result = (ImmutableContainerNodeBuilder) ImmutableContainerNodeSchemaAwareBuilder
- .create(yangModeledAnyXML.getSchemaOfAnyXmlData());
+ final NormalizedNodeResult result = new NormalizedNodeResult();
final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, yangModeledAnyXML);
xmlParser.parse(reader);
- final NormalizedNode<?, ?> output = result.build();
+ final NormalizedNode<?, ?> output = result.getResult();
+ assertTrue(output instanceof YangModeledAnyXmlNode);
+ final YangModeledAnyXmlNode yangModeledAnyXmlNode = (YangModeledAnyXmlNode) output;
- Collection<DataContainerChild<? extends PathArgument, ?>> value = ((ContainerNode) output).getValue();
+ Collection<DataContainerChild<? extends PathArgument, ?>> value = yangModeledAnyXmlNode.getValue();
assertEquals(2, value.size());
- Optional<DataContainerChild<? extends PathArgument, ?>> child = ((ContainerNode) output)
+ Optional<DataContainerChild<? extends PathArgument, ?>> child = yangModeledAnyXmlNode
.getChild(new NodeIdentifier(myContainer1));
- assertTrue(child.orNull() instanceof ContainerNode);
+ assertTrue(child.orElse(null) instanceof ContainerNode);
ContainerNode myContainerNode1 = (ContainerNode) child.get();
Optional<DataContainerChild<? extends PathArgument, ?>> child2 = myContainerNode1.getChild(new NodeIdentifier(
myLeaf1));
- assertTrue(child2.orNull() instanceof LeafNode);
- LeafNode<?> LeafNode1 = (LeafNode<?>) child2.get();
+ assertTrue(child2.orElse(null) instanceof LeafNode);
+ LeafNode<?> leafNode1 = (LeafNode<?>) child2.get();
- Object leafNode1Value = LeafNode1.getValue();
+ Object leafNode1Value = leafNode1.getValue();
assertEquals("value1", leafNode1Value);
}
public void testRealSchemaContextFromFoo() throws Exception {
final InputStream resourceAsStream = YangModeledAnyXMLDeserializationTest.class.getResourceAsStream(
"/anyxml-support/xml/foo.xml");
+ final Module foo = schemaContext.findModules("foo").iterator().next();
+ final YangModeledAnyXmlSchemaNode myAnyXmlData = (YangModeledAnyXmlSchemaNode) foo.getDataChildByName(
+ QName.create(foo.getQNameModule(), "my-anyxml-data"));
final XMLInputFactory factory = XMLInputFactory.newInstance();
final XMLStreamReader reader = factory.createXMLStreamReader(resourceAsStream);
-
- final ImmutableContainerNodeBuilder result = (ImmutableContainerNodeBuilder) ImmutableContainerNodeSchemaAwareBuilder
- .create(schemaContext);
+ final NormalizedNodeResult result = new NormalizedNodeResult();
final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
- final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext);
+ final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schemaContext, myAnyXmlData);
xmlParser.parse(reader);
- final NormalizedNode<?, ?> output = result.build();
-
- Optional<DataContainerChild<? extends PathArgument, ?>> child = ((ContainerNode) output).getChild(
- new NodeIdentifier(myAnyXMLDataFoo));
- assertTrue(child.orNull() instanceof YangModeledAnyXmlNode);
- YangModeledAnyXmlNode yangModeledAnyXmlNode = (YangModeledAnyXmlNode) child.get();
+ final NormalizedNode<?, ?> output = result.getResult();
+ assertTrue(output instanceof YangModeledAnyXmlNode);
+ final YangModeledAnyXmlNode yangModeledAnyXmlNode = (YangModeledAnyXmlNode) output;
DataSchemaNode schemaOfAnyXmlData = yangModeledAnyXmlNode.getSchemaOfAnyXmlData();
DataSchemaNode expectedSchemaOfAnyXmlData = schemaContext.getDataChildByName(myContainer2);
Optional<DataContainerChild<? extends PathArgument, ?>> child2 = yangModeledAnyXmlNode
.getChild(new NodeIdentifier(innerContainer));
- assertTrue(child2.orNull() instanceof ContainerNode);
+ assertTrue(child2.orElse(null) instanceof ContainerNode);
ContainerNode innerContainerNode = (ContainerNode) child2.get();
Optional<DataContainerChild<? extends PathArgument, ?>> child3 = innerContainerNode
.getChild(new NodeIdentifier(myLeaf2));
- assertTrue(child3.orNull() instanceof LeafNode);
- LeafNode<?> LeafNode2 = (LeafNode<?>) child3.get();
+ assertTrue(child3.orElse(null) instanceof LeafNode);
+ LeafNode<?> leafNode2 = (LeafNode<?>) child3.get();
- Object leafNode2Value = LeafNode2.getValue();
+ Object leafNode2Value = leafNode2.getValue();
assertEquals("any-xml-leaf-2-value", leafNode2Value);
Optional<DataContainerChild<? extends PathArgument, ?>> child4 = yangModeledAnyXmlNode
.getChild(new NodeIdentifier(myLeaf3));
- assertTrue(child4.orNull() instanceof LeafNode);
- LeafNode<?> LeafNode3 = (LeafNode<?>) child4.get();
+ assertTrue(child4.orElse(null) instanceof LeafNode);
+ LeafNode<?> leafNode3 = (LeafNode<?>) child4.get();
- Object leafNode3Value = LeafNode3.getValue();
+ Object leafNode3Value = leafNode3.getValue();
assertEquals("any-xml-leaf-3-value", leafNode3Value);
}
- private static class YangModeledAnyXMLSchemaNodeImplTest implements YangModeledAnyXmlSchemaNode {
- private final QName qName;
+ private static final class YangModeledAnyXMLSchemaNodeImplTest implements YangModeledAnyXmlSchemaNode {
+ private final QName qname;
private final ContainerSchemaNode contentSchema;
- private YangModeledAnyXMLSchemaNodeImplTest(QName qName, ContainerSchemaNode contentSchema) {
- this.qName = qName;
+ YangModeledAnyXMLSchemaNodeImplTest(final QName qname, final ContainerSchemaNode contentSchema) {
+ this.qname = qname;
this.contentSchema = contentSchema;
}
return null;
}
+ @Nonnull
@Override
public QName getQName() {
- return qName;
+ return qname;
}
+ @Nonnull
@Override
public SchemaPath getPath() {
return null;
}
+ @Nonnull
@Override
public List<UnknownSchemaNode> getUnknownSchemaNodes() {
return null;
return null;
}
+ @Nonnull
@Override
public Status getStatus() {
return null;
}
+ @Nonnull
@Override
public ContainerSchemaNode getSchemaOfAnyXmlData() {
return contentSchema;