From 4c2da7d4b91b37c8fbeeb6f366db4165d6dff85d Mon Sep 17 00:00:00 2001 From: siarhei_hrabko Date: Tue, 28 Nov 2023 19:21:51 +0300 Subject: [PATCH 1/4] EPMRPP-82409 update common-models with LocalDateTime --- build.gradle | 2 +- .../com/epam/ta/reportportal/dao/util/WidgetContentUtil.java | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index 7066710e7..f81256efb 100644 --- a/build.gradle +++ b/build.gradle @@ -54,7 +54,7 @@ dependencies { } else { compile 'com.github.reportportal:commons:07566b8e' compile 'com.github.reportportal:commons-rules:01ec4d17' - compile 'com.github.reportportal:commons-model:83f012f' + compile 'com.github.reportportal:commons-model:4d032dc1f4ab1858cc59627166899c2c5975a075' } //https://nvd.nist.gov/vuln/detail/CVE-2020-10683 (dom4j 2.1.3 version dependency) AND https://nvd.nist.gov/vuln/detail/CVE-2019-14900 diff --git a/src/main/java/com/epam/ta/reportportal/dao/util/WidgetContentUtil.java b/src/main/java/com/epam/ta/reportportal/dao/util/WidgetContentUtil.java index 747a87acc..d640621f3 100644 --- a/src/main/java/com/epam/ta/reportportal/dao/util/WidgetContentUtil.java +++ b/src/main/java/com/epam/ta/reportportal/dao/util/WidgetContentUtil.java @@ -17,7 +17,6 @@ package com.epam.ta.reportportal.dao.util; -import static com.epam.ta.reportportal.commons.EntityUtils.TO_DATE; import static com.epam.ta.reportportal.commons.querygen.QueryBuilder.STATISTICS_KEY; import static com.epam.ta.reportportal.commons.querygen.constant.GeneralCriteriaConstant.CRITERIA_END_TIME; import static com.epam.ta.reportportal.commons.querygen.constant.GeneralCriteriaConstant.CRITERIA_LAST_MODIFIED; @@ -251,8 +250,7 @@ public static void consumeIfNotNull(K key, V value, BiConsumer cons activityResource.setActionType(r.get(ACTIVITY.EVENT_NAME)); activityResource.setObjectType(r.get(ACTIVITY.OBJECT_TYPE)); activityResource.setObjectName(r.get(ACTIVITY.OBJECT_NAME)); - activityResource.setLastModified( - TO_DATE.apply(r.get(ACTIVITY.CREATED_AT, LocalDateTime.class))); + activityResource.setLastModified(r.get(ACTIVITY.CREATED_AT, LocalDateTime.class)); activityResource.setLoggedObjectId(r.get(ACTIVITY.OBJECT_ID)); String detailsJson = r.get(ACTIVITY.DETAILS, String.class); ofNullable(detailsJson).ifPresent(s -> { From 1f9f5fb32b4c091723aec223e6d087cce5f00d07 Mon Sep 17 00:00:00 2001 From: siarhei_hrabko Date: Tue, 28 Nov 2023 21:24:45 +0300 Subject: [PATCH 2/4] EPMRPP-82409 update common-models with LocalDateTime --- .../ta/reportportal/commons/Preconditions.java | 9 ++------- .../reportportal/commons/PreconditionsTest.java | 17 ++++++++--------- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/epam/ta/reportportal/commons/Preconditions.java b/src/main/java/com/epam/ta/reportportal/commons/Preconditions.java index 367ff61d4..d642b4006 100644 --- a/src/main/java/com/epam/ta/reportportal/commons/Preconditions.java +++ b/src/main/java/com/epam/ta/reportportal/commons/Preconditions.java @@ -16,7 +16,6 @@ package com.epam.ta.reportportal.commons; -import static com.epam.ta.reportportal.commons.EntityUtils.TO_LOCAL_DATE_TIME; import static com.epam.ta.reportportal.commons.querygen.constant.LaunchCriteriaConstant.CRITERIA_LAUNCH_MODE; import com.epam.ta.reportportal.commons.querygen.FilterCondition; @@ -26,7 +25,6 @@ import com.epam.ta.reportportal.ws.model.launch.Mode; import java.time.LocalDateTime; import java.util.Collection; -import java.util.Date; import java.util.Map; import java.util.Optional; import java.util.UUID; @@ -54,12 +52,9 @@ private Preconditions() { } - public static Predicate sameTimeOrLater(final LocalDateTime than) { + public static Predicate sameTimeOrLater(final LocalDateTime than) { com.google.common.base.Preconditions.checkNotNull(than, ErrorType.BAD_REQUEST_ERROR); - return date -> { - LocalDateTime localDateTime = TO_LOCAL_DATE_TIME.apply(date); - return localDateTime.isAfter(than) || localDateTime.isEqual(than); - }; + return localDateTime -> localDateTime.isAfter(than) || localDateTime.isEqual(than); } public static Predicate statusIn(final StatusEnum... statuses) { diff --git a/src/test/java/com/epam/ta/reportportal/commons/PreconditionsTest.java b/src/test/java/com/epam/ta/reportportal/commons/PreconditionsTest.java index 5111d7b2b..466fa376f 100644 --- a/src/test/java/com/epam/ta/reportportal/commons/PreconditionsTest.java +++ b/src/test/java/com/epam/ta/reportportal/commons/PreconditionsTest.java @@ -24,7 +24,6 @@ import com.epam.ta.reportportal.ws.model.launch.Mode; import java.time.LocalDateTime; import java.time.ZoneOffset; -import java.util.Date; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -53,9 +52,9 @@ void hasModeNegative() { @Test void sameTime() { - Date date = new Date(); + var date = LocalDateTime.now(); - LocalDateTime sameTime = LocalDateTime.from(date.toInstant().atZone(ZoneOffset.UTC)); + LocalDateTime sameTime = LocalDateTime.from(date.atOffset(ZoneOffset.UTC)); Assertions.assertTrue(Preconditions.sameTimeOrLater(sameTime).test(date)); } @@ -63,9 +62,9 @@ void sameTime() { @Test void laterTime() { - Date date = new Date(); + var date = LocalDateTime.now(); - LocalDateTime laterTime = LocalDateTime.from(date.toInstant().atZone(ZoneOffset.UTC)) + LocalDateTime laterTime = LocalDateTime.from(date.atOffset(ZoneOffset.UTC)) .minusSeconds(1L); Assertions.assertTrue(Preconditions.sameTimeOrLater(laterTime).test(date)); @@ -74,9 +73,9 @@ void laterTime() { @Test void beforeTime() { - Date date = new Date(); + var date = LocalDateTime.now(); - LocalDateTime beforeTime = LocalDateTime.from(date.toInstant().atZone(ZoneOffset.UTC)) + LocalDateTime beforeTime = LocalDateTime.from(date.atOffset(ZoneOffset.UTC)) .plusSeconds(1L); Assertions.assertFalse(Preconditions.sameTimeOrLater(beforeTime).test(date)); @@ -86,7 +85,7 @@ void beforeTime() { void validateNullValue() { assertThrows(NullPointerException.class, - () -> Preconditions.sameTimeOrLater(null).test(new Date())); + () -> Preconditions.sameTimeOrLater(null).test(LocalDateTime.now())); } private FilterCondition filterConditionWithMode(Mode mode) { @@ -94,4 +93,4 @@ private FilterCondition filterConditionWithMode(Mode mode) { return new FilterCondition(Condition.EQUALS, false, mode.name(), CRITERIA_LAUNCH_MODE); } -} \ No newline at end of file +} From 31931b4ab68377151990f1d8b6f685e72c9a4d34 Mon Sep 17 00:00:00 2001 From: siarhei_hrabko Date: Tue, 28 Nov 2023 23:36:49 +0300 Subject: [PATCH 3/4] EPMRPP-82409 update common-models with LocalDateTim --- .../ta/reportportal/commons/EntityUtils.java | 10 ++++++++++ .../ta/reportportal/commons/Preconditions.java | 18 ++++++++++++++++-- .../commons/PreconditionsTest.java | 17 +++++++++-------- 3 files changed, 35 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/epam/ta/reportportal/commons/EntityUtils.java b/src/main/java/com/epam/ta/reportportal/commons/EntityUtils.java index 6c83b4d20..7aa387be2 100644 --- a/src/main/java/com/epam/ta/reportportal/commons/EntityUtils.java +++ b/src/main/java/com/epam/ta/reportportal/commons/EntityUtils.java @@ -21,6 +21,7 @@ import com.google.common.base.Preconditions; import java.time.LocalDateTime; +import java.time.ZoneId; import java.time.ZoneOffset; import java.util.Date; import java.util.function.Function; @@ -38,6 +39,15 @@ public class EntityUtils { date).map(d -> LocalDateTime.ofInstant(d.toInstant(), ZoneOffset.UTC )).orElse(null); + + public static final Function TO_UTC_LOCAL_DATE_TIME = + localDateTime -> ofNullable(localDateTime) + .map(date -> date + .atZone(ZoneId.systemDefault()) + .withZoneSameInstant(ZoneOffset.UTC) + .toLocalDateTime()) + .orElse(null); + public static final Function TO_DATE = localDateTime -> ofNullable( localDateTime).map(l -> Date.from(l.atZone( ZoneOffset.UTC).toInstant())).orElse(null); diff --git a/src/main/java/com/epam/ta/reportportal/commons/Preconditions.java b/src/main/java/com/epam/ta/reportportal/commons/Preconditions.java index d642b4006..9a24c4222 100644 --- a/src/main/java/com/epam/ta/reportportal/commons/Preconditions.java +++ b/src/main/java/com/epam/ta/reportportal/commons/Preconditions.java @@ -16,6 +16,8 @@ package com.epam.ta.reportportal.commons; +import static com.epam.ta.reportportal.commons.EntityUtils.TO_LOCAL_DATE_TIME; +import static com.epam.ta.reportportal.commons.EntityUtils.TO_UTC_LOCAL_DATE_TIME; import static com.epam.ta.reportportal.commons.querygen.constant.LaunchCriteriaConstant.CRITERIA_LAUNCH_MODE; import com.epam.ta.reportportal.commons.querygen.FilterCondition; @@ -25,6 +27,7 @@ import com.epam.ta.reportportal.ws.model.launch.Mode; import java.time.LocalDateTime; import java.util.Collection; +import java.util.Date; import java.util.Map; import java.util.Optional; import java.util.UUID; @@ -52,9 +55,20 @@ private Preconditions() { } - public static Predicate sameTimeOrLater(final LocalDateTime than) { + public static Predicate sameTimeOrLater(final LocalDateTime than) { com.google.common.base.Preconditions.checkNotNull(than, ErrorType.BAD_REQUEST_ERROR); - return localDateTime -> localDateTime.isAfter(than) || localDateTime.isEqual(than); + return date -> { + LocalDateTime localDateTime = TO_LOCAL_DATE_TIME.apply(date); + return localDateTime.isAfter(than) || localDateTime.isEqual(than); + }; + } + + public static Predicate sameLocalDateTimeOrLater(final LocalDateTime than) { + com.google.common.base.Preconditions.checkNotNull(than, ErrorType.BAD_REQUEST_ERROR); + return date -> { + LocalDateTime localDateTime = TO_UTC_LOCAL_DATE_TIME.apply(date); + return localDateTime.isAfter(than) || localDateTime.isEqual(than); + }; } public static Predicate statusIn(final StatusEnum... statuses) { diff --git a/src/test/java/com/epam/ta/reportportal/commons/PreconditionsTest.java b/src/test/java/com/epam/ta/reportportal/commons/PreconditionsTest.java index 466fa376f..5111d7b2b 100644 --- a/src/test/java/com/epam/ta/reportportal/commons/PreconditionsTest.java +++ b/src/test/java/com/epam/ta/reportportal/commons/PreconditionsTest.java @@ -24,6 +24,7 @@ import com.epam.ta.reportportal.ws.model.launch.Mode; import java.time.LocalDateTime; import java.time.ZoneOffset; +import java.util.Date; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -52,9 +53,9 @@ void hasModeNegative() { @Test void sameTime() { - var date = LocalDateTime.now(); + Date date = new Date(); - LocalDateTime sameTime = LocalDateTime.from(date.atOffset(ZoneOffset.UTC)); + LocalDateTime sameTime = LocalDateTime.from(date.toInstant().atZone(ZoneOffset.UTC)); Assertions.assertTrue(Preconditions.sameTimeOrLater(sameTime).test(date)); } @@ -62,9 +63,9 @@ void sameTime() { @Test void laterTime() { - var date = LocalDateTime.now(); + Date date = new Date(); - LocalDateTime laterTime = LocalDateTime.from(date.atOffset(ZoneOffset.UTC)) + LocalDateTime laterTime = LocalDateTime.from(date.toInstant().atZone(ZoneOffset.UTC)) .minusSeconds(1L); Assertions.assertTrue(Preconditions.sameTimeOrLater(laterTime).test(date)); @@ -73,9 +74,9 @@ void laterTime() { @Test void beforeTime() { - var date = LocalDateTime.now(); + Date date = new Date(); - LocalDateTime beforeTime = LocalDateTime.from(date.atOffset(ZoneOffset.UTC)) + LocalDateTime beforeTime = LocalDateTime.from(date.toInstant().atZone(ZoneOffset.UTC)) .plusSeconds(1L); Assertions.assertFalse(Preconditions.sameTimeOrLater(beforeTime).test(date)); @@ -85,7 +86,7 @@ void beforeTime() { void validateNullValue() { assertThrows(NullPointerException.class, - () -> Preconditions.sameTimeOrLater(null).test(LocalDateTime.now())); + () -> Preconditions.sameTimeOrLater(null).test(new Date())); } private FilterCondition filterConditionWithMode(Mode mode) { @@ -93,4 +94,4 @@ private FilterCondition filterConditionWithMode(Mode mode) { return new FilterCondition(Condition.EQUALS, false, mode.name(), CRITERIA_LAUNCH_MODE); } -} +} \ No newline at end of file From 7d2aadef1cd6c44cab84a5168cdd3908e97e01ed Mon Sep 17 00:00:00 2001 From: siarhei_hrabko Date: Wed, 29 Nov 2023 10:31:32 +0300 Subject: [PATCH 4/4] EPMRPP-82409 update common-models with LocalDateTime --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index f81256efb..da757a755 100644 --- a/build.gradle +++ b/build.gradle @@ -54,7 +54,7 @@ dependencies { } else { compile 'com.github.reportportal:commons:07566b8e' compile 'com.github.reportportal:commons-rules:01ec4d17' - compile 'com.github.reportportal:commons-model:4d032dc1f4ab1858cc59627166899c2c5975a075' + compile 'com.github.reportportal:commons-model:19ebad0' } //https://nvd.nist.gov/vuln/detail/CVE-2020-10683 (dom4j 2.1.3 version dependency) AND https://nvd.nist.gov/vuln/detail/CVE-2019-14900