[SEBA-532] Removing dependencies on aaa, olt and dhcpl2realy from kafka

Change-Id: I3fc8dc497b71e6a4d88ad049f0b322a3830ea279
diff --git a/src/main/java/org/opencord/kafka/integrations/AccessDeviceKafkaIntegration.java b/src/main/java/org/opencord/kafka/integrations/AccessDeviceKafkaIntegration.java
index 7367660..da6b4a3 100644
--- a/src/main/java/org/opencord/kafka/integrations/AccessDeviceKafkaIntegration.java
+++ b/src/main/java/org/opencord/kafka/integrations/AccessDeviceKafkaIntegration.java
@@ -45,7 +45,9 @@
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected EventBusService eventBusService;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    @Reference(cardinality = ReferenceCardinality.OPTIONAL_UNARY,
+            bind = "bindAccessDeviceService",
+            unbind = "unbindAccessDeviceService")
     protected AccessDeviceService accessDeviceService;
 
     private final AccessDeviceListener listener = new InternalAccessDeviceListener();
@@ -63,15 +65,35 @@
     private static final String ACTIVATED = "activated";
     private static final String DISABLED = "disabled";
 
+    protected void bindAccessDeviceService(AccessDeviceService accessDeviceService) {
+        if (this.accessDeviceService == null) {
+            log.info("Binding AccessDeviceService");
+            this.accessDeviceService = accessDeviceService;
+            log.info("Adding listener on AccessDeviceService");
+            accessDeviceService.addListener(listener);
+        } else {
+            log.warn("Trying to bind AccessDeviceService but it is already bound");
+        }
+    }
+
+    protected void unbindAccessDeviceService(AccessDeviceService accessDeviceService) {
+        if (this.accessDeviceService == accessDeviceService) {
+            log.info("Unbinding AccessDeviceService");
+            this.accessDeviceService = null;
+            log.info("Removing listener on AccessDeviceService");
+            accessDeviceService.removeListener(listener);
+        } else {
+            log.warn("Trying to unbind AccessDeviceService but it is already unbound");
+        }
+    }
+
     @Activate
     public void activate() {
-        accessDeviceService.addListener(listener);
         log.info("Started");
     }
 
     @Deactivate
     public void deactivate() {
-        accessDeviceService.removeListener(listener);
         log.info("Stopped");
     }