X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=restconf%2Frestconf-nb-bierman02%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Frest%2Fimpl%2Ftest%2Fproviders%2FTestXmlBodyReader.java;h=7ff353eac5e7c00610481333724617c5d8c4740a;hb=09c1d18add7cfc310f3d190a1a02a523159162ce;hp=c5c16e0f4cc4e75d35e46fa5c6acec299b69d5d6;hpb=e75f572158f9eb14f1843de9ddc3a0265c98a68c;p=netconf.git diff --git a/restconf/restconf-nb-bierman02/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/TestXmlBodyReader.java b/restconf/restconf-nb-bierman02/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/TestXmlBodyReader.java index c5c16e0f4c..7ff353eac5 100644 --- a/restconf/restconf-nb-bierman02/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/TestXmlBodyReader.java +++ b/restconf/restconf-nb-bierman02/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/TestXmlBodyReader.java @@ -12,46 +12,49 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import com.google.common.collect.Sets; import java.io.File; import java.io.InputStream; -import java.net.URI; import java.util.Collection; import java.util.Optional; +import java.util.Set; import javax.ws.rs.core.MediaType; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import org.opendaylight.controller.md.sal.rest.common.TestRestconfUtils; +import org.opendaylight.netconf.sal.rest.impl.NormalizedNodeContext; import org.opendaylight.netconf.sal.rest.impl.XmlNormalizedNodeBodyReader; -import org.opendaylight.restconf.common.context.NormalizedNodeContext; import org.opendaylight.restconf.common.errors.RestconfDocumentedException; import org.opendaylight.restconf.common.errors.RestconfError; +import org.opendaylight.yangtools.yang.common.ErrorTag; +import org.opendaylight.yangtools.yang.common.ErrorType; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.common.Revision; +import org.opendaylight.yangtools.yang.common.XMLNamespace; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodes; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.model.api.Module; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class TestXmlBodyReader extends AbstractBodyReaderTest { private final XmlNormalizedNodeBodyReader xmlBodyReader; - private static SchemaContext schemaContext; + private static EffectiveModelContext schemaContext; private static final QNameModule INSTANCE_IDENTIFIER_MODULE_QNAME = QNameModule.create( - URI.create("instance:identifier:module"), Revision.of("2014-01-17")); + XMLNamespace.of("instance:identifier:module"), Revision.of("2014-01-17")); public TestXmlBodyReader() { super(schemaContext, null); - this.xmlBodyReader = new XmlNormalizedNodeBodyReader(controllerContext); + xmlBodyReader = new XmlNormalizedNodeBodyReader(controllerContext); } @Override @@ -85,15 +88,15 @@ public class TestXmlBodyReader extends AbstractBodyReaderTest { assertTrue(nnc.getData() instanceof MapEntryNode); final MapEntryNode data = (MapEntryNode) nnc.getData(); - assertTrue(data.getValue().size() == 2); - for (final DataContainerChild child : data.getValue()) { - switch (child.getNodeType().getLocalName()) { + assertEquals(2, data.size()); + for (final DataContainerChild child : data.body()) { + switch (child.getIdentifier().getNodeType().getLocalName()) { case "key-leaf": - assertEquals("key-value", child.getValue()); + assertEquals("key-value", child.body()); break; case "ordinary-leaf": - assertEquals("leaf-value", child.getValue()); + assertEquals("leaf-value", child.body()); break; default: fail(); @@ -107,11 +110,11 @@ public class TestXmlBodyReader extends AbstractBodyReaderTest { schemaContext.getDataChildByName(QName.create(INSTANCE_IDENTIFIER_MODULE_QNAME, "cont")); final YangInstanceIdentifier dataII = YangInstanceIdentifier.of(dataSchemaNode.getQName()); final String uri = "instance-identifier-module:cont"; - mockBodyReader(uri, this.xmlBodyReader, false); + mockBodyReader(uri, xmlBodyReader, false); final InputStream inputStream = TestXmlBodyReader.class .getResourceAsStream("/instanceidentifier/xml/xmldata.xml"); - final NormalizedNodeContext returnValue = this.xmlBodyReader - .readFrom(null, null, null, this.mediaType, null, inputStream); + final NormalizedNodeContext returnValue = xmlBodyReader + .readFrom(null, null, null, mediaType, null, inputStream); checkNormalizedNodeContext(returnValue); checkExpectValueNormalizeNodeContext(dataSchemaNode, returnValue, dataII); } @@ -124,11 +127,11 @@ public class TestXmlBodyReader extends AbstractBodyReaderTest { final YangInstanceIdentifier dataII = YangInstanceIdentifier.of(dataSchemaNode.getQName()).node(cont1QName); final DataSchemaNode dataSchemaNodeOnPath = ((DataNodeContainer) dataSchemaNode).getDataChildByName(cont1QName); final String uri = "instance-identifier-module:cont/cont1"; - mockBodyReader(uri, this.xmlBodyReader, false); + mockBodyReader(uri, xmlBodyReader, false); final InputStream inputStream = TestXmlBodyReader.class .getResourceAsStream("/instanceidentifier/xml/xml_sub_container.xml"); - final NormalizedNodeContext returnValue = this.xmlBodyReader - .readFrom(null, null, null, this.mediaType, null, inputStream); + final NormalizedNodeContext returnValue = xmlBodyReader + .readFrom(null, null, null, mediaType, null, inputStream); checkNormalizedNodeContext(returnValue); checkExpectValueNormalizeNodeContext(dataSchemaNodeOnPath, returnValue, dataII); } @@ -140,11 +143,11 @@ public class TestXmlBodyReader extends AbstractBodyReaderTest { final QName cont1QName = QName.create(dataSchemaNode.getQName(), "cont1"); final YangInstanceIdentifier dataII = YangInstanceIdentifier.of(dataSchemaNode.getQName()).node(cont1QName); final String uri = "instance-identifier-module:cont"; - mockBodyReader(uri, this.xmlBodyReader, true); + mockBodyReader(uri, xmlBodyReader, true); final InputStream inputStream = TestXmlBodyReader.class .getResourceAsStream("/instanceidentifier/xml/xml_sub_container.xml"); - final NormalizedNodeContext returnValue = this.xmlBodyReader - .readFrom(null, null, null, this.mediaType, null, inputStream); + final NormalizedNodeContext returnValue = xmlBodyReader + .readFrom(null, null, null, mediaType, null, inputStream); checkNormalizedNodeContext(returnValue); checkExpectValueNormalizeNodeContext(dataSchemaNode, returnValue, dataII); } @@ -153,18 +156,17 @@ public class TestXmlBodyReader extends AbstractBodyReaderTest { public void moduleSubContainerAugmentDataPostTest() throws Exception { final DataSchemaNode dataSchemaNode = schemaContext.getDataChildByName(QName.create(INSTANCE_IDENTIFIER_MODULE_QNAME, "cont")); - final Module augmentModule = schemaContext.findModules(new URI("augment:module")).iterator().next(); + final Module augmentModule = schemaContext.findModules(XMLNamespace.of("augment:module")).iterator().next(); final QName contAugmentQName = QName.create(augmentModule.getQNameModule(), "cont-augment"); - final YangInstanceIdentifier.AugmentationIdentifier augII = new YangInstanceIdentifier.AugmentationIdentifier( - Sets.newHashSet(contAugmentQName)); + final AugmentationIdentifier augII = new AugmentationIdentifier(Set.of(contAugmentQName)); final YangInstanceIdentifier dataII = YangInstanceIdentifier.of(dataSchemaNode.getQName()) .node(augII).node(contAugmentQName); final String uri = "instance-identifier-module:cont"; - mockBodyReader(uri, this.xmlBodyReader, true); + mockBodyReader(uri, xmlBodyReader, true); final InputStream inputStream = TestXmlBodyReader.class .getResourceAsStream("/instanceidentifier/xml/xml_augment_container.xml"); - final NormalizedNodeContext returnValue = this.xmlBodyReader - .readFrom(null, null, null, this.mediaType, null, inputStream); + final NormalizedNodeContext returnValue = xmlBodyReader + .readFrom(null, null, null, mediaType, null, inputStream); checkNormalizedNodeContext(returnValue); checkExpectValueNormalizeNodeContext(dataSchemaNode, returnValue, dataII); } @@ -173,23 +175,22 @@ public class TestXmlBodyReader extends AbstractBodyReaderTest { public void moduleSubContainerChoiceAugmentDataPostTest() throws Exception { final DataSchemaNode dataSchemaNode = schemaContext.getDataChildByName(QName.create(INSTANCE_IDENTIFIER_MODULE_QNAME, "cont")); - final Module augmentModule = schemaContext.findModules(new URI("augment:module")).iterator().next(); + final Module augmentModule = schemaContext.findModules(XMLNamespace.of("augment:module")).iterator().next(); final QName augmentChoice1QName = QName.create(augmentModule.getQNameModule(), "augment-choice1"); final QName augmentChoice2QName = QName.create(augmentChoice1QName, "augment-choice2"); - final QName containerQName = QName.create(augmentChoice1QName, "case-choice-case-container1"); - final YangInstanceIdentifier.AugmentationIdentifier augChoice1II = - new YangInstanceIdentifier.AugmentationIdentifier(Sets.newHashSet(augmentChoice1QName)); - final YangInstanceIdentifier.AugmentationIdentifier augChoice2II = - new YangInstanceIdentifier.AugmentationIdentifier(Sets.newHashSet(augmentChoice2QName)); final YangInstanceIdentifier dataII = YangInstanceIdentifier.of(dataSchemaNode.getQName()) - .node(augChoice1II).node(augmentChoice1QName).node(augChoice2II).node(augmentChoice2QName) - .node(containerQName); + .node(new AugmentationIdentifier(Set.of(augmentChoice1QName))) + .node(augmentChoice1QName) + // FIXME: DataSchemaTreeNode intepretation seems to have a bug + //.node(new AugmentationIdentifier(Set.of(augmentChoice2QName))) + .node(augmentChoice2QName) + .node(QName.create(augmentChoice1QName, "case-choice-case-container1")); final String uri = "instance-identifier-module:cont"; - mockBodyReader(uri, this.xmlBodyReader, true); + mockBodyReader(uri, xmlBodyReader, true); final InputStream inputStream = TestXmlBodyReader.class .getResourceAsStream("/instanceidentifier/xml/xml_augment_choice_container.xml"); - final NormalizedNodeContext returnValue = this.xmlBodyReader - .readFrom(null, null, null, this.mediaType, null, inputStream); + final NormalizedNodeContext returnValue = xmlBodyReader + .readFrom(null, null, null, mediaType, null, inputStream); checkNormalizedNodeContext(returnValue); checkExpectValueNormalizeNodeContext(dataSchemaNode, returnValue, dataII); } @@ -197,29 +198,20 @@ public class TestXmlBodyReader extends AbstractBodyReaderTest { @Test public void rpcModuleInputTest() throws Exception { final String uri = "invoke-rpc-module:rpc-test"; - mockBodyReader(uri, this.xmlBodyReader, true); - final InputStream inputStream = TestXmlBodyReader.class - .getResourceAsStream("/invoke-rpc/xml/rpc-input.xml"); - final NormalizedNodeContext returnValue = this.xmlBodyReader - .readFrom(null, null, null, this.mediaType, null, inputStream); - checkNormalizedNodeContext(returnValue); + mockBodyReader(uri, xmlBodyReader, true); + final InputStream inputStream = TestXmlBodyReader.class.getResourceAsStream("/invoke-rpc/xml/rpc-input.xml"); + final NormalizedNodeContext returnValue = xmlBodyReader.readFrom(null, null, null, mediaType, null, + inputStream); + checkNormalizedNodeContextRpc(returnValue); final ContainerNode contNode = (ContainerNode) returnValue.getData(); - final YangInstanceIdentifier yangCont = YangInstanceIdentifier.of(QName.create(contNode.getNodeType(), "cont")); - final Optional> contDataNodePotential = contNode - .getChild(yangCont.getLastPathArgument()); + final Optional contDataNodePotential = contNode.findChildByArg(new NodeIdentifier( + QName.create(contNode.getIdentifier().getNodeType(), "cont"))); assertTrue(contDataNodePotential.isPresent()); final ContainerNode contDataNode = (ContainerNode) contDataNodePotential.get(); - final YangInstanceIdentifier yangLeaf = - YangInstanceIdentifier.of(QName.create(contDataNode.getNodeType(), "lf")); - final Optional> leafDataNode = contDataNode.getChild( - yangLeaf.getLastPathArgument()); + final Optional leafDataNode = contDataNode.findChildByArg(new NodeIdentifier( + QName.create(contDataNode.getIdentifier().getNodeType(), "lf"))); assertTrue(leafDataNode.isPresent()); - assertTrue("lf-test".equalsIgnoreCase(leafDataNode.get().getValue().toString())); - } - - private static void checkExpectValueNormalizeNodeContext(final DataSchemaNode dataSchemaNode, - final NormalizedNodeContext nnContext) { - checkExpectValueNormalizeNodeContext(dataSchemaNode, nnContext, null); + assertTrue("lf-test".equalsIgnoreCase(leafDataNode.get().body().toString())); } private static void checkExpectValueNormalizeNodeContext(final DataSchemaNode dataSchemaNode, @@ -236,19 +228,19 @@ public class TestXmlBodyReader extends AbstractBodyReaderTest { */ @Test public void findFooContainerUsingNamespaceTest() throws Exception { - mockBodyReader("", this.xmlBodyReader, true); + mockBodyReader("", xmlBodyReader, true); final InputStream inputStream = TestXmlBodyReader.class .getResourceAsStream("/instanceidentifier/xml/xmlDataFindFooContainer.xml"); - final NormalizedNodeContext returnValue = this.xmlBodyReader - .readFrom(null, null, null, this.mediaType, null, inputStream); + final NormalizedNodeContext returnValue = xmlBodyReader + .readFrom(null, null, null, mediaType, null, inputStream); // check return value checkNormalizedNodeContext(returnValue); // check if container was found both according to its name and namespace assertEquals("Not correct container found, name was ignored", - "foo-bar-container", returnValue.getData().getNodeType().getLocalName()); + "foo-bar-container", returnValue.getData().getIdentifier().getNodeType().getLocalName()); assertEquals("Not correct container found, namespace was ignored", - "foo:module", returnValue.getData().getNodeType().getNamespace().toString()); + "foo:module", returnValue.getData().getIdentifier().getNodeType().getNamespace().toString()); } /** @@ -258,19 +250,19 @@ public class TestXmlBodyReader extends AbstractBodyReaderTest { */ @Test public void findBarContainerUsingNamespaceTest() throws Exception { - mockBodyReader("", this.xmlBodyReader, true); + mockBodyReader("", xmlBodyReader, true); final InputStream inputStream = TestXmlBodyReader.class .getResourceAsStream("/instanceidentifier/xml/xmlDataFindBarContainer.xml"); - final NormalizedNodeContext returnValue = this.xmlBodyReader - .readFrom(null, null, null, this.mediaType, null, inputStream); + final NormalizedNodeContext returnValue = xmlBodyReader + .readFrom(null, null, null, mediaType, null, inputStream); // check return value checkNormalizedNodeContext(returnValue); // check if container was found both according to its name and namespace assertEquals("Not correct container found, name was ignored", - "foo-bar-container", returnValue.getData().getNodeType().getLocalName()); + "foo-bar-container", returnValue.getData().getIdentifier().getNodeType().getLocalName()); assertEquals("Not correct container found, namespace was ignored", - "bar:module", returnValue.getData().getNodeType().getNamespace().toString()); + "bar:module", returnValue.getData().getIdentifier().getNodeType().getNamespace().toString()); } /** @@ -280,16 +272,16 @@ public class TestXmlBodyReader extends AbstractBodyReaderTest { */ @Test public void wrongRootElementTest() throws Exception { - mockBodyReader("instance-identifier-module:cont", this.xmlBodyReader, false); + mockBodyReader("instance-identifier-module:cont", xmlBodyReader, false); final InputStream inputStream = TestXmlBodyReader.class.getResourceAsStream( "/instanceidentifier/xml/bug7933.xml"); try { - this.xmlBodyReader.readFrom(null, null, null, this.mediaType, null, inputStream); + xmlBodyReader.readFrom(null, null, null, mediaType, null, inputStream); Assert.fail("Test should fail due to malformed PUT operation message"); } catch (final RestconfDocumentedException exception) { final RestconfError restconfError = exception.getErrors().get(0); - Assert.assertEquals(RestconfError.ErrorType.PROTOCOL, restconfError.getErrorType()); - Assert.assertEquals(RestconfError.ErrorTag.MALFORMED_MESSAGE, restconfError.getErrorTag()); + assertEquals(ErrorType.PROTOCOL, restconfError.getErrorType()); + assertEquals(ErrorTag.MALFORMED_MESSAGE, restconfError.getErrorTag()); } } }