package org.onap.cps.ncmp.api.impl.events.cmsubscription;
+import static org.onap.cps.ncmp.api.NcmpResponseStatus.PARTIALLY_APPLIED_SUBSCRIPTION;
+import static org.onap.cps.ncmp.api.NcmpResponseStatus.SUBSCRIPTION_NOT_APPLICABLE;
+import static org.onap.cps.ncmp.api.NcmpResponseStatus.SUBSCRIPTION_PENDING;
+import static org.onap.cps.ncmp.api.NcmpResponseStatus.SUCCESSFULLY_APPLIED_SUBSCRIPTION;
+import static org.onap.cps.ncmp.api.impl.subscriptions.SubscriptionStatus.ACCEPTED;
+import static org.onap.cps.ncmp.api.impl.subscriptions.SubscriptionStatus.PENDING;
+import static org.onap.cps.ncmp.api.impl.subscriptions.SubscriptionStatus.REJECTED;
+
import io.cloudevents.CloudEvent;
import java.util.List;
import java.util.Map;
-import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.onap.cps.ncmp.api.NcmpEventResponseCode;
+import org.onap.cps.ncmp.api.NcmpResponseStatus;
import org.onap.cps.ncmp.api.impl.events.EventsPublisher;
import org.onap.cps.ncmp.api.impl.subscriptions.SubscriptionPersistence;
import org.onap.cps.ncmp.api.impl.subscriptions.SubscriptionStatus;
import org.onap.cps.ncmp.api.impl.utils.DataNodeHelper;
import org.onap.cps.ncmp.api.impl.utils.SubscriptionOutcomeCloudMapper;
-import org.onap.cps.ncmp.events.cmsubscription1_0_0.dmi_to_ncmp.CmSubscriptionDmiOutEvent;
+import org.onap.cps.ncmp.api.models.CmSubscriptionEvent;
+import org.onap.cps.ncmp.api.models.CmSubscriptionStatus;
import org.onap.cps.ncmp.events.cmsubscription1_0_0.ncmp_to_client.CmSubscriptionNcmpOutEvent;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
private final EventsPublisher<CloudEvent> outcomeEventsPublisher;
- private final CmSubscriptionDmiOutEventToCmSubscriptionNcmpOutEventMapper
- cmSubscriptionDmiOutEventToCmSubscriptionNcmpOutEventMapper;
+ private final CmSubscriptionEventToCmSubscriptionNcmpOutEventMapper
+ cmSubscriptionEventToCmSubscriptionNcmpOutEventMapper;
private final SubscriptionOutcomeCloudMapper subscriptionOutcomeCloudMapper;
/**
* This is for construction of outcome message to be published for client apps.
*
- * @param cmSubscriptionDmiOutEvent event produced by Dmi Plugin
+ * @param cmSubscriptionEvent event produced by Dmi Plugin
*/
- public void sendResponse(final CmSubscriptionDmiOutEvent cmSubscriptionDmiOutEvent, final String eventKey) {
+ public void sendResponse(final CmSubscriptionEvent cmSubscriptionEvent, final String eventType) {
final CmSubscriptionNcmpOutEvent cmSubscriptionNcmpOutEvent =
- formCmSubscriptionNcmpOutEvent(cmSubscriptionDmiOutEvent);
- final String subscriptionClientId = cmSubscriptionDmiOutEvent.getData().getClientId();
- final String subscriptionName = cmSubscriptionDmiOutEvent.getData().getSubscriptionName();
+ formCmSubscriptionNcmpOutEvent(cmSubscriptionEvent);
+ final String subscriptionClientId = cmSubscriptionEvent.getClientId();
+ final String subscriptionName = cmSubscriptionEvent.getSubscriptionName();
final String subscriptionEventId = subscriptionClientId + subscriptionName;
final CloudEvent subscriptionOutcomeCloudEvent =
subscriptionOutcomeCloudMapper.toCloudEvent(cmSubscriptionNcmpOutEvent,
- subscriptionEventId, eventKey);
+ subscriptionEventId, eventType);
outcomeEventsPublisher.publishCloudEvent(subscriptionOutcomeEventTopic,
subscriptionEventId, subscriptionOutcomeCloudEvent);
}
private CmSubscriptionNcmpOutEvent formCmSubscriptionNcmpOutEvent(
- final CmSubscriptionDmiOutEvent cmSubscriptionDmiOutEvent) {
+ final CmSubscriptionEvent cmSubscriptionEvent) {
final Map<String, Map<String, String>> cmHandleIdToStatusAndDetailsAsMap =
DataNodeHelper.cmHandleIdToStatusAndDetailsAsMapFromDataNode(
subscriptionPersistence.getCmHandlesForSubscriptionEvent(
- cmSubscriptionDmiOutEvent.getData().getClientId(),
- cmSubscriptionDmiOutEvent.getData().getSubscriptionName()));
- final List<org.onap.cps.ncmp.events.cmsubscription1_0_0.dmi_to_ncmp.SubscriptionStatus>
- subscriptionStatusList =
+ cmSubscriptionEvent.getClientId(),
+ cmSubscriptionEvent.getSubscriptionName()));
+ final List<CmSubscriptionStatus> cmSubscriptionStatusList =
mapCmHandleIdStatusDetailsMapToSubscriptionStatusList(cmHandleIdToStatusAndDetailsAsMap);
- cmSubscriptionDmiOutEvent.getData().setSubscriptionStatus(subscriptionStatusList);
- return fromDmiOutEvent(cmSubscriptionDmiOutEvent,
+ cmSubscriptionEvent.setCmSubscriptionStatus(cmSubscriptionStatusList);
+ return fromCmSubscriptionEvent(cmSubscriptionEvent,
decideOnNcmpEventResponseCodeForSubscription(cmHandleIdToStatusAndDetailsAsMap));
}
- private static List<org.onap.cps.ncmp.events.cmsubscription1_0_0.dmi_to_ncmp.SubscriptionStatus>
- mapCmHandleIdStatusDetailsMapToSubscriptionStatusList(
+ private static List<CmSubscriptionStatus> mapCmHandleIdStatusDetailsMapToSubscriptionStatusList(
final Map<String, Map<String, String>> cmHandleIdToStatusAndDetailsAsMap) {
return cmHandleIdToStatusAndDetailsAsMap.entrySet()
.stream().map(entryset -> {
- final org.onap.cps.ncmp.events.cmsubscription1_0_0.dmi_to_ncmp.SubscriptionStatus
- subscriptionStatus = new org.onap.cps.ncmp.events.cmsubscription1_0_0
- .dmi_to_ncmp.SubscriptionStatus();
+ final CmSubscriptionStatus cmSubscriptionStatus = new CmSubscriptionStatus();
final String cmHandleId = entryset.getKey();
final Map<String, String> statusAndDetailsMap = entryset.getValue();
final String status = statusAndDetailsMap.get("status");
final String details = statusAndDetailsMap.get("details");
- subscriptionStatus.setId(cmHandleId);
- subscriptionStatus.setStatus(
- org.onap.cps.ncmp.events.cmsubscription1_0_0.dmi_to_ncmp
- .SubscriptionStatus.Status.fromValue(status));
- subscriptionStatus.setDetails(details);
- return subscriptionStatus;
- }).collect(Collectors.toList());
+ cmSubscriptionStatus.setId(cmHandleId);
+ cmSubscriptionStatus.setStatus(SubscriptionStatus.fromString(status));
+ cmSubscriptionStatus.setDetails(details);
+ return cmSubscriptionStatus;
+ }).toList();
}
- private NcmpEventResponseCode decideOnNcmpEventResponseCodeForSubscription(
+ private NcmpResponseStatus decideOnNcmpEventResponseCodeForSubscription(
final Map<String, Map<String, String>> cmHandleIdToStatusAndDetailsAsMap) {
- final boolean isAllTargetsPending = isAllTargetCmHandleStatusMatch(cmHandleIdToStatusAndDetailsAsMap,
- SubscriptionStatus.PENDING);
-
- final boolean isAllTargetsRejected = isAllTargetCmHandleStatusMatch(cmHandleIdToStatusAndDetailsAsMap,
- SubscriptionStatus.REJECTED);
-
- final boolean isAllTargetsAccepted = isAllTargetCmHandleStatusMatch(cmHandleIdToStatusAndDetailsAsMap,
- SubscriptionStatus.ACCEPTED);
-
- if (isAllTargetsAccepted) {
- return NcmpEventResponseCode.SUCCESSFULLY_APPLIED_SUBSCRIPTION;
- } else if (isAllTargetsRejected) {
- return NcmpEventResponseCode.SUBSCRIPTION_NOT_APPLICABLE;
- } else if (isAllTargetsPending) {
- return NcmpEventResponseCode.SUBSCRIPTION_PENDING;
- } else {
- return NcmpEventResponseCode.PARTIALLY_APPLIED_SUBSCRIPTION;
+ if (allTargetsHaveStatus(cmHandleIdToStatusAndDetailsAsMap, ACCEPTED)) {
+ return SUCCESSFULLY_APPLIED_SUBSCRIPTION;
+ }
+ if (allTargetsHaveStatus(cmHandleIdToStatusAndDetailsAsMap, REJECTED)) {
+ return SUBSCRIPTION_NOT_APPLICABLE;
+ }
+ if (allTargetsHaveStatus(cmHandleIdToStatusAndDetailsAsMap, PENDING)) {
+ return SUBSCRIPTION_PENDING;
}
+ return PARTIALLY_APPLIED_SUBSCRIPTION;
}
- private boolean isAllTargetCmHandleStatusMatch(
- final Map<String, Map<String, String>> cmHandleIdToStatusAndDetailsAsMap,
- final SubscriptionStatus subscriptionStatus) {
+ private boolean allTargetsHaveStatus(final Map<String, Map<String, String>> cmHandleIdToStatusAndDetailsAsMap,
+ final SubscriptionStatus subscriptionStatus) {
return cmHandleIdToStatusAndDetailsAsMap.values().stream()
.allMatch(entryset -> entryset.containsValue(subscriptionStatus.toString()));
}
- private CmSubscriptionNcmpOutEvent fromDmiOutEvent(
- final CmSubscriptionDmiOutEvent cmSubscriptionDmiOutEvent,
- final NcmpEventResponseCode ncmpEventResponseCode) {
+ private CmSubscriptionNcmpOutEvent fromCmSubscriptionEvent(
+ final CmSubscriptionEvent cmSubscriptionEvent,
+ final NcmpResponseStatus ncmpResponseStatus) {
final CmSubscriptionNcmpOutEvent cmSubscriptionNcmpOutEvent =
- cmSubscriptionDmiOutEventToCmSubscriptionNcmpOutEventMapper.toCmSubscriptionNcmpOutEvent(
- cmSubscriptionDmiOutEvent);
- cmSubscriptionNcmpOutEvent.getData().setStatusCode(Integer.parseInt(ncmpEventResponseCode.getStatusCode()));
- cmSubscriptionNcmpOutEvent.getData().setStatusMessage(ncmpEventResponseCode.getStatusMessage());
+ cmSubscriptionEventToCmSubscriptionNcmpOutEventMapper.toCmSubscriptionNcmpOutEvent(
+ cmSubscriptionEvent);
+ cmSubscriptionNcmpOutEvent.getData().setStatusCode(Integer.parseInt(ncmpResponseStatus.getCode()));
+ cmSubscriptionNcmpOutEvent.getData().setStatusMessage(ncmpResponseStatus.getMessage());
return cmSubscriptionNcmpOutEvent;
}