X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=restconf%2Frestconf-nb-bierman02%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Frest%2Fcommon%2FTestRestconfUtils.java;h=5896eab7f48fd0b0a077cd61c29eee566895028c;hb=9cc114dc8e4109893e2346477b5ae14391afe01c;hp=39b881ac657bd9cc9a0cf8aa978522f4592cc810;hpb=2295d50e7212d80a9bc752f655fa66790ad45022;p=netconf.git diff --git a/restconf/restconf-nb-bierman02/src/test/java/org/opendaylight/controller/md/sal/rest/common/TestRestconfUtils.java b/restconf/restconf-nb-bierman02/src/test/java/org/opendaylight/controller/md/sal/rest/common/TestRestconfUtils.java index 39b881ac65..5896eab7f4 100644 --- a/restconf/restconf-nb-bierman02/src/test/java/org/opendaylight/controller/md/sal/rest/common/TestRestconfUtils.java +++ b/restconf/restconf-nb-bierman02/src/test/java/org/opendaylight/controller/md/sal/rest/common/TestRestconfUtils.java @@ -5,10 +5,15 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.controller.md.sal.rest.common; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; + import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableClassToInstanceMap; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; @@ -17,26 +22,33 @@ import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Optional; import javax.xml.parsers.ParserConfigurationException; import javax.xml.stream.XMLStreamException; import javax.xml.transform.dom.DOMSource; import org.opendaylight.controller.sal.rest.impl.test.providers.TestJsonBodyWriter; +import org.opendaylight.mdsal.dom.api.DOMMountPoint; +import org.opendaylight.mdsal.dom.api.DOMMountPointService; +import org.opendaylight.mdsal.dom.api.DOMSchemaService; +import org.opendaylight.mdsal.dom.spi.FixedDOMSchemaService; +import org.opendaylight.netconf.sal.rest.impl.NormalizedNodeContext; import org.opendaylight.netconf.sal.restconf.impl.ControllerContext; import org.opendaylight.restconf.common.context.InstanceIdentifierContext; -import org.opendaylight.restconf.common.context.NormalizedNodeContext; import org.opendaylight.yangtools.util.xml.UntrustedXML; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter; import org.opendaylight.yangtools.yang.data.codec.xml.XmlParserStream; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter; import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult; -import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; +import org.opendaylight.yangtools.yang.model.api.ContainerLike; 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.ListSchemaNode; import org.opendaylight.yangtools.yang.model.api.RpcDefinition; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaNode; +import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -51,8 +63,33 @@ public final class TestRestconfUtils { throw new UnsupportedOperationException("Test utility class"); } + public static ControllerContext newControllerContext(final EffectiveModelContext schemaContext) { + return newControllerContext(schemaContext, null); + } + + public static ControllerContext newControllerContext(final EffectiveModelContext schemaContext, + final DOMMountPoint mountInstance) { + final DOMMountPointService mockMountService = mock(DOMMountPointService.class); + + if (mountInstance != null) { + doReturn(Optional.of(FixedDOMSchemaService.of(() -> schemaContext))).when(mountInstance) + .getService(eq(DOMSchemaService.class)); + doReturn(Optional.ofNullable(mountInstance)).when(mockMountService).getMountPoint( + any(YangInstanceIdentifier.class)); + } + + DOMSchemaService mockSchemaService = mock(DOMSchemaService.class); + doReturn(schemaContext).when(mockSchemaService).getGlobalContext(); + + DOMSchemaService mockDomSchemaService = mock(DOMSchemaService.class); + doReturn(ImmutableClassToInstanceMap.of()).when(mockDomSchemaService).getExtensions(); + + return ControllerContext.newInstance(mockSchemaService, mockMountService, mockDomSchemaService); + } + @SuppressWarnings("checkstyle:IllegalCatch") - public static SchemaContext loadSchemaContext(final String yangPath, final SchemaContext schemaContext) { + public static EffectiveModelContext loadSchemaContext(final String yangPath, + final EffectiveModelContext schemaContext) { try { Preconditions.checkArgument(yangPath != null, "Path can not be null."); Preconditions.checkArgument(!yangPath.isEmpty(), "Path can not be empty."); @@ -73,12 +110,12 @@ public final class TestRestconfUtils { @SuppressWarnings("checkstyle:IllegalCatch") public static NormalizedNodeContext loadNormalizedContextFromXmlFile(final String pathToInputFile, - final String uri) { - final InstanceIdentifierContext iiContext = ControllerContext.getInstance().toInstanceIdentifier(uri); + final String uri, final ControllerContext controllerContext) { + final InstanceIdentifierContext iiContext = controllerContext.toInstanceIdentifier(uri); final InputStream inputStream = TestJsonBodyWriter.class.getResourceAsStream(pathToInputFile); try { final Document doc = UntrustedXML.newDocumentBuilder().parse(inputStream); - final NormalizedNode nn = parse(iiContext, doc); + final NormalizedNode nn = parse(iiContext, doc); return new NormalizedNodeContext(iiContext, nn); } catch (final Exception e) { LOG.error("Load xml file " + pathToInputFile + " fail.", e); @@ -86,7 +123,7 @@ public final class TestRestconfUtils { return null; } - private static NormalizedNode parse(final InstanceIdentifierContext iiContext, final Document doc) + private static NormalizedNode parse(final InstanceIdentifierContext iiContext, final Document doc) throws XMLStreamException, IOException, ParserConfigurationException, SAXException, URISyntaxException { final SchemaNode schemaNodeContext = iiContext.getSchemaNode(); DataSchemaNode schemaNode = null; @@ -109,8 +146,7 @@ public final class TestRestconfUtils { final String schemaNodeName = iiContext.getSchemaNode().getQName().getLocalName(); if (!schemaNodeName.equalsIgnoreCase(docRootElm)) { - final Collection children = ((DataNodeContainer) schemaNode).getChildNodes(); - for (final DataSchemaNode child : children) { + for (final DataSchemaNode child : ((DataNodeContainer) schemaNode).getChildNodes()) { if (child.getQName().getLocalName().equalsIgnoreCase(docRootElm)) { schemaNode = child; break; @@ -120,9 +156,10 @@ public final class TestRestconfUtils { final NormalizedNodeResult resultHolder = new NormalizedNodeResult(); final NormalizedNodeStreamWriter writer = ImmutableNormalizedNodeStreamWriter.from(resultHolder); - final XmlParserStream xmlParser = XmlParserStream.create(writer, iiContext.getSchemaContext(), schemaNode); + final XmlParserStream xmlParser = XmlParserStream.create(writer, SchemaInferenceStack.ofInstantiatedPath( + iiContext.getSchemaContext(), schemaNode.getPath()).toInference()); - if (schemaNode instanceof ContainerSchemaNode || schemaNode instanceof ListSchemaNode) { + if (schemaNode instanceof ContainerLike || schemaNode instanceof ListSchemaNode) { xmlParser.traverse(new DOMSource(doc.getDocumentElement())); return resultHolder.getResult(); }