From: Robert Varga Date: Fri, 21 Sep 2018 12:15:53 +0000 (+0200) Subject: Cleanup NetconfRemoteSchemaYangSourceProvider X-Git-Tag: release/neon~132^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=f1ecc7d387017880ef2cf3cacf73f0c12098f52f;p=netconf.git Cleanup NetconfRemoteSchemaYangSourceProvider Use Java 8 constructs instead of Guava where needed, cleanup source code formatting and turn an internal class into a simple(r) lambda. Change-Id: Ie79188f18186bd0afa2cfb5ab781e25123ed1549 Signed-off-by: Robert Varga Signed-off-by: Jakub Morvay --- diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/schema/NetconfRemoteSchemaYangSourceProvider.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/schema/NetconfRemoteSchemaYangSourceProvider.java index 4c75c43451..18953a34e7 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/schema/NetconfRemoteSchemaYangSourceProvider.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/schema/NetconfRemoteSchemaYangSourceProvider.java @@ -7,29 +7,26 @@ */ package org.opendaylight.netconf.sal.connect.netconf.schema; +import static com.google.common.base.Preconditions.checkState; +import static java.util.Objects.requireNonNull; import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil.GET_SCHEMA_QNAME; import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil.NETCONF_DATA_QNAME; -import com.google.common.base.Function; import com.google.common.base.MoreObjects; -import com.google.common.base.Optional; -import com.google.common.base.Preconditions; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.MoreExecutors; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.nio.charset.StandardCharsets; -import javax.annotation.Nonnull; +import java.util.Optional; import javax.xml.transform.dom.DOMSource; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.Yang; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.Revision; -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.AnyXmlNode; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; @@ -47,17 +44,7 @@ import org.slf4j.LoggerFactory; import org.w3c.dom.Element; public final class NetconfRemoteSchemaYangSourceProvider implements SchemaSourceProvider { - private static final Logger LOG = LoggerFactory.getLogger(NetconfRemoteSchemaYangSourceProvider.class); - - private final DOMRpcService rpc; - private final RemoteDeviceId id; - - public NetconfRemoteSchemaYangSourceProvider(final RemoteDeviceId id, final DOMRpcService rpc) { - this.id = id; - this.rpc = Preconditions.checkNotNull(rpc); - } - private static final NodeIdentifier FORMAT_PATHARG = NodeIdentifier.create(QName.create(NetconfMessageTransformUtil.GET_SCHEMA_QNAME, "format").intern()); private static final NodeIdentifier GET_SCHEMA_PATHARG = @@ -66,14 +53,20 @@ public final class NetconfRemoteSchemaYangSourceProvider implements SchemaSource NodeIdentifier.create(QName.create(NetconfMessageTransformUtil.GET_SCHEMA_QNAME, "identifier").intern()); private static final NodeIdentifier VERSION_PATHARG = NodeIdentifier.create(QName.create(NetconfMessageTransformUtil.GET_SCHEMA_QNAME, "version").intern()); - private static final LeafNode FORMAT_LEAF = Builders.leafBuilder().withNodeIdentifier(FORMAT_PATHARG).withValue(Yang.QNAME).build(); - private static final QName NETCONF_DATA = QName.create(GET_SCHEMA_QNAME, NETCONF_DATA_QNAME.getLocalName()).intern(); private static final NodeIdentifier NETCONF_DATA_PATHARG = NodeIdentifier.create(NETCONF_DATA); + private final DOMRpcService rpc; + private final RemoteDeviceId id; + + public NetconfRemoteSchemaYangSourceProvider(final RemoteDeviceId id, final DOMRpcService rpc) { + this.id = id; + this.rpc = requireNonNull(rpc); + } + public static ContainerNode createGetSchemaRequest(final String moduleName, final Optional revision) { final LeafNode identifier = Builders.leafBuilder().withNodeIdentifier(IDENTIFIER_PATHARG).withValue(moduleName).build(); @@ -90,19 +83,16 @@ public final class NetconfRemoteSchemaYangSourceProvider implements SchemaSource private static Optional getSchemaFromRpc(final RemoteDeviceId id, final NormalizedNode result) { if (result == null) { - return Optional.absent(); + return Optional.empty(); } - final java.util.Optional> child = - ((ContainerNode) result).getChild(NETCONF_DATA_PATHARG); - - Preconditions.checkState(child.isPresent() && child.get() instanceof AnyXmlNode, + final Optional> child = ((ContainerNode) result).getChild(NETCONF_DATA_PATHARG); + checkState(child.isPresent() && child.get() instanceof AnyXmlNode, "%s Unexpected response to get-schema, expected response with one child %s, but was %s", id, NETCONF_DATA, result); final DOMSource wrappedNode = ((AnyXmlNode) child.get()).getValue(); - Preconditions.checkNotNull(wrappedNode.getNode()); - final Element dataNode = (Element) wrappedNode.getNode(); + final Element dataNode = (Element) requireNonNull(wrappedNode.getNode()); return Optional.of(dataNode.getTextContent().trim()); } @@ -111,62 +101,28 @@ public final class NetconfRemoteSchemaYangSourceProvider implements SchemaSource public ListenableFuture getSource(final SourceIdentifier sourceIdentifier) { final String moduleName = sourceIdentifier.getName(); - final Optional revision = Optional.fromJavaUtil(sourceIdentifier.getRevision().map(Revision::toString)); + final Optional revision = sourceIdentifier.getRevision().map(Revision::toString); final NormalizedNode getSchemaRequest = createGetSchemaRequest(moduleName, revision); - - LOG.trace("{}: Loading YANG schema source for {}:{}", id, moduleName, - revision); - + LOG.trace("{}: Loading YANG schema source for {}:{}", id, moduleName, revision); return Futures.transform( rpc.invokeRpc(SchemaPath.create(true, NetconfMessageTransformUtil.GET_SCHEMA_QNAME), getSchemaRequest), - new ResultToYangSourceTransformer(id, sourceIdentifier, moduleName, revision), - MoreExecutors.directExecutor()); - } - - /** - * Transform composite node to string schema representation and then to ASTSchemaSource. - */ - private static final class ResultToYangSourceTransformer implements - Function { - - private final RemoteDeviceId id; - private final SourceIdentifier sourceIdentifier; - private final String moduleName; - private final Optional revision; - - ResultToYangSourceTransformer(final RemoteDeviceId id, final SourceIdentifier sourceIdentifier, - final String moduleName, final Optional revision) { - this.id = id; - this.sourceIdentifier = sourceIdentifier; - this.moduleName = moduleName; - this.revision = revision; - } - - @Override - public YangTextSchemaSource apply(@Nonnull final DOMRpcResult input) { - - if (input.getErrors().isEmpty()) { - - final Optional schemaString = getSchemaFromRpc(id, input.getResult()); - - Preconditions.checkState(schemaString.isPresent(), - "%s: Unexpected response to get-schema, schema not present in message for: %s", - id, sourceIdentifier); - - LOG.debug("{}: YANG Schema successfully retrieved for {}:{}", - id, moduleName, revision); - return new NetconfYangTextSchemaSource(id, sourceIdentifier, schemaString); - } - - LOG.warn( - "{}: YANG schema was not successfully retrieved for {}. Errors: {}", - id, sourceIdentifier, input.getErrors()); - - throw new IllegalStateException(String.format( + input -> { + // Transform composite node to string schema representation and then to ASTSchemaSource. + if (input.getErrors().isEmpty()) { + final Optional schemaString = getSchemaFromRpc(id, input.getResult()); + checkState(schemaString.isPresent(), + "%s: Unexpected response to get-schema, schema not present in message for: %s", id, + sourceIdentifier); + LOG.debug("{}: YANG Schema successfully retrieved for {}:{}", id, moduleName, revision); + return new NetconfYangTextSchemaSource(id, sourceIdentifier, schemaString); + } + + LOG.warn("{}: YANG schema was not successfully retrieved for {}. Errors: {}", id, sourceIdentifier, + input.getErrors()); + throw new IllegalStateException(String.format( "%s: YANG schema was not successfully retrieved for %s. Errors: %s", id, sourceIdentifier, input.getErrors())); - } - + }, MoreExecutors.directExecutor()); } static class NetconfYangTextSchemaSource extends YangTextSchemaSource { @@ -174,7 +130,7 @@ public final class NetconfRemoteSchemaYangSourceProvider implements SchemaSource private final Optional schemaString; NetconfYangTextSchemaSource(final RemoteDeviceId id, final SourceIdentifier sourceIdentifier, - final Optional schemaString) { + final Optional schemaString) { super(sourceIdentifier); this.id = id; this.schemaString = schemaString; diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/schema/YangLibrarySchemaYangSourceProvider.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/schema/YangLibrarySchemaYangSourceProvider.java index 10a6d54b19..f425129659 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/schema/YangLibrarySchemaYangSourceProvider.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/schema/YangLibrarySchemaYangSourceProvider.java @@ -10,7 +10,6 @@ package org.opendaylight.netconf.sal.connect.netconf.schema; import static com.google.common.base.Preconditions.checkArgument; import static java.util.Objects.requireNonNull; -import com.google.common.base.Optional; import com.google.common.collect.ImmutableMap; import com.google.common.io.ByteStreams; import com.google.common.util.concurrent.Futures; @@ -20,6 +19,7 @@ import java.io.InputStream; import java.net.URL; import java.nio.charset.Charset; import java.util.Map; +import java.util.Optional; import org.opendaylight.netconf.sal.connect.netconf.schema.NetconfRemoteSchemaYangSourceProvider.NetconfYangTextSchemaSource; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceException; diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/schema/NetconfRemoteSchemaYangSourceProviderTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/schema/NetconfRemoteSchemaYangSourceProviderTest.java index 6b85cd1fc8..643ac1f833 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/schema/NetconfRemoteSchemaYangSourceProviderTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/schema/NetconfRemoteSchemaYangSourceProviderTest.java @@ -11,7 +11,6 @@ import static org.mockito.Matchers.any; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.verify; -import com.google.common.base.Optional; import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.Futures; import java.net.InetSocketAddress; @@ -71,7 +70,7 @@ public class NetconfRemoteSchemaYangSourceProviderTest { verify(service).invokeRpc( SchemaPath.create(true, NetconfMessageTransformUtil.GET_SCHEMA_QNAME), NetconfRemoteSchemaYangSourceProvider.createGetSchemaRequest(identifier.getName(), - Optional.fromJavaUtil(identifier.getRevision().map(Revision::toString))) + identifier.getRevision().map(Revision::toString)) ); } @@ -91,4 +90,4 @@ public class NetconfRemoteSchemaYangSourceProviderTest { return ImmutableContainerNodeBuilder.create().withNodeIdentifier(id).withChild(child).build(); } -} \ No newline at end of file +} diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/schema/mapping/NetconfMessageTransformerTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/schema/mapping/NetconfMessageTransformerTest.java index af0a8b238e..19b0003228 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/schema/mapping/NetconfMessageTransformerTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/schema/mapping/NetconfMessageTransformerTest.java @@ -29,7 +29,6 @@ import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTr import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil.toId; import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil.toPath; -import com.google.common.base.Optional; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; @@ -40,6 +39,7 @@ import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import javax.xml.transform.dom.DOMSource; import org.apache.xerces.dom.TextImpl; @@ -309,7 +309,7 @@ public class NetconfMessageTransformerTest { .nodeWithKey(Schema.QNAME, keys).build(); final DataContainerChild editConfigStructure = createEditConfigStructure(BaseSchema.BASE_NETCONF_CTX_WITH_NOTIFICATIONS.getSchemaContext(), id, - Optional.absent(), Optional.fromNullable(schemaNode)); + com.google.common.base.Optional.absent(), com.google.common.base.Optional.fromNullable(schemaNode)); final DataContainerChild target = NetconfBaseOps.getTargetNode(NETCONF_CANDIDATE_QNAME);