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;
@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())
.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();
}
-
}