* 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.netconf.client.mdsal;
+package org.opendaylight.netconf.client.mdsal.impl;
import static com.google.common.base.Preconditions.checkState;
import static java.util.Objects.requireNonNull;
* {@code ietf-netconf-monitoring} interface. The set of available sources is not pre-determined and each request is
* dispatched to the device, i.e. this provider reflects real-time updates to available schemas.
*/
-public final class MonitoringSchemaSourceProvider implements SchemaSourceProvider<YangTextSource> {
+final class MonitoringSchemaSourceProvider implements SchemaSourceProvider<YangTextSource> {
private static final Logger LOG = LoggerFactory.getLogger(MonitoringSchemaSourceProvider.class);
private static final NodeIdentifier FORMAT_PATHARG =
NodeIdentifier.create(QName.create(GetSchema.QNAME, "format").intern());
private final NetconfRpcService rpc;
private final RemoteDeviceId id;
- public MonitoringSchemaSourceProvider(final RemoteDeviceId id, final NetconfRpcService rpc) {
+ MonitoringSchemaSourceProvider(final RemoteDeviceId id, final NetconfRpcService rpc) {
this.id = requireNonNull(id);
this.rpc = requireNonNull(rpc);
}
- public static @NonNull ContainerNode createGetSchemaRequest(final String moduleName,
- final Optional<String> revision) {
- final var builder = ImmutableNodes.newContainerBuilder()
- .withNodeIdentifier(GET_SCHEMA_PATHARG)
- .withChild(ImmutableNodes.leafNode(IDENTIFIER_PATHARG, moduleName))
- .withChild(FORMAT_LEAF);
- revision.ifPresent(rev -> builder.withChild(ImmutableNodes.leafNode(VERSION_PATHARG, rev)));
- return builder.build();
- }
-
- private static Optional<String> getSchemaFromRpc(final RemoteDeviceId id, final ContainerNode result) {
- if (result == null) {
- return Optional.empty();
- }
-
- final DataContainerChild child = result.childByArg(NETCONF_DATA_PATHARG);
- checkState(child instanceof DOMSourceAnyxmlNode,
- "%s Unexpected response to get-schema, expected response with one child %s, but was %s", id,
- Data.QNAME, result);
-
- final DOMSource wrappedNode = ((DOMSourceAnyxmlNode) child).body();
- final Element dataNode = (Element) requireNonNull(wrappedNode.getNode());
-
- return Optional.of(dataNode.getTextContent().trim());
- }
-
@Override
public ListenableFuture<YangTextSource> getSource(final SourceIdentifier sourceIdentifier) {
final String moduleName = sourceIdentifier.name().getLocalName();
result.errors()));
}, MoreExecutors.directExecutor());
}
+
+ static @NonNull ContainerNode createGetSchemaRequest(final String moduleName, final Optional<String> revision) {
+ final var builder = ImmutableNodes.newContainerBuilder()
+ .withNodeIdentifier(GET_SCHEMA_PATHARG)
+ .withChild(ImmutableNodes.leafNode(IDENTIFIER_PATHARG, moduleName))
+ .withChild(FORMAT_LEAF);
+ revision.ifPresent(rev -> builder.withChild(ImmutableNodes.leafNode(VERSION_PATHARG, rev)));
+ return builder.build();
+ }
+
+ private static Optional<String> getSchemaFromRpc(final RemoteDeviceId id, final ContainerNode result) {
+ if (result == null) {
+ return Optional.empty();
+ }
+
+ final DataContainerChild child = result.childByArg(NETCONF_DATA_PATHARG);
+ checkState(child instanceof DOMSourceAnyxmlNode,
+ "%s Unexpected response to get-schema, expected response with one child %s, but was %s", id,
+ Data.QNAME, result);
+
+ final DOMSource wrappedNode = ((DOMSourceAnyxmlNode) child).body();
+ final Element dataNode = (Element) requireNonNull(wrappedNode.getNode());
+
+ return Optional.of(dataNode.getTextContent().trim());
+ }
}
* 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.netconf.client.mdsal;
+package org.opendaylight.netconf.client.mdsal.impl;
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.verify;
+import com.google.common.util.concurrent.Futures;
import java.net.InetSocketAddress;
import java.util.Optional;
import java.util.Set;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.dom.DOMSource;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnitRunner;
+import org.mockito.junit.jupiter.MockitoExtension;
import org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult;
import org.opendaylight.netconf.client.mdsal.api.NetconfRpcService;
import org.opendaylight.netconf.client.mdsal.api.RemoteDeviceId;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.GetSchema;
-import org.opendaylight.yangtools.util.concurrent.FluentFutures;
import org.opendaylight.yangtools.util.xml.UntrustedXML;
import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
import org.opendaylight.yangtools.yang.model.api.source.SourceIdentifier;
-import org.opendaylight.yangtools.yang.model.api.source.YangTextSource;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-@RunWith(MockitoJUnitRunner.StrictStubs.class)
-public class MonitoringSchemaSourceProviderTest {
+@ExtendWith(MockitoExtension.class)
+class MonitoringSchemaSourceProviderTest {
@Mock
private NetconfRpcService service;
private MonitoringSchemaSourceProvider provider;
- @Before
- public void setUp() throws Exception {
- doReturn(FluentFutures.immediateFluentFuture(new DefaultDOMRpcResult(getNode(), Set.of()))).when(service)
+ @BeforeEach
+ void setUp() throws Exception {
+ doReturn(Futures.immediateFuture(new DefaultDOMRpcResult(getNode(), Set.of()))).when(service)
.invokeNetconf(any(), any());
provider = new MonitoringSchemaSourceProvider(
}
@Test
- public void testGetSource() throws Exception {
- final SourceIdentifier identifier = new SourceIdentifier("test", "2016-02-08");
- final YangTextSource source = provider.getSource(identifier).get();
+ void testGetSource() throws Exception {
+ final var identifier = new SourceIdentifier("test", "2016-02-08");
+ final var source = provider.getSource(identifier).get();
assertEquals(identifier, source.sourceId());
verify(service).invokeNetconf(GetSchema.QNAME,
MonitoringSchemaSourceProvider.createGetSchemaRequest("test", Optional.of("2016-02-08")));
}
private static ContainerNode getNode() throws ParserConfigurationException {
- final YangInstanceIdentifier.NodeIdentifier id = YangInstanceIdentifier.NodeIdentifier.create(
- QName.create("urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring", "2010-10-04", "output")
- );
- final YangInstanceIdentifier.NodeIdentifier childId = YangInstanceIdentifier.NodeIdentifier.create(
- QName.create("urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring", "2010-10-04", "data")
- );
- Document xmlDoc = UntrustedXML.newDocumentBuilder().newDocument();
- Element root = xmlDoc.createElement("data");
+ final var id = new NodeIdentifier(
+ QName.create("urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring", "2010-10-04", "output"));
+ final var childId = new NodeIdentifier(
+ QName.create("urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring", "2010-10-04", "data"));
+
+ var xmlDoc = UntrustedXML.newDocumentBuilder().newDocument();
+ var root = xmlDoc.createElement("data");
root.setTextContent("module test {}");
return ImmutableNodes.newContainerBuilder()
.withNodeIdentifier(id)