Eliminate NormalizedNodeFactory 88/107088/2
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 26 Jul 2023 16:09:18 +0000 (18:09 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 26 Jul 2023 21:15:19 +0000 (23:15 +0200)
The only user is ReadDataTransactionUtil, which can easily perform the
same function, without the need to go through
FutureCallbackTx.addCallback().

Change-Id: Ie2bb31b45565d2225933bc0026a765b8c2851763
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/FutureCallbackTx.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/FutureDataFactory.java
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/NormalizedNodeFactory.java [deleted file]
restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/ReadDataTransactionUtil.java

index 548c9be4f5c8265f03ac8212d21781e4a9cde276..94e7e55fcb02f627e34cc94ea5d6c477aaf55704 100644 (file)
@@ -49,9 +49,7 @@ final class FutureCallbackTx {
             final FutureDataFactory<? super T> dataFactory, final YangInstanceIdentifier path)
                 throws RestconfDocumentedException {
         try {
-            final T result = listenableFuture.get();
-            dataFactory.setResult(result);
-            LOG.trace("Transaction({}) SUCCESSFUL", txType);
+            listenableFuture.get();
         } catch (InterruptedException e) {
             dataFactory.setFailureStatus();
             LOG.warn("Transaction({}) FAILED!", txType, e);
@@ -89,5 +87,7 @@ final class FutureCallbackTx {
                 throw new RestconfDocumentedException("Transaction failed", e);
             }
         }
+
+        LOG.trace("Transaction({}) SUCCESSFUL", txType);
     }
 }
index a64b7cce3450edb96ccb0abc1da93780fa09b9f5..028fdff1eb7fd55f8b032ccbd95b2355482dbb54 100644 (file)
@@ -8,14 +8,8 @@
 package org.opendaylight.restconf.nb.rfc8040.rests.utils;
 
 class FutureDataFactory<T> {
-
-    protected T result = null;
     private boolean statusFail = false;
 
-    void setResult(final T result) {
-        this.result = result;
-    }
-
     void setFailureStatus() {
         statusFail = true;
     }
diff --git a/restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/NormalizedNodeFactory.java b/restconf/restconf-nb/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/NormalizedNodeFactory.java
deleted file mode 100644 (file)
index 71dca3e..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.restconf.nb.rfc8040.rests.utils;
-
-import java.util.Optional;
-import org.eclipse.jdt.annotation.Nullable;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-
-final class NormalizedNodeFactory extends FutureDataFactory<Optional<NormalizedNode>> {
-    @Nullable NormalizedNode build() {
-        return result.orElse(null);
-    }
-}
index 29120b5cf48c61ab75d244b0f4c91b7d764d0ae6..66aa977c2c9d95f3690c713dd92936add3359026 100644 (file)
@@ -13,6 +13,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.NoSuchElementException;
 import java.util.Optional;
+import java.util.concurrent.ExecutionException;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 import org.eclipse.jdt.annotation.NonNull;
@@ -291,7 +292,7 @@ public final class ReadDataTransactionUtil {
      */
     static @Nullable NormalizedNode readDataViaTransaction(final @NonNull RestconfStrategy strategy,
             final LogicalDatastoreType store, final YangInstanceIdentifier path) {
-        return extractReadData(strategy, path, strategy.read(store, path));
+        return extractReadData(path, strategy.read(store, path));
     }
 
     /**
@@ -309,14 +310,19 @@ public final class ReadDataTransactionUtil {
     private static @Nullable NormalizedNode readDataViaTransaction(final @NonNull RestconfStrategy strategy,
             final @NonNull LogicalDatastoreType store, final @NonNull YangInstanceIdentifier path,
             final @NonNull List<YangInstanceIdentifier> fields) {
-        return extractReadData(strategy, path, strategy.read(store, path, fields));
+        return extractReadData(path, strategy.read(store, path, fields));
     }
 
-    private static NormalizedNode extractReadData(final RestconfStrategy strategy,
-            final YangInstanceIdentifier path, final ListenableFuture<Optional<NormalizedNode>> dataFuture) {
-        final var dataFactory = new NormalizedNodeFactory();
-        FutureCallbackTx.addCallback(dataFuture, "READ", dataFactory, path);
-        return dataFactory.build();
+    private static @Nullable NormalizedNode extractReadData(final YangInstanceIdentifier path,
+            final ListenableFuture<Optional<NormalizedNode>> dataFuture) {
+        try {
+            return dataFuture.get().orElse(null);
+        } catch (ExecutionException e) {
+            throw new RestconfDocumentedException("Failed to access " + path, e);
+        } catch (InterruptedException e) {
+            Thread.currentThread().interrupt();
+            throw new RestconfDocumentedException("Interrupted while accessing " + path, e);
+        }
     }
 
     /**