Cleanup NetconfRemoteSchemaYangSourceProvider 46/76346/5
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 21 Sep 2018 12:15:53 +0000 (14:15 +0200)
committerJakub Morvay <jmorvay@frinx.io>
Sun, 23 Sep 2018 12:23:20 +0000 (14:23 +0200)
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 <robert.varga@pantheon.tech>
Signed-off-by: Jakub Morvay <jmorvay@frinx.io>
netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/schema/NetconfRemoteSchemaYangSourceProvider.java
netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/schema/YangLibrarySchemaYangSourceProvider.java
netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/schema/NetconfRemoteSchemaYangSourceProviderTest.java
netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/schema/mapping/NetconfMessageTransformerTest.java

index 4c75c43451012386c4a8349bb7d102f0b3219bd4..18953a34e7482742309bd8e27974d201dc911723 100644 (file)
@@ -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<YangTextSchemaSource> {
-
     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<String> 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<String> getSchemaFromRpc(final RemoteDeviceId id, final NormalizedNode<?, ?> result) {
         if (result == null) {
-            return Optional.absent();
+            return Optional.empty();
         }
 
-        final java.util.Optional<DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?>> child =
-                ((ContainerNode) result).getChild(NETCONF_DATA_PATHARG);
-
-        Preconditions.checkState(child.isPresent() && child.get() instanceof AnyXmlNode,
+        final Optional<DataContainerChild<?, ?>> 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<YangTextSchemaSource> getSource(final SourceIdentifier sourceIdentifier) {
         final String moduleName = sourceIdentifier.getName();
 
-        final Optional<String> revision = Optional.fromJavaUtil(sourceIdentifier.getRevision().map(Revision::toString));
+        final Optional<String> 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<DOMRpcResult, YangTextSchemaSource> {
-
-        private final RemoteDeviceId id;
-        private final SourceIdentifier sourceIdentifier;
-        private final String moduleName;
-        private final Optional<String> revision;
-
-        ResultToYangSourceTransformer(final RemoteDeviceId id, final SourceIdentifier sourceIdentifier,
-                final String moduleName, final Optional<String> 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<String> 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<String> 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<String> schemaString;
 
         NetconfYangTextSchemaSource(final RemoteDeviceId id, final SourceIdentifier sourceIdentifier,
-                                           final Optional<String> schemaString) {
+                final Optional<String> schemaString) {
             super(sourceIdentifier);
             this.id = id;
             this.schemaString = schemaString;
index 10a6d54b19e44841901b1028498686581873ecb1..f4251296592bf92182c773b2fe367cb4251c1214 100644 (file)
@@ -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;
index 6b85cd1fc88f5f9ff3b6486572326373e3a9d32c..643ac1f8337859a0e6c575a52e7820c8a4b6b60d 100644 (file)
@@ -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
+}
index af0a8b238e1a0069d74242304e417a5fd7290ba4..19b000322884895426e7968cd1f05cc39b00442d 100644 (file)
@@ -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);