Make new Genius' listeners testable
authorDavid Suarez <david.suarez.fuentes@gmail.com>
Sat, 21 Apr 2018 08:17:44 +0000 (10:17 +0200)
committerMichael Vorburger <vorburger@redhat.com>
Thu, 26 Apr 2018 14:34:52 +0000 (14:34 +0000)
Make new Genius' listeners testable old ones by implementing the
ChainableDataTreeChangeListener interface.

Change-Id: Ia321ad95956eba717afb3de56c4ef4afb14e771a
Signed-off-by: David Suarez <david.suarez.fuentes@gmail.com>
api/src/main/java/org/opendaylight/genius/tools/mdsal/listener/AbstractDataTreeChangeListener.java

index 1f088a8bb26434004fe7e5df28c36150a3b6f0e3..a4470b4ea956412d81364d06a9d9db59509c81b7 100644 (file)
@@ -29,11 +29,12 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
  * @author David Suárez (david.suarez.fuentes@gmail.com)
  */
 abstract class AbstractDataTreeChangeListener<T extends DataObject> implements DataTreeChangeListener<T>,
-        DataTreeChangeListenerActions<T>, AutoCloseable {
+        DataTreeChangeListenerActions<T>, ChainableDataTreeChangeListener<T>, AutoCloseable {
 
     private final DataBroker dataBroker;
     private final DataTreeIdentifier<T> dataTreeIdentifier;
     private ListenerRegistration<AbstractDataTreeChangeListener<T>> dataChangeListenerRegistration;
+    private final ChainableDataTreeChangeListenerImpl<T> chainingDelegate = new ChainableDataTreeChangeListenerImpl<>();
     private DataStoreMetrics dataStoreMetrics;
 
     AbstractDataTreeChangeListener(DataBroker dataBroker, DataTreeIdentifier<T> dataTreeIdentifier) {
@@ -54,6 +55,16 @@ abstract class AbstractDataTreeChangeListener<T extends DataObject> implements D
         this.dataStoreMetrics = new DataStoreMetrics(metricProvider, getClass());
     }
 
+    @Override
+    public void addBeforeListener(DataTreeChangeListener<T> listener) {
+        chainingDelegate.addBeforeListener(listener);
+    }
+
+    @Override
+    public void addAfterListener(DataTreeChangeListener<T> listener) {
+        chainingDelegate.addAfterListener(listener);
+    }
+
     @PostConstruct
     public void register() {
         this.dataChangeListenerRegistration = dataBroker.registerDataTreeChangeListener(dataTreeIdentifier, this);