Refactor SbRestAbstractDataListener 25/63425/4
authorTom Pantelis <[email protected]>
Thu, 21 Sep 2017 22:22:26 +0000 (18:22 -0400)
committerBrady Johnson <[email protected]>
Tue, 26 Sep 2017 16:43:35 +0000 (16:43 +0000)
Refactored SbRestAbstractDataListener and derived classes to pass
parameters into the ctor instead of via setters. This makes it cleaner
so class fields can be final and avoids null checks elsewhere.

Change-Id: I86cde8471ddb3e3b193520191cef72e02a20056d
Signed-off-by: Tom Pantelis <[email protected]>
sfc-sb-rest/src/main/java/org/opendaylight/sfc/sbrest/provider/listener/SbRestAbstractDataListener.java
sfc-sb-rest/src/main/java/org/opendaylight/sfc/sbrest/provider/listener/SbRestAclEntryDataListener.java
sfc-sb-rest/src/main/java/org/opendaylight/sfc/sbrest/provider/listener/SbRestRspEntryDataListener.java
sfc-sb-rest/src/main/java/org/opendaylight/sfc/sbrest/provider/listener/SbRestScfEntryDataListener.java
sfc-sb-rest/src/main/java/org/opendaylight/sfc/sbrest/provider/listener/SbRestSfEntryDataListener.java
sfc-sb-rest/src/main/java/org/opendaylight/sfc/sbrest/provider/listener/SbRestSffEntryDataListener.java
sfc-sb-rest/src/main/java/org/opendaylight/sfc/sbrest/provider/listener/SbRestSfgEntryDataListener.java
sfc-sb-rest/src/main/java/org/opendaylight/sfc/sbrest/provider/listener/SbRestSfstEntryDataListener.java
sfc-sb-rest/src/main/java/org/opendaylight/sfc/sbrest/provider/listener/SbRestSfstateEntryDataListener.java
sfc-sb-rest/src/main/resources/org/opendaylight/blueprint/sfc-sb-rest.xml

index 7b29c1769a6af4aaff65a3694114d71f753c31a3..2346542344fe922dd6309c6ca971826089fdcd9c 100755 (executable)
@@ -15,41 +15,25 @@ import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
-public abstract class SbRestAbstractDataListener<T extends DataObject> implements DataTreeChangeListener<T> {
-    private DataBroker dataBroker;
-    private InstanceIdentifier<T> instanceIdentifier;
-    private ListenerRegistration<SbRestAbstractDataListener<T>> dataChangeListenerRegistration;
-    private LogicalDatastoreType dataStoreType;
+public abstract class SbRestAbstractDataListener<T extends DataObject> implements DataTreeChangeListener<T>,
+        AutoCloseable {
+    private final DataBroker dataBroker;
+    private final ListenerRegistration<SbRestAbstractDataListener<T>> dataChangeListenerRegistration;
 
-    public SbRestAbstractDataListener() {
-        this.dataStoreType = LogicalDatastoreType.CONFIGURATION;
-    }
-
-    public DataBroker getDataBroker() {
-        return dataBroker;
-    }
-
-    public void setDataBroker(DataBroker dataBroker) {
+    protected SbRestAbstractDataListener(DataBroker dataBroker, InstanceIdentifier<T> instanceIdentifier,
+            LogicalDatastoreType dataStoreType) {
         this.dataBroker = dataBroker;
-    }
 
-    public void setDataStoreType(LogicalDatastoreType dataStoreType) {
-        this.dataStoreType = dataStoreType;
-    }
-
-    public void setInstanceIdentifier(InstanceIdentifier<T> instanceIdentifier) {
-        this.instanceIdentifier = instanceIdentifier;
-    }
-
-    public void registerAsDataChangeListener() {
-        assert dataBroker != null;
         dataChangeListenerRegistration = dataBroker.registerDataTreeChangeListener(new DataTreeIdentifier<>(
                 dataStoreType, instanceIdentifier), this);
     }
 
-    public void closeDataChangeListener() {
-        if (dataChangeListenerRegistration != null) {
-            dataChangeListenerRegistration.close();
-        }
+    public DataBroker getDataBroker() {
+        return dataBroker;
+    }
+
+    @Override
+    public void close() {
+        dataChangeListenerRegistration.close();
     }
 }
index 0b78eab7b34ee5b0239d1a1c6e00ceaca5eb0b1d..4f337ddc48b595a9ed21e5992b31de03e38d3056 100644 (file)
@@ -16,6 +16,7 @@ import java.util.concurrent.Executors;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
 import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.sfc.provider.api.SfcInstanceIdentifiers;
 import org.opendaylight.sfc.sbrest.provider.task.RestOperation;
 import org.opendaylight.sfc.sbrest.provider.task.SbRestAclTask;
@@ -27,13 +28,8 @@ public class SbRestAclEntryDataListener extends SbRestAbstractDataListener<Acl>
     private static final Logger LOG = LoggerFactory.getLogger(SbRestAclEntryDataListener.class);
     private final ExecutorService executor = Executors.newFixedThreadPool(10);
 
-    public SbRestAclEntryDataListener() {
-        setInstanceIdentifier(SfcInstanceIdentifiers.ACL_ENTRY_IID);
-    }
-
-    public void setDataProvider(DataBroker dataBroker) {
-        setDataBroker(dataBroker);
-        registerAsDataChangeListener();
+    public SbRestAclEntryDataListener(DataBroker dataBroker) {
+        super(dataBroker, SfcInstanceIdentifiers.ACL_ENTRY_IID, LogicalDatastoreType.CONFIGURATION);
     }
 
     @Override
index 2a8bd589d26545eb20d57310380a7a1ee1894b70..6ac5b06c039625af4934977d1601c3c736d401be 100755 (executable)
@@ -28,14 +28,8 @@ public class SbRestRspEntryDataListener extends SbRestAbstractDataListener<Rende
     private static final Logger LOG = LoggerFactory.getLogger(SbRestRspEntryDataListener.class);
     private final ExecutorService executor = Executors.newFixedThreadPool(5);
 
-    public SbRestRspEntryDataListener() {
-        setInstanceIdentifier(SfcInstanceIdentifiers.RSP_ENTRY_IID);
-        setDataStoreType(LogicalDatastoreType.OPERATIONAL);
-    }
-
-    public void setDataProvider(DataBroker dataBroker) {
-        setDataBroker(dataBroker);
-        registerAsDataChangeListener();
+    public SbRestRspEntryDataListener(DataBroker dataBroker) {
+        super(dataBroker, SfcInstanceIdentifiers.RSP_ENTRY_IID, LogicalDatastoreType.OPERATIONAL);
     }
 
     @Override
index 04d425b2d494b4c19b59e31eb30d29b4c2cac024..f15dbb502f7bf99a92025bab126fb0815ca0bbc4 100644 (file)
@@ -16,6 +16,7 @@ import java.util.concurrent.Executors;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
 import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.sfc.provider.api.SfcInstanceIdentifiers;
 import org.opendaylight.sfc.provider.api.SfcProviderAclAPI;
 import org.opendaylight.sfc.sbrest.provider.task.RestOperation;
@@ -29,13 +30,8 @@ public class SbRestScfEntryDataListener extends SbRestAbstractDataListener<Servi
     private static final Logger LOG = LoggerFactory.getLogger(SbRestScfEntryDataListener.class);
     private final ExecutorService executor = Executors.newFixedThreadPool(5);
 
-    public SbRestScfEntryDataListener() {
-        setInstanceIdentifier(SfcInstanceIdentifiers.SCF_ENTRY_IID);
-    }
-
-    public void setDataProvider(DataBroker dataBroker) {
-        setDataBroker(dataBroker);
-        registerAsDataChangeListener();
+    public SbRestScfEntryDataListener(DataBroker dataBroker) {
+        super(dataBroker, SfcInstanceIdentifiers.SCF_ENTRY_IID, LogicalDatastoreType.CONFIGURATION);
     }
 
     @Override
index 6e3b4b7f1389bc853aca28192ca3da42f1762869..adb033000a31bb2e5180f5e5a883d1407c67bebb 100755 (executable)
@@ -16,6 +16,7 @@ import java.util.concurrent.Executors;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
 import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.sfc.provider.api.SfcInstanceIdentifiers;
 import org.opendaylight.sfc.sbrest.provider.task.RestOperation;
 import org.opendaylight.sfc.sbrest.provider.task.SbRestSfTask;
@@ -27,13 +28,8 @@ public class SbRestSfEntryDataListener extends SbRestAbstractDataListener<Servic
     private static final Logger LOG = LoggerFactory.getLogger(SbRestSfEntryDataListener.class);
     private final ExecutorService executor = Executors.newFixedThreadPool(5);
 
-    public SbRestSfEntryDataListener() {
-        setInstanceIdentifier(SfcInstanceIdentifiers.SF_ENTRY_IID);
-    }
-
-    public void setDataProvider(DataBroker dataBroker) {
-        setDataBroker(dataBroker);
-        registerAsDataChangeListener();
+    public SbRestSfEntryDataListener(DataBroker dataBroker) {
+        super(dataBroker, SfcInstanceIdentifiers.SF_ENTRY_IID, LogicalDatastoreType.CONFIGURATION);
     }
 
     @Override
index c2fbb6b39bc592eae0bd360124358c56e59c59bf..c6df351b27df1f66e89f51c579311ec930e07ebb 100755 (executable)
@@ -16,6 +16,7 @@ import java.util.concurrent.Executors;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
 import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.sfc.provider.api.SfcInstanceIdentifiers;
 import org.opendaylight.sfc.sbrest.provider.task.RestOperation;
 import org.opendaylight.sfc.sbrest.provider.task.SbRestSffTask;
@@ -27,13 +28,8 @@ public class SbRestSffEntryDataListener extends SbRestAbstractDataListener<Servi
     private static final Logger LOG = LoggerFactory.getLogger(SbRestSffEntryDataListener.class);
     private final ExecutorService executor = Executors.newFixedThreadPool(5);
 
-    public SbRestSffEntryDataListener() {
-        setInstanceIdentifier(SfcInstanceIdentifiers.SFF_ENTRY_IID);
-    }
-
-    public void setDataProvider(DataBroker dataBroker) {
-        setDataBroker(dataBroker);
-        registerAsDataChangeListener();
+    public SbRestSffEntryDataListener(DataBroker dataBroker) {
+        super(dataBroker, SfcInstanceIdentifiers.SFF_ENTRY_IID, LogicalDatastoreType.CONFIGURATION);
     }
 
     @Override
index 921a1ea541f8d68068c5d76771753e07154b4b46..695e47281c60a1d15f71a1c9cc1f5cec470f1201 100644 (file)
@@ -16,6 +16,7 @@ import java.util.concurrent.Executors;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
 import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.sfc.provider.api.SfcInstanceIdentifiers;
 import org.opendaylight.sfc.sbrest.provider.task.RestOperation;
 import org.opendaylight.sfc.sbrest.provider.task.SbRestSfgTask;
@@ -27,13 +28,8 @@ public class SbRestSfgEntryDataListener extends SbRestAbstractDataListener<Servi
     private static final Logger LOG = LoggerFactory.getLogger(SbRestSfgEntryDataListener.class);
     private final ExecutorService executor = Executors.newFixedThreadPool(5);
 
-    public SbRestSfgEntryDataListener() {
-        setInstanceIdentifier(SfcInstanceIdentifiers.SFG_ENTRY_IID);
-    }
-
-    public void setDataProvider(DataBroker dataBroker) {
-        setDataBroker(dataBroker);
-        registerAsDataChangeListener();
+    public SbRestSfgEntryDataListener(DataBroker dataBroker) {
+        super(dataBroker, SfcInstanceIdentifiers.SFG_ENTRY_IID, LogicalDatastoreType.CONFIGURATION);
     }
 
     @Override
index 650f25cc03e58a47b8abd0866d603185143989ba..3fa75eda048f31ad4f3d0d674e55bdbd43419dea 100644 (file)
@@ -16,6 +16,7 @@ import java.util.concurrent.Executors;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
 import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.sfc.provider.api.SfcInstanceIdentifiers;
 import org.opendaylight.sfc.sbrest.provider.task.RestOperation;
 import org.opendaylight.sfc.sbrest.provider.task.SbRestSfstTask;
@@ -27,13 +28,8 @@ public class SbRestSfstEntryDataListener extends SbRestAbstractDataListener<Serv
     private static final Logger LOG = LoggerFactory.getLogger(SbRestSfstEntryDataListener.class);
     private final ExecutorService executor = Executors.newFixedThreadPool(5);
 
-    public SbRestSfstEntryDataListener() {
-        setInstanceIdentifier(SfcInstanceIdentifiers.SFST_ENTRY_IID);
-    }
-
-    public void setDataProvider(DataBroker dataBroker) {
-        setDataBroker(dataBroker);
-        registerAsDataChangeListener();
+    public SbRestSfstEntryDataListener(DataBroker dataBroker) {
+        super(dataBroker, SfcInstanceIdentifiers.SFST_ENTRY_IID, LogicalDatastoreType.CONFIGURATION);
     }
 
     @Override
index b398ccfca6ef46d2ed2afc9fc0a4aca58925e4d9..3f5764c78146fc8395ff77d9df56c8346d151771 100644 (file)
@@ -16,6 +16,7 @@ import java.util.concurrent.Executors;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
 import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.sfc.provider.api.SfcInstanceIdentifiers;
 import org.opendaylight.sfc.sbrest.provider.task.RestOperation;
 import org.opendaylight.sfc.sbrest.provider.task.SbRestSfstateTask;
@@ -27,13 +28,8 @@ public class SbRestSfstateEntryDataListener extends SbRestAbstractDataListener<S
     private static final Logger LOG = LoggerFactory.getLogger(SbRestSfstateEntryDataListener.class);
     private final ExecutorService executor = Executors.newFixedThreadPool(5);
 
-    public SbRestSfstateEntryDataListener() {
-        setInstanceIdentifier(SfcInstanceIdentifiers.SFSTATE_ENTRY_IID);
-    }
-
-    public void setDataProvider(DataBroker dataBroker) {
-        setDataBroker(dataBroker);
-        registerAsDataChangeListener();
+    public SbRestSfstateEntryDataListener(DataBroker dataBroker) {
+        super(dataBroker, SfcInstanceIdentifiers.SFSTATE_ENTRY_IID, LogicalDatastoreType.CONFIGURATION);
     }
 
     @Override
index 05b8627c4904ee27c56ecced4915517a9a9963f5..e93b2fcdc706ea7d9927ad03e809a20acacb0706 100644 (file)
@@ -9,50 +9,50 @@
 
   <bean id="sbRestSfEntryDataListener"
     class="org.opendaylight.sfc.sbrest.provider.listener.SbRestSfEntryDataListener"
-    destroy-method="closeDataChangeListener">
-    <property name="dataProvider" ref="dataBroker"/>
+    destroy-method="close">
+    <argument ref="dataBroker"/>
   </bean>
 
   <bean id="sbRestSfgEntryDataListener"
     class="org.opendaylight.sfc.sbrest.provider.listener.SbRestSfgEntryDataListener"
-    destroy-method="closeDataChangeListener">
-    <property name="dataProvider" ref="dataBroker"/>
+    destroy-method="close">
+    <argument ref="dataBroker"/>
   </bean>
 
   <bean id="sbRestSffEntryDataListener"
     class="org.opendaylight.sfc.sbrest.provider.listener.SbRestSffEntryDataListener"
-    destroy-method="closeDataChangeListener">
-    <property name="dataProvider" ref="dataBroker"/>
+    destroy-method="close">
+    <argument ref="dataBroker"/>
   </bean>
 
   <bean id="sbRestRspEntryDataListener"
     class="org.opendaylight.sfc.sbrest.provider.listener.SbRestRspEntryDataListener"
-    destroy-method="closeDataChangeListener">
-    <property name="dataProvider" ref="dataBroker"/>
+    destroy-method="close">
+    <argument ref="dataBroker"/>
   </bean>
 
   <bean id="sbRestAclEntryDataListener"
     class="org.opendaylight.sfc.sbrest.provider.listener.SbRestAclEntryDataListener"
-    destroy-method="closeDataChangeListener">
-    <property name="dataProvider" ref="dataBroker"/>
+    destroy-method="close">
+    <argument ref="dataBroker"/>
   </bean>
 
   <bean id="sbRestScfEntryDataListener"
     class="org.opendaylight.sfc.sbrest.provider.listener.SbRestScfEntryDataListener"
-    destroy-method="closeDataChangeListener">
-    <property name="dataProvider" ref="dataBroker"/>
+    destroy-method="close">
+    <argument ref="dataBroker"/>
   </bean>
 
   <bean id="sbRestSfstEntryDataListener"
     class="org.opendaylight.sfc.sbrest.provider.listener.SbRestSfstEntryDataListener"
-    destroy-method="closeDataChangeListener">
-    <property name="dataProvider" ref="dataBroker"/>
+    destroy-method="close">
+    <argument ref="dataBroker"/>
   </bean>
 
   <bean id="sbRestSfstateEntryDataListener"
     class="org.opendaylight.sfc.sbrest.provider.listener.SbRestSfstateEntryDataListener"
-    destroy-method="closeDataChangeListener">
-    <property name="dataProvider" ref="dataBroker"/>
+    destroy-method="close">
+    <argument ref="dataBroker"/>
   </bean>
 
   <bean id="sfcSbRestProviderModule"