X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-rest-connector%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Frest%2Fimpl%2Ftest%2Fproviders%2FTestXmlBodyReader.java;h=bb55b45221239a3a3ce2750816b9f63308aeff32;hb=refs%2Fchanges%2F30%2F19530%2F14;hp=46bea7a75c817cdf63c6dfa8596afa641daafd8e;hpb=9055581e2aabac7478102c6b05f9118b443a9d64;p=controller.git diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/TestXmlBodyReader.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/TestXmlBodyReader.java index 46bea7a75c..bb55b45221 100644 --- a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/TestXmlBodyReader.java +++ b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/TestXmlBodyReader.java @@ -8,13 +8,14 @@ package org.opendaylight.controller.sal.rest.impl.test.providers; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; - +import com.google.common.base.Optional; +import com.google.common.collect.Sets; import java.io.InputStream; - +import java.net.URI; import javax.ws.rs.core.MediaType; - import org.junit.BeforeClass; import org.junit.Test; import org.opendaylight.controller.sal.rest.impl.XmlNormalizedNodeBodyReader; @@ -27,25 +28,25 @@ import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; 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.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import com.google.common.base.Optional; - /** - * sal-rest-connector org.opendaylight.controller.sal.rest.impl.test.providers + * sal-rest-connector + * org.opendaylight.controller.sal.rest.impl.test.providers * * * * @author Vaclav Demcak * - * Created: Mar 7, 2015 + * Created: Mar 7, 2015 */ public class TestXmlBodyReader extends AbstractBodyReaderTest { private final XmlNormalizedNodeBodyReader xmlBodyReader; private static SchemaContext schemaContext; - public TestXmlBodyReader() throws NoSuchFieldException, SecurityException { + public TestXmlBodyReader () throws NoSuchFieldException, SecurityException { super(); xmlBodyReader = new XmlNormalizedNodeBodyReader(); } @@ -56,10 +57,8 @@ public class TestXmlBodyReader extends AbstractBodyReaderTest { } @BeforeClass - public static void initialization() throws NoSuchFieldException, - SecurityException { - schemaContext = schemaContextLoader("/instanceidentifier/yang", - schemaContext); + public static void initialization() throws NoSuchFieldException, SecurityException { + schemaContext = schemaContextLoader("/instanceidentifier/yang", schemaContext); schemaContext = schemaContextLoader("/modules", schemaContext); schemaContext = schemaContextLoader("/invoke-rpc", schemaContext); controllerContext.setSchemas(schemaContext); @@ -67,45 +66,90 @@ public class TestXmlBodyReader extends AbstractBodyReaderTest { @Test public void moduleDataTest() throws Exception { - final DataSchemaNode dataSchemaNode = schemaContext - .getDataChildByName("cont"); + final DataSchemaNode dataSchemaNode = schemaContext.getDataChildByName("cont"); + final YangInstanceIdentifier dataII = YangInstanceIdentifier.of(dataSchemaNode.getQName()); final String uri = "instance-identifier-module:cont"; mockBodyReader(uri, xmlBodyReader, false); final InputStream inputStream = TestXmlBodyReader.class .getResourceAsStream("/instanceidentifier/xml/xmldata.xml"); - final NormalizedNodeContext returnValue = xmlBodyReader.readFrom(null, - null, null, mediaType, null, inputStream); + final NormalizedNodeContext returnValue = xmlBodyReader + .readFrom(null, null, null, mediaType, null, inputStream); checkNormalizedNodeContext(returnValue); - checkExpectValueNormalizeNodeContext(dataSchemaNode, returnValue); + checkExpectValueNormalizeNodeContext(dataSchemaNode, returnValue, dataII); } @Test public void moduleSubContainerDataPutTest() throws Exception { - final DataSchemaNode dataSchemaNode = schemaContext - .getDataChildByName("cont"); + final DataSchemaNode dataSchemaNode = schemaContext.getDataChildByName("cont"); + QName cont1QName = QName.create(dataSchemaNode.getQName(), "cont1"); + 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, xmlBodyReader, false); final InputStream inputStream = TestXmlBodyReader.class .getResourceAsStream("/instanceidentifier/xml/xml_sub_container.xml"); - final NormalizedNodeContext returnValue = xmlBodyReader.readFrom(null, - null, null, mediaType, null, inputStream); + final NormalizedNodeContext returnValue = xmlBodyReader + .readFrom(null, null, null, mediaType, null, inputStream); checkNormalizedNodeContext(returnValue); - checkExpectValueNormalizeNodeContext(dataSchemaNode, returnValue, - "cont1"); + checkExpectValueNormalizeNodeContext(dataSchemaNodeOnPath, returnValue, dataII); } @Test public void moduleSubContainerDataPostTest() throws Exception { - final DataSchemaNode dataSchemaNode = schemaContext - .getDataChildByName("cont"); + final DataSchemaNode dataSchemaNode = schemaContext.getDataChildByName("cont"); + 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, xmlBodyReader, true); final InputStream inputStream = TestXmlBodyReader.class .getResourceAsStream("/instanceidentifier/xml/xml_sub_container.xml"); - final NormalizedNodeContext returnValue = xmlBodyReader.readFrom(null, - null, null, mediaType, null, inputStream); + final NormalizedNodeContext returnValue = xmlBodyReader + .readFrom(null, null, null, mediaType, null, inputStream); checkNormalizedNodeContext(returnValue); - checkExpectValueNormalizeNodeContext(dataSchemaNode, returnValue); + checkExpectValueNormalizeNodeContext(dataSchemaNode, returnValue, dataII); + } + + @Test + public void moduleSubContainerAugmentDataPostTest() throws Exception { + final DataSchemaNode dataSchemaNode = schemaContext.getDataChildByName("cont"); + final Module augmentModule = schemaContext.findModuleByNamespace(new URI("augment:module")).iterator().next(); + QName contAugmentQName = QName.create(augmentModule.getQNameModule(), "cont-augment"); + YangInstanceIdentifier.AugmentationIdentifier augII = new YangInstanceIdentifier.AugmentationIdentifier( + Sets.newHashSet(contAugmentQName)); + final YangInstanceIdentifier dataII = YangInstanceIdentifier.of(dataSchemaNode.getQName()) + .node(augII).node(contAugmentQName); + final String uri = "instance-identifier-module:cont"; + mockBodyReader(uri, xmlBodyReader, true); + final InputStream inputStream = TestXmlBodyReader.class + .getResourceAsStream("/instanceidentifier/xml/xml_augment_container.xml"); + final NormalizedNodeContext returnValue = xmlBodyReader + .readFrom(null, null, null, mediaType, null, inputStream); + checkNormalizedNodeContext(returnValue); + checkExpectValueNormalizeNodeContext(dataSchemaNode, returnValue, dataII); + } + + @Test + public void moduleSubContainerChoiceAugmentDataPostTest() throws Exception { + final DataSchemaNode dataSchemaNode = schemaContext.getDataChildByName("cont"); + final Module augmentModule = schemaContext.findModuleByNamespace(new URI("augment:module")).iterator().next(); + QName augmentChoice1QName = QName.create(augmentModule.getQNameModule(), "augment-choice1"); + QName augmentChoice2QName = QName.create(augmentChoice1QName, "augment-choice2"); + final QName containerQName = QName.create(augmentChoice1QName, "case-choice-case-container1"); + YangInstanceIdentifier.AugmentationIdentifier augChoice1II = new YangInstanceIdentifier.AugmentationIdentifier( + Sets.newHashSet(augmentChoice1QName)); + 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); + final String uri = "instance-identifier-module:cont"; + mockBodyReader(uri, xmlBodyReader, true); + final InputStream inputStream = TestXmlBodyReader.class + .getResourceAsStream("/instanceidentifier/xml/xml_augment_choice_container.xml"); + final NormalizedNodeContext returnValue = xmlBodyReader + .readFrom(null, null, null, mediaType, null, inputStream); + checkNormalizedNodeContext(returnValue); + checkExpectValueNormalizeNodeContext(dataSchemaNode, returnValue, dataII); } @Test @@ -114,45 +158,26 @@ public class TestXmlBodyReader extends AbstractBodyReaderTest { 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); + final NormalizedNodeContext returnValue = xmlBodyReader + .readFrom(null, null, null, mediaType, null, inputStream); checkNormalizedNodeContext(returnValue); final ContainerNode contNode = (ContainerNode) returnValue.getData(); - final YangInstanceIdentifier yangleaf = YangInstanceIdentifier.of(QName - .create(contNode.getNodeType(), "lf")); - final Optional> leafDataNode = contNode - .getChild(yangleaf.getLastPathArgument()); + final YangInstanceIdentifier yangleaf = YangInstanceIdentifier.of(QName.create(contNode.getNodeType(), "lf")); + final Optional> leafDataNode = contNode.getChild(yangleaf.getLastPathArgument()); assertTrue(leafDataNode.isPresent()); - assertTrue("lf-test".equalsIgnoreCase(leafDataNode.get().getValue() - .toString())); + assertTrue("lf-test".equalsIgnoreCase(leafDataNode.get().getValue().toString())); } - private void checkExpectValueNormalizeNodeContext( - final DataSchemaNode dataSchemaNode, + private void checkExpectValueNormalizeNodeContext(final DataSchemaNode dataSchemaNode, final NormalizedNodeContext nnContext) { checkExpectValueNormalizeNodeContext(dataSchemaNode, nnContext, null); } - private void checkExpectValueNormalizeNodeContext( - final DataSchemaNode dataSchemaNode, - final NormalizedNodeContext nnContext, final String localQname) { - YangInstanceIdentifier dataNodeIdent = YangInstanceIdentifier - .of(dataSchemaNode.getQName()); - - if (localQname != null && dataSchemaNode instanceof DataNodeContainer) { - final DataSchemaNode child = ((DataNodeContainer) dataSchemaNode) - .getDataChildByName(localQname); - dataNodeIdent = YangInstanceIdentifier.builder(dataNodeIdent) - .node(child.getQName()).build(); - assertTrue(nnContext.getInstanceIdentifierContext().getSchemaNode() - .equals(child)); - } else { - assertTrue(nnContext.getInstanceIdentifierContext().getSchemaNode() - .equals(dataSchemaNode)); - } - assertTrue(nnContext.getInstanceIdentifierContext() - .getInstanceIdentifier().equals(dataNodeIdent)); - assertNotNull(NormalizedNodes.findNode(nnContext.getData(), - dataNodeIdent)); + private void checkExpectValueNormalizeNodeContext(final DataSchemaNode dataSchemaNode, + final NormalizedNodeContext nnContext, + final YangInstanceIdentifier dataNodeIdent) { + assertEquals(dataSchemaNode, nnContext.getInstanceIdentifierContext().getSchemaNode()); + assertEquals(dataNodeIdent, nnContext.getInstanceIdentifierContext().getInstanceIdentifier()); + assertNotNull(NormalizedNodes.findNode(nnContext.getData(), dataNodeIdent)); } }