import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.MoreExecutors;
import java.util.Optional;
-import javax.xml.transform.dom.DOMSource;
import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
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.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
import org.opendaylight.yangtools.yang.data.api.schema.DOMSourceAnyxmlNode;
-import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
import org.opendaylight.yangtools.yang.model.api.source.SourceIdentifier;
@Override
public ListenableFuture<YangTextSource> getSource(final SourceIdentifier sourceIdentifier) {
- final String moduleName = sourceIdentifier.name().getLocalName();
- final Revision revision = sourceIdentifier.revision();
- final ContainerNode getSchemaRequest = createGetSchemaRequest(moduleName,
- revision == null ? Optional.empty() : Optional.of(revision.toString()));
+ final var moduleName = sourceIdentifier.name().getLocalName();
+ final var revision = sourceIdentifier.revision();
+ final var getSchemaRequest = createGetSchemaRequest(moduleName, revision);
LOG.trace("{}: Loading YANG schema source for {}:{}", id, moduleName, revision);
return Futures.transform(rpc.invokeNetconf(GetSchema.QNAME, getSchemaRequest),
}, MoreExecutors.directExecutor());
}
- static @NonNull ContainerNode createGetSchemaRequest(final String moduleName, final Optional<String> revision) {
- final var builder = ImmutableNodes.newContainerBuilder()
+ static @NonNull ContainerNode createGetSchemaRequest(final String moduleName, final @Nullable Revision revision) {
+ return 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();
+ .withChild(ImmutableNodes.leafNode(VERSION_PATHARG, revision == null ? "" : revision.toString()))
+ .withChild(FORMAT_LEAF)
+ .build();
}
private static Optional<String> getSchemaFromRpc(final RemoteDeviceId id, final ContainerNode result) {
return Optional.empty();
}
- final DataContainerChild child = result.childByArg(NETCONF_DATA_PATHARG);
+ final var 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());
+ final var wrappedNode = ((DOMSourceAnyxmlNode) child).body();
+ final var dataNode = (Element) requireNonNull(wrappedNode.getNode());
return Optional.of(dataNode.getTextContent().trim());
}
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.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.GetSchema;
import org.opendaylight.yangtools.util.xml.UntrustedXML;
import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
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;
final var source = provider.getSource(identifier).get();
assertEquals(identifier, source.sourceId());
verify(service).invokeNetconf(GetSchema.QNAME,
- MonitoringSchemaSourceProvider.createGetSchemaRequest("test", Optional.of("2016-02-08")));
+ MonitoringSchemaSourceProvider.createGetSchemaRequest("test", Revision.of("2016-02-08")));
}
private static ContainerNode getNode() throws ParserConfigurationException {
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.NetconfConfigChange;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.netconf.config.change.Edit;
import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
@Test
public void testGetSchemaRequest() throws Exception {
final var netconfMessage = netconfMessageTransformer.toRpcRequest(GetSchema.QNAME,
- MonitoringSchemaSourceProvider.createGetSchemaRequest("module", Optional.of("2012-12-12")));
+ MonitoringSchemaSourceProvider.createGetSchemaRequest("module", Revision.of("2012-12-12")));
assertSimilarXml(netconfMessage, """
<rpc message-id="m-0" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get-schema xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">
assertTrue(compositeNodeRpcResult.errors().isEmpty());
assertNotNull(compositeNodeRpcResult.value());
- final var values = MonitoringSchemaSourceProvider.createGetSchemaRequest(
- "module", Optional.of("2012-12-12")).body();
+ final var values = MonitoringSchemaSourceProvider.createGetSchemaRequest("module", Revision.of("2012-12-12"))
+ .body();
final var keys = new HashMap<QName, Object>();
for (var value : values) {
@Test
public void testEditConfigRequest() throws Exception {
- final var values = MonitoringSchemaSourceProvider.createGetSchemaRequest(
- "module", Optional.of("2012-12-12")).body();
+ final var values = MonitoringSchemaSourceProvider.createGetSchemaRequest("module", Revision.of("2012-12-12"))
+ .body();
final var keys = new HashMap<QName, Object>();
for (var value : values) {