Enhanced response with Complex State in API

- Introduced RestOutputCmHandleState in API specs of
  retrieveCmHandleDetailsById
- Mapper to map CompositeState to RestOutputCmHandleState
- Enhanced existing test cases and introduced new one to test the
  mapping result

Issue-ID: CPS-1047
Change-Id: I34fa198287e5d920bc0cea312ee4e368f3be2b90
Signed-off-by: mpriyank <priyank.maheshwari@est.tech>
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/yangmodels/YangModelCmHandle.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/yangmodels/YangModelCmHandle.java
index d4c64ea..65e03f1 100644
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/yangmodels/YangModelCmHandle.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/yangmodels/YangModelCmHandle.java
@@ -90,6 +90,7 @@
         yangModelCmHandle.setDmiProperties(asYangModelCmHandleProperties(ncmpServiceCmHandle.getDmiProperties()));
         yangModelCmHandle.setPublicProperties(asYangModelCmHandleProperties(
                 ncmpServiceCmHandle.getPublicProperties()));
+        yangModelCmHandle.setCompositeState(ncmpServiceCmHandle.getCompositeState());
         return yangModelCmHandle;
     }
 
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/NcmpServiceCmHandle.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/NcmpServiceCmHandle.java
index 6811b59..963b484 100644
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/NcmpServiceCmHandle.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/models/NcmpServiceCmHandle.java
@@ -27,6 +27,7 @@
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
+import org.onap.cps.ncmp.api.inventory.CompositeState;
 import org.springframework.validation.annotation.Validated;
 
 /**
@@ -47,4 +48,7 @@
     @JsonSetter(nulls = Nulls.AS_EMPTY)
     private Map<String, String> publicProperties = Collections.emptyMap();
 
+    @JsonSetter(nulls = Nulls.AS_EMPTY)
+    private CompositeState compositeState;
+
 }
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/inventory/CompositeStateSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/inventory/CompositeStateSpec.groovy
index 4f4cccf..59c9951 100644
--- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/inventory/CompositeStateSpec.groovy
+++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/inventory/CompositeStateSpec.groovy
@@ -36,7 +36,8 @@
 
 class CompositeStateSpec extends Specification {
 
-    def formattedDateAndTime = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ").format(OffsetDateTime.of(2022, 1, 1, 1, 1, 1, 1, ZoneOffset.MIN))
+    def formattedDateAndTime = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ")
+        .format(OffsetDateTime.of(2022, 12, 31, 20, 30, 40, 1, ZoneOffset.UTC))
     def objectMapper = new ObjectMapper()
 
     def "Composite State Specification"() {
diff --git a/cps-ncmp-service/src/test/resources/expectedStateModel.json b/cps-ncmp-service/src/test/resources/expectedStateModel.json
index a416194..f68d725 100644
--- a/cps-ncmp-service/src/test/resources/expectedStateModel.json
+++ b/cps-ncmp-service/src/test/resources/expectedStateModel.json
@@ -4,16 +4,16 @@
     "reason" : "lock-reason",
     "details" : "lock-misbehaving-details"
   },
-  "last-update-time" : "2022-01-01T01:01:01.000-1800",
+  "last-update-time" : "2022-12-31T20:30:40.000+0000",
   "data-sync-enabled" : false,
   "datastores" : {
     "operational" : {
       "sync-state" : "NONE_REQUESTED",
-      "last-sync-time" : "2022-01-01T01:01:01.000-1800"
+      "last-sync-time" : "2022-12-31T20:30:40.000+0000"
     },
     "running" : {
       "sync-state" : "NONE_REQUESTED",
-      "last-sync-time" : "2022-01-01T01:01:01.000-1800"
+      "last-sync-time" : "2022-12-31T20:30:40.000+0000"
     }
   }
 }
\ No newline at end of file