Remove DocumentedException.ErrorSeverity
[netconf.git] / netconf / sal-netconf-connector / src / main / java / org / opendaylight / netconf / sal / connect / netconf / sal / tx / AbstractWriteTx.java
index 06ffd70e92682d67daf237f4337600f3756c38a9..98fb17d8563f1156c3481e007df15ad7946ef3c7 100644 (file)
@@ -16,6 +16,7 @@ import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.MoreExecutors;
 import com.google.common.util.concurrent.SettableFuture;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
@@ -31,6 +32,7 @@ import org.opendaylight.netconf.api.ModifyAction;
 import org.opendaylight.netconf.api.NetconfDocumentedException;
 import org.opendaylight.netconf.sal.connect.netconf.util.NetconfBaseOps;
 import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId;
+import org.opendaylight.yangtools.yang.common.ErrorSeverity;
 import org.opendaylight.yangtools.yang.common.RpcError;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
@@ -48,7 +50,7 @@ public abstract class AbstractWriteTx implements DOMDataTreeWriteTransaction {
     protected final RemoteDeviceId id;
     protected final NetconfBaseOps netOps;
     protected final boolean rollbackSupport;
-    protected final List<ListenableFuture<DOMRpcResult>> resultsFutures = new ArrayList<>();
+    protected final List<ListenableFuture<? extends DOMRpcResult>> resultsFutures = new ArrayList<>();
     private final List<TxListener> listeners = new CopyOnWriteArrayList<>();
     // Allow commit to be called only once
     protected volatile boolean finished = false;
@@ -97,7 +99,7 @@ public abstract class AbstractWriteTx implements DOMDataTreeWriteTransaction {
 
     @Override
     public synchronized void put(final LogicalDatastoreType store, final YangInstanceIdentifier path,
-                                 final NormalizedNode<?, ?> data) {
+                                 final NormalizedNode data) {
         checkEditable(store);
 
         // Trying to write only mixin nodes (not visible when serialized).
@@ -107,14 +109,14 @@ public abstract class AbstractWriteTx implements DOMDataTreeWriteTransaction {
             return;
         }
 
-        final DataContainerChild<?, ?> editStructure = netOps.createEditConfigStrcture(Optional.ofNullable(data),
+        final DataContainerChild editStructure = netOps.createEditConfigStrcture(Optional.ofNullable(data),
                         Optional.of(ModifyAction.REPLACE), path);
         editConfig(path, Optional.ofNullable(data), editStructure, Optional.empty(), "put");
     }
 
     @Override
     public synchronized void merge(final LogicalDatastoreType store, final YangInstanceIdentifier path,
-                                   final NormalizedNode<?, ?> data) {
+                                   final NormalizedNode data) {
         checkEditable(store);
 
         // Trying to write only mixin nodes (not visible when serialized).
@@ -124,7 +126,7 @@ public abstract class AbstractWriteTx implements DOMDataTreeWriteTransaction {
             return;
         }
 
-        final DataContainerChild<?, ?> editStructure =  netOps.createEditConfigStrcture(Optional.ofNullable(data),
+        final DataContainerChild editStructure =  netOps.createEditConfigStrcture(Optional.ofNullable(data),
             Optional.empty(), path);
         editConfig(path, Optional.ofNullable(data), editStructure, Optional.empty(), "merge");
     }
@@ -132,8 +134,7 @@ public abstract class AbstractWriteTx implements DOMDataTreeWriteTransaction {
     /**
      * Check whether the data to be written consists only from mixins.
      */
-    private static boolean containsOnlyNonVisibleData(final YangInstanceIdentifier path,
-                                                      final NormalizedNode<?, ?> data) {
+    private static boolean containsOnlyNonVisibleData(final YangInstanceIdentifier path, final NormalizedNode data) {
         // There's only one such case:top level list (pathArguments == 1 && data is Mixin)
         // any other mixin nodes are contained by a "regular" node thus visible when serialized
         return path.getPathArguments().size() == 1 && data instanceof MixinNode;
@@ -142,7 +143,7 @@ public abstract class AbstractWriteTx implements DOMDataTreeWriteTransaction {
     @Override
     public synchronized void delete(final LogicalDatastoreType store, final YangInstanceIdentifier path) {
         checkEditable(store);
-        final DataContainerChild<?, ?> editStructure = netOps.createEditConfigStrcture(Optional.empty(),
+        final DataContainerChild editStructure = netOps.createEditConfigStrcture(Optional.empty(),
                         Optional.of(ModifyAction.DELETE), path);
         editConfig(path, Optional.empty(), editStructure, Optional.of(ModifyAction.NONE), "delete");
     }
@@ -208,8 +209,8 @@ public abstract class AbstractWriteTx implements DOMDataTreeWriteTransaction {
                 "Can edit only configuration data, not %s", store);
     }
 
-    protected abstract void editConfig(YangInstanceIdentifier path, Optional<NormalizedNode<?, ?>> data,
-                                       DataContainerChild<?, ?> editStructure,
+    protected abstract void editConfig(YangInstanceIdentifier path, Optional<NormalizedNode> data,
+                                       DataContainerChild editStructure,
                                        Optional<ModifyAction> defaultOperation, String operation);
 
     protected ListenableFuture<RpcResult<Void>> resultsToTxStatus() {
@@ -231,7 +232,7 @@ public abstract class AbstractWriteTx implements DOMDataTreeWriteTransaction {
                                 new Exception(throwable),
                                 DocumentedException.ErrorType.APPLICATION,
                                 DocumentedException.ErrorTag.OPERATION_FAILED,
-                                DocumentedException.ErrorSeverity.ERROR);
+                                ErrorSeverity.ERROR);
                 transformed.setException(exception);
             }
         }, MoreExecutors.directExecutor());
@@ -239,10 +240,12 @@ public abstract class AbstractWriteTx implements DOMDataTreeWriteTransaction {
         return transformed;
     }
 
+    @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD",
+            justification = "https://github.com/spotbugs/spotbugs/issues/811")
     private void extractResult(final List<DOMRpcResult> domRpcResults,
                                final SettableFuture<RpcResult<Void>> transformed) {
         DocumentedException.ErrorType errType = DocumentedException.ErrorType.APPLICATION;
-        DocumentedException.ErrorSeverity errSeverity = DocumentedException.ErrorSeverity.ERROR;
+        ErrorSeverity errSeverity = ErrorSeverity.ERROR;
         StringBuilder msgBuilder = new StringBuilder();
         boolean errorsEncouneterd = false;
         String errorTag = "operation-failed";
@@ -269,19 +272,10 @@ public abstract class AbstractWriteTx implements DOMDataTreeWriteTransaction {
                         errType = DocumentedException.ErrorType.APPLICATION;
                         break;
                 }
-                final RpcError.ErrorSeverity severity = error.getSeverity();
-                switch (severity) {
-                    case ERROR:
-                        errSeverity = DocumentedException.ErrorSeverity.ERROR;
-                        break;
-                    case WARNING:
-                        errSeverity = DocumentedException.ErrorSeverity.WARNING;
-                        break;
-                    default:
-                        errSeverity = DocumentedException.ErrorSeverity.ERROR;
-                        break;
-                }
+
+                errSeverity = error.getSeverity().toNetconf();
                 msgBuilder.append(error.getMessage());
+                msgBuilder.append(error.getInfo());
                 errorTag = error.getTag();
             }
         }