Merge "Address TODOs: use NetconfRpcFutureCallback for RPC callback"
authorTomas Cere <tcere@cisco.com>
Thu, 22 Sep 2016 13:05:17 +0000 (13:05 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Thu, 22 Sep 2016 13:05:17 +0000 (13:05 +0000)
netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/ReadOnlyTx.java
netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/WriteCandidateRunningTx.java
netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/WriteCandidateTx.java
netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/WriteRunningTx.java

index 8087fde8b709a95dc9c4d8e1f22c24a98033fc35..56fa78fe12faecda5d43e941c8fcc26cf98fb716 100644 (file)
@@ -10,15 +10,14 @@ package org.opendaylight.netconf.sal.connect.netconf.sal.tx;
 
 import com.google.common.base.Optional;
 import com.google.common.util.concurrent.CheckedFuture;
-import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import java.util.concurrent.ExecutionException;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
 import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction;
-import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult;
 import org.opendaylight.netconf.sal.connect.netconf.util.NetconfBaseOps;
+import org.opendaylight.netconf.sal.connect.netconf.util.NetconfRpcFutureCallback;
 import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId;
 import org.opendaylight.yangtools.util.concurrent.MappingCheckedFuture;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
@@ -33,41 +32,24 @@ public final class ReadOnlyTx implements DOMDataReadOnlyTransaction {
 
     private final NetconfBaseOps netconfOps;
     private final RemoteDeviceId id;
-    private final FutureCallback<DOMRpcResult> loggingCallback;
 
     public ReadOnlyTx(final NetconfBaseOps netconfOps, final RemoteDeviceId id) {
         this.netconfOps = netconfOps;
         this.id = id;
-
-        // Simple logging callback to log result of read operation
-        loggingCallback = new FutureCallback<DOMRpcResult>() {
-            @Override
-            public void onSuccess(final DOMRpcResult result) {
-                if(AbstractWriteTx.isSuccess(result)) {
-                    LOG.trace("{}: Reading data successful", id);
-                } else {
-                    LOG.warn("{}: Reading data unsuccessful: {}", id, result.getErrors());
-                }
-
-            }
-
-            @Override
-            public void onFailure(final Throwable t) {
-                LOG.warn("{}: Reading data failed", id, t);
-            }
-        };
     }
 
     private CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException> readConfigurationData(
             final YangInstanceIdentifier path) {
-        final ListenableFuture<Optional<NormalizedNode<?, ?>>> configRunning = netconfOps.getConfigRunningData(loggingCallback, Optional.fromNullable(path));
+        final ListenableFuture<Optional<NormalizedNode<?, ?>>> configRunning = netconfOps.getConfigRunningData(
+                new NetconfRpcFutureCallback("Data read", id), Optional.fromNullable(path));
 
         return MappingCheckedFuture.create(configRunning, ReadFailedException.MAPPER);
     }
 
     private CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException> readOperationalData(
             final YangInstanceIdentifier path) {
-        final ListenableFuture<Optional<NormalizedNode<?, ?>>> configCandidate = netconfOps.getData(loggingCallback, Optional.fromNullable(path));
+        final ListenableFuture<Optional<NormalizedNode<?, ?>>> configCandidate = netconfOps.getData(
+                new NetconfRpcFutureCallback("Data read", id), Optional.fromNullable(path));
 
         return MappingCheckedFuture.create(configCandidate, ReadFailedException.MAPPER);
     }
index 40a43c1cbe6eb61e1b2873e87cb3dc7117520566..2729444311417022e777eacb78fe639d046b2b5f 100644 (file)
@@ -8,8 +8,6 @@
 
 package org.opendaylight.netconf.sal.connect.netconf.sal.tx;
 
-import com.google.common.util.concurrent.FutureCallback;
-import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult;
 import org.opendaylight.netconf.sal.connect.netconf.util.NetconfBaseOps;
 import org.opendaylight.netconf.sal.connect.netconf.util.NetconfRpcFutureCallback;
 import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId;
@@ -23,7 +21,6 @@ import org.slf4j.LoggerFactory;
  *     <li>Running datastore is locked as the first thing and this lock has to succeed</li>
  * </ul>
  */
-//TODO replace custom RPCs future callbacks with NetconfRpcFutureCallback
 public class WriteCandidateRunningTx extends WriteCandidateTx {
 
     private static final Logger LOG  = LoggerFactory.getLogger(WriteCandidateRunningTx.class);
@@ -45,24 +42,7 @@ public class WriteCandidateRunningTx extends WriteCandidateTx {
     }
 
     private void lockRunning() {
-        final FutureCallback<DOMRpcResult> lockRunningCallback = new FutureCallback<DOMRpcResult>() {
-            @Override
-            public void onSuccess(DOMRpcResult result) {
-                if (isSuccess(result)) {
-                    if (LOG.isTraceEnabled()) {
-                        LOG.trace("Lock running succesfull");
-                    }
-                } else {
-                    LOG.warn("{}: lock running invoked unsuccessfully: {}", id, result.getErrors());
-                }
-            }
-
-            @Override
-            public void onFailure(Throwable t) {
-                LOG.warn("{}: Failed to lock running. Failed to initialize transaction", id, t);
-            }
-        };
-        resultsFutures.add(netOps.lockRunning(lockRunningCallback));
+        resultsFutures.add(netOps.lockRunning(new NetconfRpcFutureCallback("Lock running", id)));
     }
 
     /**
index 489cb7bad1069a862631ce60c7e937a4a563dab8..6df2239f5140698f9072809366524d63ceeffecd 100644 (file)
@@ -19,7 +19,6 @@ import javax.annotation.Nullable;
 import org.opendaylight.controller.md.sal.common.api.TransactionStatus;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
 import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult;
-import org.opendaylight.netconf.api.NetconfDocumentedException;
 import org.opendaylight.netconf.sal.connect.netconf.util.NetconfBaseOps;
 import org.opendaylight.netconf.sal.connect.netconf.util.NetconfRpcFutureCallback;
 import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId;
@@ -53,7 +52,6 @@ import org.slf4j.LoggerFactory;
  *   <li>Commit and Unlock candidate datastore async</li>
  * </ol>
  */
-//TODO replace custom RPCs future callbacks with NetconfRpcFutureCallback
 public class WriteCandidateTx extends AbstractWriteTx {
 
     private static final Logger LOG  = LoggerFactory.getLogger(WriteCandidateTx.class);
@@ -90,7 +88,7 @@ public class WriteCandidateTx extends AbstractWriteTx {
             public void onSuccess(DOMRpcResult result) {
                 if (isSuccess(result)) {
                     if (LOG.isTraceEnabled()) {
-                        LOG.trace("Lock candidate succesfull");
+                        LOG.trace("Lock candidate successful");
                     }
                 } else {
                     LOG.warn("{}: lock candidate invoked unsuccessfully: {}", id, result.getErrors());
@@ -100,10 +98,7 @@ public class WriteCandidateTx extends AbstractWriteTx {
             @Override
             public void onFailure(Throwable t) {
                 LOG.warn("Lock candidate operation failed. {}", t);
-                NetconfDocumentedException e = new NetconfDocumentedException(id + ": Lock candidate operation failed.", NetconfDocumentedException.ErrorType.application,
-                        NetconfDocumentedException.ErrorTag.operation_failed, NetconfDocumentedException.ErrorSeverity.warning);
                 discardChanges();
-                throw new RuntimeException(e);
             }
         };
         resultsFutures.add(netOps.lockCandidate(lockCandidateCallback));
@@ -172,23 +167,9 @@ public class WriteCandidateTx extends AbstractWriteTx {
                               final DataContainerChild<?, ?> editStructure,
                               final Optional<ModifyAction> defaultOperation,
                               final String operation) {
-        FutureCallback<DOMRpcResult> editConfigCallback = new FutureCallback<DOMRpcResult>() {
-            @Override
-            public void onSuccess(DOMRpcResult result) {
-                if (isSuccess(result)) {
-                    if (LOG.isTraceEnabled()) {
-                        LOG.trace("Edit candidate succesfull");
-                    }
-                } else {
-                    LOG.warn("{}: Edit candidate invoked unsuccessfully: {}", id, result.getErrors());
-                }
-            }
 
-            @Override
-            public void onFailure(Throwable t) {
-                LOG.warn("Edit candidate operation failed. {}", t);
-            }
-        };
+        NetconfRpcFutureCallback editConfigCallback = new NetconfRpcFutureCallback("Edit candidate", id);
+
         if (defaultOperation.isPresent()) {
             resultsFutures.add(netOps.editConfigCandidate(
                     editConfigCallback, editStructure, defaultOperation.get(), rollbackSupport));
index c249bf7c4ad63c819c6a9b4dbddf79cd7222cea5..4716437ca49e80e27225929c6263a2f12c601570 100644 (file)
@@ -11,12 +11,10 @@ package org.opendaylight.netconf.sal.connect.netconf.sal.tx;
 import com.google.common.base.Function;
 import com.google.common.base.Optional;
 import com.google.common.util.concurrent.CheckedFuture;
-import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import org.opendaylight.controller.md.sal.common.api.TransactionStatus;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult;
 import org.opendaylight.netconf.sal.connect.netconf.util.NetconfBaseOps;
 import org.opendaylight.netconf.sal.connect.netconf.util.NetconfRpcFutureCallback;
 import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId;
@@ -45,7 +43,6 @@ import org.slf4j.LoggerFactory;
  *   <li>Unlock running datastore on tx commit</li>
  * </ol>
  */
-//TODO replace custom RPCs future callbacks with NetconfRpcFutureCallback
 public class WriteRunningTx extends AbstractWriteTx {
 
     private static final Logger LOG  = LoggerFactory.getLogger(WriteRunningTx.class);
@@ -61,24 +58,7 @@ public class WriteRunningTx extends AbstractWriteTx {
     }
 
     private void lock() {
-        final FutureCallback<DOMRpcResult> lockCallback = new FutureCallback<DOMRpcResult>() {
-            @Override
-            public void onSuccess(DOMRpcResult result) {
-                if (isSuccess(result)) {
-                    if (LOG.isTraceEnabled()) {
-                        LOG.trace("Lock running succesfull");
-                    }
-                } else {
-                    LOG.warn("{}: lock running invoked unsuccessfully: {}", id, result.getErrors());
-                }
-            }
-
-            @Override
-            public void onFailure(Throwable t) {
-                LOG.warn("{}: Lock running operation failed. {}", id, t);
-            }
-        };
-        resultsFutures.add(netOps.lockRunning(lockCallback));
+        resultsFutures.add(netOps.lockRunning(new NetconfRpcFutureCallback("Lock running", id)));
     }
 
     @Override
@@ -116,23 +96,9 @@ public class WriteRunningTx extends AbstractWriteTx {
                               final DataContainerChild<?, ?> editStructure,
                               final Optional<ModifyAction> defaultOperation,
                               final String operation) {
-        FutureCallback<DOMRpcResult> editConfigCallback = new FutureCallback<DOMRpcResult>() {
-            @Override
-            public void onSuccess(DOMRpcResult result) {
-                if (isSuccess(result)) {
-                    if (LOG.isTraceEnabled()) {
-                        LOG.trace("Edit running succesfull");
-                    }
-                } else {
-                    LOG.warn("{}: Edit running invoked unsuccessfully: {}", id, result.getErrors());
-                }
-            }
 
-            @Override
-            public void onFailure(Throwable t) {
-                LOG.warn("{}: Error {} data to (running){}, data: {}", id, operation, path, data.orNull(), t);
-            }
-        };
+        NetconfRpcFutureCallback editConfigCallback = new NetconfRpcFutureCallback("Edit running", id);
+
         if (defaultOperation.isPresent()) {
             resultsFutures.add(
                     netOps.editConfigRunning(editConfigCallback, editStructure, defaultOperation.get(), rollbackSupport));