Add ForwardingTransaction 16/76616/3
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 3 Oct 2018 17:03:27 +0000 (19:03 +0200)
committerTom Pantelis <tompantelis@gmail.com>
Thu, 4 Oct 2018 00:11:51 +0000 (00:11 +0000)
This is an aspect shared by all three flavors of forwarding
transaction, hence we can factor the code out into a common
subclass for reuse.

Change-Id: I2837d20084f54350337a111a0808dbaa2391145e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
binding/mdsal-binding-spi/src/main/java/org/opendaylight/mdsal/binding/spi/ForwardingReadTransaction.java
binding/mdsal-binding-spi/src/main/java/org/opendaylight/mdsal/binding/spi/ForwardingReadWriteTransaction.java
binding/mdsal-binding-spi/src/main/java/org/opendaylight/mdsal/binding/spi/ForwardingTransaction.java [new file with mode: 0644]
binding/mdsal-binding-spi/src/main/java/org/opendaylight/mdsal/binding/spi/ForwardingWriteTransaction.java

index 88dcd418403474f5c7a074e1ddee1ac8f7009f08..9d6892c4327a06b4c22375241e1b2ba67a6d94ce 100644 (file)
@@ -7,7 +7,8 @@
  */
 package org.opendaylight.mdsal.binding.spi;
 
-import com.google.common.collect.ForwardingObject;
+import static java.util.Objects.requireNonNull;
+
 import com.google.common.util.concurrent.FluentFuture;
 import java.util.Optional;
 import org.opendaylight.mdsal.binding.api.ReadTransaction;
@@ -16,15 +17,13 @@ import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 /**
- * Utility {@link ReadTransaction} implementation which forwards all interface method
- * invocation to a delegate instance.
+ * Utility {@link ReadTransaction} implementation which forwards all interface method invocation to a delegate instance.
  */
-public class ForwardingReadTransaction extends ForwardingObject implements ReadTransaction {
-
+public class ForwardingReadTransaction extends ForwardingTransaction implements ReadTransaction {
     private final ReadTransaction delegate;
 
-    protected ForwardingReadTransaction(ReadTransaction delegate) {
-        this.delegate = delegate;
+    public ForwardingReadTransaction(final ReadTransaction delegate) {
+        this.delegate = requireNonNull(delegate);
     }
 
     @Override
@@ -33,16 +32,11 @@ public class ForwardingReadTransaction extends ForwardingObject implements ReadT
     }
 
     @Override
-    public <T extends DataObject> FluentFuture<Optional<T>> read(LogicalDatastoreType store,
-            InstanceIdentifier<T> path) {
+    public <T extends DataObject> FluentFuture<Optional<T>> read(final LogicalDatastoreType store,
+            final InstanceIdentifier<T> path) {
         return delegate.read(store, path);
     }
 
-    @Override
-    public Object getIdentifier() {
-        return delegate.getIdentifier();
-    }
-
     @Override
     public void close() {
         delegate.close();
index e78e3a7b495c9a8e643722bf32faa57825a83639..3336299d9b14b5b846fdc850aedd86bef7f3c714 100644 (file)
@@ -7,7 +7,8 @@
  */
 package org.opendaylight.mdsal.binding.spi;
 
-import com.google.common.collect.ForwardingObject;
+import static java.util.Objects.requireNonNull;
+
 import com.google.common.util.concurrent.FluentFuture;
 import java.util.Optional;
 import org.opendaylight.mdsal.binding.api.ReadWriteTransaction;
@@ -17,14 +18,14 @@ import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 /**
- * Utility {@link ReadWriteTransaction} implementation which forwards all interface method
- * invocation to a delegate instance.
+ * Utility {@link ReadWriteTransaction} implementation which forwards all interface method invocation to a delegate
+ * instance.
  */
-public class ForwardingReadWriteTransaction extends ForwardingObject implements ReadWriteTransaction {
+public class ForwardingReadWriteTransaction extends ForwardingTransaction implements ReadWriteTransaction {
     private final ReadWriteTransaction delegate;
 
     public ForwardingReadWriteTransaction(final ReadWriteTransaction delegate) {
-        this.delegate = delegate;
+        this.delegate = requireNonNull(delegate);
     }
 
     @Override
@@ -50,11 +51,6 @@ public class ForwardingReadWriteTransaction extends ForwardingObject implements
         return delegate.read(store, path);
     }
 
-    @Override
-    public Object getIdentifier() {
-        return delegate.getIdentifier();
-    }
-
     @Override
     public boolean cancel() {
         return delegate.cancel();
diff --git a/binding/mdsal-binding-spi/src/main/java/org/opendaylight/mdsal/binding/spi/ForwardingTransaction.java b/binding/mdsal-binding-spi/src/main/java/org/opendaylight/mdsal/binding/spi/ForwardingTransaction.java
new file mode 100644 (file)
index 0000000..c9bcf8b
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2018 Pantheon Technologies, s.r.o. 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.mdsal.binding.spi;
+
+import com.google.common.collect.ForwardingObject;
+import org.opendaylight.mdsal.binding.api.Transaction;
+
+/**
+ * Specialization of {@link ForwardingObject} for a {@link Transaction}.
+ */
+public abstract class ForwardingTransaction extends ForwardingObject implements Transaction {
+    @Override
+    protected abstract Transaction delegate();
+
+    @Override
+    public Object getIdentifier() {
+        return delegate().getIdentifier();
+    }
+}
index 6e29fa152faba927a4e8caec8e0757213c0c1ada..01d5b39b937942145203ebabd968945f797cb6cb 100644 (file)
@@ -7,7 +7,8 @@
  */
 package org.opendaylight.mdsal.binding.spi;
 
-import com.google.common.collect.ForwardingObject;
+import static java.util.Objects.requireNonNull;
+
 import com.google.common.util.concurrent.FluentFuture;
 import org.opendaylight.mdsal.binding.api.WriteTransaction;
 import org.opendaylight.mdsal.common.api.CommitInfo;
@@ -19,12 +20,11 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
  * Utility {@link WriteTransaction} implementation which forwards all interface method
  * invocation to a delegate instance.
  */
-public class ForwardingWriteTransaction extends ForwardingObject implements WriteTransaction {
-
+public class ForwardingWriteTransaction extends ForwardingTransaction implements WriteTransaction {
     private final WriteTransaction delegate;
 
-    protected ForwardingWriteTransaction(WriteTransaction delegate) {
-        this.delegate = delegate;
+    public ForwardingWriteTransaction(final WriteTransaction delegate) {
+        this.delegate = requireNonNull(delegate);
     }
 
     @Override
@@ -33,29 +33,31 @@ public class ForwardingWriteTransaction extends ForwardingObject implements Writ
     }
 
     @Override
-    public <T extends DataObject> void put(LogicalDatastoreType store, InstanceIdentifier<T> path, T data) {
+    public <T extends DataObject> void put(final LogicalDatastoreType store, final InstanceIdentifier<T> path,
+            final T data) {
         delegate.put(store, path, data);
     }
 
     @Override
-    public <T extends DataObject> void put(LogicalDatastoreType store, InstanceIdentifier<T> path, T data,
-            boolean createMissingParents) {
+    public <T extends DataObject> void put(final LogicalDatastoreType store, final InstanceIdentifier<T> path,
+            final T data, final boolean createMissingParents) {
         delegate.put(store, path, data, createMissingParents);
     }
 
     @Override
-    public <T extends DataObject> void merge(LogicalDatastoreType store, InstanceIdentifier<T> path, T data) {
+    public <T extends DataObject> void merge(final LogicalDatastoreType store, final InstanceIdentifier<T> path,
+            final T data) {
         delegate.merge(store, path, data);
     }
 
     @Override
-    public <T extends DataObject> void merge(LogicalDatastoreType store, InstanceIdentifier<T> path, T data,
-            boolean createMissingParents) {
+    public <T extends DataObject> void merge(final LogicalDatastoreType store, final InstanceIdentifier<T> path,
+            final T data, final boolean createMissingParents) {
         delegate.merge(store, path, data, createMissingParents);
     }
 
     @Override
-    public void delete(LogicalDatastoreType store, InstanceIdentifier<?> path) {
+    public void delete(final LogicalDatastoreType store, final InstanceIdentifier<?> path) {
         delegate.delete(store, path);
     }
 
@@ -68,9 +70,4 @@ public class ForwardingWriteTransaction extends ForwardingObject implements Writ
     public FluentFuture<? extends CommitInfo> commit() {
         return delegate.commit();
     }
-
-    @Override
-    public Object getIdentifier() {
-        return delegate.getIdentifier();
-    }
 }