Merge "[BUG] Correctly parse observedTimestamp"
authorLee Anjella Macabuhay <lee.anjella.macabuhay@est.tech>
Fri, 3 May 2024 14:55:32 +0000 (14:55 +0000)
committerGerrit Code Review <gerrit@onap.org>
Fri, 3 May 2024 14:55:32 +0000 (14:55 +0000)
cps-rest/src/test/java/org/onap/cps/utils/DateTimeUtility.java
cps-service/src/main/java/org/onap/cps/events/CpsDataUpdateEventsService.java
cps-service/src/main/java/org/onap/cps/utils/DateTimeUtility.java [moved from cps-service/src/test/java/org/onap/cps/utils/DateTimeUtility.java with 79% similarity]
cps-service/src/test/groovy/org/onap/cps/events/CpsDataUpdateEventsServiceSpec.groovy

index f8d7096..af0efe2 100644 (file)
@@ -30,11 +30,11 @@ public interface DateTimeUtility {
     DateTimeFormatter ISO_TIMESTAMP_FORMATTER = DateTimeFormatter.ofPattern(ISO_TIMESTAMP_PATTERN);
 
     static OffsetDateTime toOffsetDateTime(String datetTimestampAsString) {
-        return ! StringUtils.hasLength(datetTimestampAsString)
-            ? null : OffsetDateTime.parse(datetTimestampAsString, ISO_TIMESTAMP_FORMATTER);
+        return !StringUtils.hasLength(datetTimestampAsString) ? null
+                       : OffsetDateTime.parse(datetTimestampAsString, ISO_TIMESTAMP_FORMATTER);
     }
 
     static String toString(OffsetDateTime offsetDateTime) {
         return offsetDateTime != null ? ISO_TIMESTAMP_FORMATTER.format(offsetDateTime) : null;
     }
-}
+}
\ No newline at end of file
index e3315c9..d38432d 100644 (file)
@@ -1,6 +1,7 @@
 /*
  * ============LICENSE_START=======================================================
  * Copyright (C) 2024 TechMahindra Ltd.
+ * Copyright (C) 2024 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -31,6 +32,7 @@ import org.onap.cps.events.model.CpsDataUpdatedEvent;
 import org.onap.cps.events.model.Data;
 import org.onap.cps.events.model.Data.Operation;
 import org.onap.cps.spi.model.Anchor;
+import org.onap.cps.utils.DateTimeUtility;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
@@ -77,7 +79,7 @@ public class CpsDataUpdateEventsService {
                                                           final Operation rootNodeOperation) {
         final CpsDataUpdatedEvent cpsDataUpdatedEvent = new CpsDataUpdatedEvent();
         final Data updateEventData = new Data();
-        updateEventData.setObservedTimestamp(observedTimestamp.toString());
+        updateEventData.setObservedTimestamp(DateTimeUtility.toString(observedTimestamp));
         updateEventData.setDataspaceName(anchor.getDataspaceName());
         updateEventData.setAnchorName(anchor.getName());
         updateEventData.setSchemaSetName(anchor.getSchemaSetName());
@@ -1,12 +1,13 @@
 /*
  * ============LICENSE_START=======================================================
  * Copyright (c) 2021 Bell Canada.
+ * Copyright (C) 2024 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *        http://www.apache.org/licenses/LICENSE-2.0
+ *       http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -22,18 +23,12 @@ package org.onap.cps.utils;
 
 import java.time.OffsetDateTime;
 import java.time.format.DateTimeFormatter;
-import org.springframework.util.StringUtils;
 
 public interface DateTimeUtility {
 
     String ISO_TIMESTAMP_PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSSZ";
     DateTimeFormatter ISO_TIMESTAMP_FORMATTER = DateTimeFormatter.ofPattern(ISO_TIMESTAMP_PATTERN);
 
-    static OffsetDateTime toOffsetDateTime(String datetTimestampAsString) {
-        return ! StringUtils.hasLength(datetTimestampAsString)
-            ? null : OffsetDateTime.parse(datetTimestampAsString, ISO_TIMESTAMP_FORMATTER);
-    }
-
     static String toString(OffsetDateTime offsetDateTime) {
         return offsetDateTime != null ? ISO_TIMESTAMP_FORMATTER.format(offsetDateTime) : null;
     }
index 81b2bf2..24b9ab5 100644 (file)
@@ -84,7 +84,7 @@ class CpsDataUpdateEventsServiceSpec extends Specification {
             def anchor = new Anchor('anchor01', 'dataspace01', 'schema01');
             def operation = CREATE
             def observedTimestamp = OffsetDateTime.now()
-        and: 'notificationsEnabled is flase'
+        and: 'notificationsEnabled is false'
             objectUnderTest.notificationsEnabled = false
         when: 'service is called to publish data update event'
             objectUnderTest.topicName = "cps-core-event"
@@ -92,4 +92,18 @@ class CpsDataUpdateEventsServiceSpec extends Specification {
         then: 'the event contains the required attributes'
             0 * mockEventsPublisher.publishCloudEvent('cps-core-event', 'dataspace01:anchor01', _)
     }
+
+    def 'publish cps update event when no timestamp provided'() {
+        given: 'an anchor, operation and null timestamp'
+            def anchor = new Anchor('anchor01', 'dataspace01', 'schema01');
+            def operation = CREATE
+            def observedTimestamp = null
+        and: 'notificationsEnabled is true'
+            objectUnderTest.notificationsEnabled = true
+        when: 'service is called to publish data update event'
+            objectUnderTest.topicName = "cps-core-event"
+            objectUnderTest.publishCpsDataUpdateEvent(anchor, '/', operation, observedTimestamp)
+        then: 'the event is published'
+            1 * mockEventsPublisher.publishCloudEvent('cps-core-event', 'dataspace01:anchor01', _)
+    }
 }