Refactor nbinotifications
[transportpce.git] / nbinotifications / src / main / java / org / opendaylight / transportpce / nbinotifications / impl / rpc / CreateNotificationSubscriptionServiceImpl.java
index 772fb20aeecd63d3c0980c8490a5d2563f0423c8..b6b79f7ee6eb640aef526416cb1f20f5289392e9 100644 (file)
@@ -25,9 +25,10 @@ import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev22112
 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.context.NotifSubscription;
 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.context.NotifSubscriptionBuilder;
 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.context.NotifSubscriptionKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.context.Notification;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.context.NotificationKey;
 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.subscription.service.SubscriptionFilter;
 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.subscription.service.SubscriptionFilterBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.notification.rev221121.notification.subscription.service.SubscriptionFilterKey;
 import org.opendaylight.yangtools.yang.common.ErrorType;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
@@ -50,10 +51,11 @@ public class CreateNotificationSubscriptionServiceImpl implements CreateNotifica
     @Override
     public ListenableFuture<RpcResult<CreateNotificationSubscriptionServiceOutput>> invoke(
             CreateNotificationSubscriptionServiceInput input) {
-        for (Uuid uuid:input.getSubscriptionFilter().getRequestedObjectIdentifier()) {
+        for (Uuid uuid : input.getSubscriptionFilter().getRequestedObjectIdentifier()) {
             LOG.info("Adding T-API topic: {} to Kafka server", uuid.getValue());
             this.topicManager.addTapiTopic(uuid.getValue());
         }
+        Uuid notifSubscriptionUuid = new Uuid(UUID.randomUUID().toString());
         SubscriptionFilter subscriptionFilter = new SubscriptionFilterBuilder()
             .setName(input.getSubscriptionFilter().getName())
             .setLocalId(input.getSubscriptionFilter().getLocalId())
@@ -63,45 +65,48 @@ public class CreateNotificationSubscriptionServiceImpl implements CreateNotifica
             .setRequestedObjectIdentifier(input.getSubscriptionFilter().getRequestedObjectIdentifier())
             .setRequestedObjectTypes(input.getSubscriptionFilter().getRequestedObjectTypes())
             .build();
-        Uuid notifSubscriptionUuid = new Uuid(UUID.randomUUID().toString());
-        Map<SubscriptionFilterKey, SubscriptionFilter> sfmap = new HashMap<>();
-        sfmap.put(subscriptionFilter.key(), subscriptionFilter);
         SubscriptionService subscriptionService = new SubscriptionServiceBuilder()
-            .setSubscriptionFilter(sfmap)
-            .setSubscriptionState(input.getSubscriptionState())
             .setUuid(notifSubscriptionUuid)
+            .setSubscriptionFilter(new HashMap<>(Map.of(subscriptionFilter.key(), subscriptionFilter)))
+            .setSubscriptionState(input.getSubscriptionState())
             .build();
-
-        NotifSubscriptionKey notifSubscriptionKey = new NotifSubscriptionKey(notifSubscriptionUuid);
-        NotifSubscription notifSubscription = new NotifSubscriptionBuilder()
-            .setSubscriptionState(subscriptionService.getSubscriptionState())
-            .setSubscriptionFilter(subscriptionService.getSubscriptionFilter())
-            .setUuid(notifSubscriptionUuid)
+        Map<NotifSubscriptionKey, NotifSubscription> notifSubscriptions = new HashMap<>(Map.of(
+            new NotifSubscriptionKey(notifSubscriptionUuid),
+            new NotifSubscriptionBuilder()
+                .setSubscriptionState(subscriptionService.getSubscriptionState())
+                .setSubscriptionFilter(subscriptionService.getSubscriptionFilter())
+                .setUuid(notifSubscriptionUuid)
 //            Following 2 items are no more in notification-context with T-API 2.4
-//            .setSupportedNotificationTypes(notificationTypes)
-//            .setSupportedObjectTypes(objectTypes)
-            .setName(subscriptionService.getName())
-            .build();
+//              .setSupportedNotificationTypes(notificationTypes)
+//              .setSupportedObjectTypes(objectTypes)
+                .setName(subscriptionService.getName())
+                .build()));
+        Map<NotificationKey, Notification> notifications;
         NotificationContext notificationContext = nbiNotifications.getNotificationContext();
-        Map<NotifSubscriptionKey, NotifSubscription> notifSubscriptions = new HashMap<>();
-        if (notificationContext != null && notificationContext.getNotifSubscription() != null) {
-            notifSubscriptions.putAll(notificationContext.getNotifSubscription());
+        if (notificationContext == null) {
+            notifications = new HashMap<>();
+        } else {
+            notifications = notificationContext.getNotification();
+            var subsc = notificationContext.getNotifSubscription();
+            if (subsc != null) {
+                notifSubscriptions.putAll(subsc);
+            }
         }
-        notifSubscriptions.put(notifSubscriptionKey, notifSubscription);
-        NotificationContext notificationContext1 = new NotificationContextBuilder()
-            .setNotification(notificationContext == null ? new HashMap<>() : notificationContext.getNotification())
-            .setNotifSubscription(notifSubscriptions)
-            .build();
-        if (!nbiNotifications.updateNotificationContext(notificationContext1)) {
-            LOG.error("Failed to update Notification context");
-            return RpcResultBuilder.<CreateNotificationSubscriptionServiceOutput>failed()
-                .withError(ErrorType.RPC, "Failed to update notification context").buildFuture();
+        if (nbiNotifications.updateNotificationContext(
+                new NotificationContextBuilder()
+                    .setNotification(notifications)
+                    .setNotifSubscription(notifSubscriptions)
+                    .build())) {
+            return RpcResultBuilder
+                .success(
+                    new CreateNotificationSubscriptionServiceOutputBuilder()
+                        .setSubscriptionService(subscriptionService)
+                        .build())
+                .buildFuture();
         }
-        CreateNotificationSubscriptionServiceOutput serviceOutput =
-            new CreateNotificationSubscriptionServiceOutputBuilder()
-                .setSubscriptionService(subscriptionService)
-                .build();
-        return RpcResultBuilder.success(serviceOutput).buildFuture();
+        LOG.error("Failed to update Notification context");
+        return RpcResultBuilder.<CreateNotificationSubscriptionServiceOutput>failed()
+            .withError(ErrorType.RPC, "Failed to update notification context")
+            .buildFuture();
     }
-
 }