From 5ae76ab0298995e971635f63b6c83cf455b16e14 Mon Sep 17 00:00:00 2001 From: Milton Ch <86965029+Milton-Ch@users.noreply.github.com> Date: Mon, 25 Apr 2022 01:44:21 -0400 Subject: [PATCH] fix(jans-auth-server): use duration class instead of custom util to calculate seconds from date to now (#1249) --- .../model/uma/persistence/UmaPermission.java | 4 ++- .../as/model/uma/persistence/UmaResource.java | 4 ++- .../main/java/io/jans/as/model/util/Util.java | 15 +---------- .../java/io/jans/as/model/util/UtilTest.java | 27 ------------------- .../as/server/model/common/AbstractToken.java | 4 ++- 5 files changed, 10 insertions(+), 44 deletions(-) diff --git a/jans-auth-server/model/src/main/java/io/jans/as/model/uma/persistence/UmaPermission.java b/jans-auth-server/model/src/main/java/io/jans/as/model/uma/persistence/UmaPermission.java index 8e629f7c217..19a4a82f644 100644 --- a/jans-auth-server/model/src/main/java/io/jans/as/model/uma/persistence/UmaPermission.java +++ b/jans-auth-server/model/src/main/java/io/jans/as/model/uma/persistence/UmaPermission.java @@ -17,6 +17,7 @@ import io.jans.orm.annotation.ObjectClass; import java.io.Serializable; +import java.time.Duration; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; @@ -86,7 +87,8 @@ public void setTtl(Integer ttl) { } public void resetTtlFromExpirationDate() { - final Integer calculatedTtl = Util.getNumberOfSecondFromNow(getExpirationDate()); + final Long duration = Duration.between(new Date().toInstant(), getExpirationDate().toInstant()).getSeconds(); + final Integer calculatedTtl = duration.intValue(); if (calculatedTtl != null) { setTtl(calculatedTtl); } diff --git a/jans-auth-server/model/src/main/java/io/jans/as/model/uma/persistence/UmaResource.java b/jans-auth-server/model/src/main/java/io/jans/as/model/uma/persistence/UmaResource.java index bef779d4556..38b484aec0d 100644 --- a/jans-auth-server/model/src/main/java/io/jans/as/model/uma/persistence/UmaResource.java +++ b/jans-auth-server/model/src/main/java/io/jans/as/model/uma/persistence/UmaResource.java @@ -17,6 +17,7 @@ import jakarta.validation.constraints.NotNull; import java.io.Serializable; +import java.time.Duration; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -91,7 +92,8 @@ public void setTtl(Integer ttl) { } public void resetTtlFromExpirationDate() { - final Integer calculatedTtl = Util.getNumberOfSecondFromNow(getExpirationDate()); + final Long duration = Duration.between(new Date().toInstant(), getExpirationDate().toInstant()).getSeconds(); + final Integer calculatedTtl = duration.intValue(); if (calculatedTtl != null) { setTtl(calculatedTtl); } diff --git a/jans-auth-server/model/src/main/java/io/jans/as/model/util/Util.java b/jans-auth-server/model/src/main/java/io/jans/as/model/util/Util.java index e8f0223cf9b..42f6c70d10f 100644 --- a/jans-auth-server/model/src/main/java/io/jans/as/model/util/Util.java +++ b/jans-auth-server/model/src/main/java/io/jans/as/model/util/Util.java @@ -29,6 +29,7 @@ import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; +import java.time.Duration; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; @@ -330,20 +331,6 @@ public static String byteArrayToHexString(byte[] b) { return result.toString(); } - public static Integer getNumberOfSecondFromNow(Date date) { - if (date == null) { - return 0; - } - - long now = new Date().getTime(); - final long time = date.getTime(); - if (time > now) { - return (int) (time - now) / 1000; - } - - return null; - } - public static Date createExpirationDate(Integer lifetimeInSeconds) { if (lifetimeInSeconds == null || lifetimeInSeconds == 0) throw new IllegalArgumentException("lifetime can't be null or zero"); diff --git a/jans-auth-server/model/src/test/java/io/jans/as/model/util/UtilTest.java b/jans-auth-server/model/src/test/java/io/jans/as/model/util/UtilTest.java index 2771c4a90de..da8cf6b8827 100644 --- a/jans-auth-server/model/src/test/java/io/jans/as/model/util/UtilTest.java +++ b/jans-auth-server/model/src/test/java/io/jans/as/model/util/UtilTest.java @@ -416,33 +416,6 @@ public void byteArrayToHexString_byteArray_hexString() { assertEquals(result, "48656c6c6f20776f726c64"); } - @Test - public void getNumberOfSecondFromNow_null_zero() { - showTitle("getNumberOfSecondFromNow_null_zero"); - Integer seconds = Util.getNumberOfSecondFromNow(null); - assertNotNull(seconds); - assertEquals(seconds, Integer.valueOf(0)); - } - - @Test - public void getNumberOfSecondFromNow_dateInPast_null() { - showTitle("getNumberOfSecondFromNow_dateInPast_null"); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(cal.getTimeInMillis() - 10000L); - Integer seconds = Util.getNumberOfSecondFromNow(cal.getTime()); - assertNull(seconds); - } - - @Test - public void getNumberOfSecondFromNow_dateInFuture_intNumberOfSeconds() { - showTitle("getNumberOfSecondFromNow_dateInFuture_intNumberOfSeconds"); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(cal.getTimeInMillis() + 10999L); - Integer seconds = Util.getNumberOfSecondFromNow(cal.getTime()); - assertNotNull(seconds); - assertTrue(seconds >= 10); - } - @Test public void createExpirationDate_nullLifeTime_IllegalArgumentException() { showTitle("createExpirationDate_nullLifeTime_IllegalArgumentException"); diff --git a/jans-auth-server/server/src/main/java/io/jans/as/server/model/common/AbstractToken.java b/jans-auth-server/server/src/main/java/io/jans/as/server/model/common/AbstractToken.java index b9d77cc6098..8d00a61930c 100644 --- a/jans-auth-server/server/src/main/java/io/jans/as/server/model/common/AbstractToken.java +++ b/jans-auth-server/server/src/main/java/io/jans/as/server/model/common/AbstractToken.java @@ -16,6 +16,7 @@ import io.jans.orm.model.base.Deletable; import java.io.Serializable; +import java.time.Duration; import java.util.Calendar; import java.util.Date; import java.util.concurrent.TimeUnit; @@ -105,7 +106,8 @@ private void initTtl() { } public void resetTtlFromExpirationDate() { - final Integer seconds = Util.getNumberOfSecondFromNow(getExpirationDate()); + final Long duration = Duration.between(new Date().toInstant(), getExpirationDate().toInstant()).getSeconds(); + final Integer seconds = duration.intValue(); if (seconds != null) { this.ttl = seconds; }