Merge "CmDataSubscription status code update"
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/NcmpResponseStatus.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/NcmpResponseStatus.java
index bdc3dee..8cfad7d 100644
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/NcmpResponseStatus.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/NcmpResponseStatus.java
@@ -26,14 +26,12 @@
 public enum NcmpResponseStatus {
 
     SUCCESS("0", "Successfully applied changes"),
-    SUCCESSFULLY_APPLIED_SUBSCRIPTION("1", "successfully applied subscription"),
+    CM_DATA_SUBSCRIPTION_ACCEPTED("1", "ACCEPTED"),
     CM_HANDLES_NOT_FOUND("100", "cm handle id(s) not found"),
     CM_HANDLES_NOT_READY("101", "cm handle(s) not ready"),
     DMI_SERVICE_NOT_RESPONDING("102", "dmi plugin service is not responding"),
     UNABLE_TO_READ_RESOURCE_DATA("103", "dmi plugin service is not able to read resource data"),
-    PARTIALLY_APPLIED_SUBSCRIPTION("104", "partially applied subscription"),
-    SUBSCRIPTION_NOT_APPLICABLE("105", "subscription not applicable for all cm handles"),
-    SUBSCRIPTION_PENDING("106", "subscription pending for all cm handles"),
+    CM_DATA_SUBSCRIPTION_REJECTED("104", "REJECTED"),
     UNKNOWN_ERROR("108", "Unknown error"),
     CM_HANDLE_ALREADY_EXIST("109", "cm-handle already exists"),
     CM_HANDLE_INVALID_ID("110", "cm-handle has an invalid character(s) in id"),
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/events/cmsubscription/consumer/CmNotificationSubscriptionDmiOutEventConsumer.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/events/cmsubscription/consumer/CmNotificationSubscriptionDmiOutEventConsumer.java
index 3e072b0..7615e7e 100644
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/events/cmsubscription/consumer/CmNotificationSubscriptionDmiOutEventConsumer.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/events/cmsubscription/consumer/CmNotificationSubscriptionDmiOutEventConsumer.java
@@ -20,6 +20,8 @@
 
 package org.onap.cps.ncmp.api.impl.events.cmsubscription.consumer;
 
+import static org.onap.cps.ncmp.api.NcmpResponseStatus.CM_DATA_SUBSCRIPTION_ACCEPTED;
+import static org.onap.cps.ncmp.api.NcmpResponseStatus.CM_DATA_SUBSCRIPTION_REJECTED;
 import static org.onap.cps.ncmp.api.impl.events.mapper.CloudEventMapper.toTargetEvent;
 
 import io.cloudevents.CloudEvent;
@@ -27,12 +29,14 @@
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.kafka.clients.consumer.ConsumerRecord;
+import org.onap.cps.ncmp.api.NcmpResponseStatus;
 import org.onap.cps.ncmp.api.impl.events.cmsubscription.CmNotificationSubscriptionEventsHandler;
 import org.onap.cps.ncmp.api.impl.events.cmsubscription.CmNotificationSubscriptionMappersHandler;
 import org.onap.cps.ncmp.api.impl.events.cmsubscription.DmiCmNotificationSubscriptionCacheHandler;
 import org.onap.cps.ncmp.api.impl.events.cmsubscription.model.CmNotificationSubscriptionStatus;
 import org.onap.cps.ncmp.api.impl.events.cmsubscription.model.DmiCmNotificationSubscriptionDetails;
 import org.onap.cps.ncmp.events.cmnotificationsubscription_merge1_0_0.dmi_to_ncmp.CmNotificationSubscriptionDmiOutEvent;
+import org.onap.cps.ncmp.events.cmnotificationsubscription_merge1_0_0.dmi_to_ncmp.Data;
 import org.onap.cps.ncmp.events.cmsubscription_merge1_0_0.ncmp_to_client.CmNotificationSubscriptionNcmpOutEvent;
 import org.springframework.kafka.annotation.KafkaListener;
 import org.springframework.stereotype.Component;
@@ -46,6 +50,8 @@
     private final CmNotificationSubscriptionEventsHandler cmNotificationSubscriptionEventsHandler;
     private final CmNotificationSubscriptionMappersHandler cmNotificationSubscriptionMappersHandler;
 
+    private static final String CM_DATA_SUBSCRIPTION_CORRELATION_ID_SEPARATOR = "#";
+
     /**
      * Consume the Cm Notification Subscription event from the dmi-plugin.
      *
@@ -67,16 +73,16 @@
 
     private void handleCmSubscriptionCreate(final String correlationId,
             final CmNotificationSubscriptionDmiOutEvent cmNotificationSubscriptionDmiOutEvent) {
-        final String subscriptionId = correlationId.split("#")[0];
-        final String dmiPluginName = correlationId.split("#")[1];
+        final String subscriptionId = correlationId.split(CM_DATA_SUBSCRIPTION_CORRELATION_ID_SEPARATOR)[0];
+        final String dmiPluginName = correlationId.split(CM_DATA_SUBSCRIPTION_CORRELATION_ID_SEPARATOR)[1];
 
-        if ("ACCEPTED".equals(cmNotificationSubscriptionDmiOutEvent.getData().getStatusMessage())) {
+        if (checkStatusCodeAndMessage(CM_DATA_SUBSCRIPTION_ACCEPTED, cmNotificationSubscriptionDmiOutEvent.getData())) {
             handleCacheStatusPerDmi(subscriptionId, dmiPluginName, CmNotificationSubscriptionStatus.ACCEPTED);
             dmiCmNotificationSubscriptionCacheHandler.persistIntoDatabasePerDmi(subscriptionId, dmiPluginName);
             handleEventsStatusPerDmi(subscriptionId);
         }
 
-        if ("REJECTED".equals(cmNotificationSubscriptionDmiOutEvent.getData().getStatusMessage())) {
+        if (checkStatusCodeAndMessage(CM_DATA_SUBSCRIPTION_REJECTED, cmNotificationSubscriptionDmiOutEvent.getData())) {
             handleCacheStatusPerDmi(subscriptionId, dmiPluginName, CmNotificationSubscriptionStatus.REJECTED);
             handleEventsStatusPerDmi(subscriptionId);
         }
@@ -100,4 +106,11 @@
         cmNotificationSubscriptionEventsHandler.publishCmNotificationSubscriptionNcmpOutEvent(subscriptionId,
                 "subscriptionCreateResponse", cmNotificationSubscriptionNcmpOutEvent, false);
     }
+
+    private boolean checkStatusCodeAndMessage(final NcmpResponseStatus ncmpResponseStatus,
+            final Data cmNotificationSubscriptionDmiOutData) {
+        return ncmpResponseStatus.getCode().equals(cmNotificationSubscriptionDmiOutData.getStatusCode())
+                       && ncmpResponseStatus.getMessage()
+                                  .equals(cmNotificationSubscriptionDmiOutData.getStatusMessage());
+    }
 }
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/events/cmsubscription/CmNotificationSubscriptionDmiOutEventConsumerSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/events/cmsubscription/CmNotificationSubscriptionDmiOutEventConsumerSpec.groovy
index 488879d..9b0a48d 100644
--- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/events/cmsubscription/CmNotificationSubscriptionDmiOutEventConsumerSpec.groovy
+++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/events/cmsubscription/CmNotificationSubscriptionDmiOutEventConsumerSpec.groovy
@@ -36,7 +36,6 @@
 import org.onap.cps.ncmp.utils.TestUtils
 import org.onap.cps.utils.JsonObjectMapper
 import org.slf4j.LoggerFactory
-import org.spockframework.spring.SpringBean
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.boot.test.context.SpringBootTest
 
@@ -108,9 +107,9 @@
         and: 'correct number of calls to publish the ncmp out event to client'
             1 * mockCmNotificationSubscriptionEventsHandler.publishCmNotificationSubscriptionNcmpOutEvent('sub-1', 'subscriptionCreateResponse', _, false)
         where: 'the following parameters are used'
-            scenario            | subscriptionStatus                            | statusCode || expectedCacheCalls | expectedPersistenceCalls
-            'Accepted Status'   | CmNotificationSubscriptionStatus.ACCEPTED     | '1'        || 1                  | 1
-            'Rejected Status'   | CmNotificationSubscriptionStatus.REJECTED     | '2'        || 1                  | 0
+            scenario          | subscriptionStatus                        | statusCode || expectedCacheCalls | expectedPersistenceCalls
+            'Accepted Status' | CmNotificationSubscriptionStatus.ACCEPTED | '1'        || 1                  | 1
+            'Rejected Status' | CmNotificationSubscriptionStatus.REJECTED | '104'      || 1                  | 0
     }
 
     def getLoggingEvent() {
diff --git a/docs/cps-ncmp-message-status-codes.rst b/docs/cps-ncmp-message-status-codes.rst
index 0c6ce0e..e0a3f03 100644
--- a/docs/cps-ncmp-message-status-codes.rst
+++ b/docs/cps-ncmp-message-status-codes.rst
@@ -14,7 +14,7 @@
     +=================+======================================================+===================================+
     | 0               | Successfully applied changes                         | Data Operation                    |
     +-----------------+------------------------------------------------------+-----------------------------------+
-    | 1               | successfully applied subscription                    | CM Data Notification Subscription |
+    | 1               | ACCEPTED                                             | CM Data Notification Subscription |
     +-----------------+------------------------------------------------------+-----------------------------------+
     | 100             | cm handle id(s) is(are) not found                    | All features                      |
     +-----------------+------------------------------------------------------+-----------------------------------+
@@ -24,11 +24,7 @@
     +-----------------+------------------------------------------------------+-----------------------------------+
     | 103             | dmi plugin service is not able to read resource data | Data Operation                    |
     +-----------------+------------------------------------------------------+-----------------------------------+
-    | 104             | partially applied subscription                       | CM Data Notification Subscription |
-    +-----------------+------------------------------------------------------+-----------------------------------+
-    | 105             | subscription not applicable for all cm handles       | CM Data Notification Subscription |
-    +-----------------+------------------------------------------------------+-----------------------------------+
-    | 106             | subscription pending for all cm handles              | CM Data Notification Subscription |
+    | 104             | REJECTED                                             | CM Data Notification Subscription |
     +-----------------+------------------------------------------------------+-----------------------------------+
     | 107             | southbound system is busy                            | Data Operation                    |
     +-----------------+------------------------------------------------------+-----------------------------------+