From e834c9345da1819613044c423d6cd3a096aad55e Mon Sep 17 00:00:00 2001 From: mpriyank Date: Fri, 3 May 2024 13:45:03 +0100 Subject: [BUG] Correctly parse observedTimestamp - Using the DateTimeUtility to parse the passed OffsetDateTime and using it for conversion to string - Moving to actual src/main/java from test side as it is to be used in the prod code as well and only keeping the methods in use. - Added test to fix the coverage issue Issue-ID: CPS-2211 Change-Id: I2b4325bb77a6da7fd470986b1da293f455650375 Signed-off-by: mpriyank --- .../java/org/onap/cps/utils/DateTimeUtility.java | 6 ++-- .../cps/events/CpsDataUpdateEventsService.java | 4 ++- .../java/org/onap/cps/utils/DateTimeUtility.java | 35 +++++++++++++++++++ .../events/CpsDataUpdateEventsServiceSpec.groovy | 16 ++++++++- .../java/org/onap/cps/utils/DateTimeUtility.java | 40 ---------------------- 5 files changed, 56 insertions(+), 45 deletions(-) create mode 100644 cps-service/src/main/java/org/onap/cps/utils/DateTimeUtility.java delete mode 100644 cps-service/src/test/java/org/onap/cps/utils/DateTimeUtility.java diff --git a/cps-rest/src/test/java/org/onap/cps/utils/DateTimeUtility.java b/cps-rest/src/test/java/org/onap/cps/utils/DateTimeUtility.java index f8d709647..af0efe2e2 100644 --- a/cps-rest/src/test/java/org/onap/cps/utils/DateTimeUtility.java +++ b/cps-rest/src/test/java/org/onap/cps/utils/DateTimeUtility.java @@ -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 diff --git a/cps-service/src/main/java/org/onap/cps/events/CpsDataUpdateEventsService.java b/cps-service/src/main/java/org/onap/cps/events/CpsDataUpdateEventsService.java index e3315c9ab..d38432dfa 100644 --- a/cps-service/src/main/java/org/onap/cps/events/CpsDataUpdateEventsService.java +++ b/cps-service/src/main/java/org/onap/cps/events/CpsDataUpdateEventsService.java @@ -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()); diff --git a/cps-service/src/main/java/org/onap/cps/utils/DateTimeUtility.java b/cps-service/src/main/java/org/onap/cps/utils/DateTimeUtility.java new file mode 100644 index 000000000..c2310707a --- /dev/null +++ b/cps-service/src/main/java/org/onap/cps/utils/DateTimeUtility.java @@ -0,0 +1,35 @@ +/* + * ============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 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.cps.utils; + +import java.time.OffsetDateTime; +import java.time.format.DateTimeFormatter; + +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 String toString(OffsetDateTime offsetDateTime) { + return offsetDateTime != null ? ISO_TIMESTAMP_FORMATTER.format(offsetDateTime) : null; + } +} diff --git a/cps-service/src/test/groovy/org/onap/cps/events/CpsDataUpdateEventsServiceSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/events/CpsDataUpdateEventsServiceSpec.groovy index 81b2bf2c9..24b9ab5d7 100644 --- a/cps-service/src/test/groovy/org/onap/cps/events/CpsDataUpdateEventsServiceSpec.groovy +++ b/cps-service/src/test/groovy/org/onap/cps/events/CpsDataUpdateEventsServiceSpec.groovy @@ -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', _) + } } diff --git a/cps-service/src/test/java/org/onap/cps/utils/DateTimeUtility.java b/cps-service/src/test/java/org/onap/cps/utils/DateTimeUtility.java deleted file mode 100644 index f8d709647..000000000 --- a/cps-service/src/test/java/org/onap/cps/utils/DateTimeUtility.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (c) 2021 Bell Canada. - * ================================================================================ - * 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 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -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; - } -} -- cgit 1.2.3-korg