You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2023/09/15 13:30:15 UTC

[httpcomponents-core] 04/09: HTTPCORE-754: Correct formatting of infinite deadline

This is an automated email from the ASF dual-hosted git repository.

olegk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/httpcomponents-core.git

commit 4695f251ca0f2bbb7fb40472ed5a769ebccb3c73
Author: Oleg Kalnichevski <ol...@apache.org>
AuthorDate: Fri Jun 30 17:45:38 2023 +0200

    HTTPCORE-754: Correct formatting of infinite deadline
---
 .../src/main/java/org/apache/hc/core5/util/Deadline.java     | 12 ++++++++++--
 .../apache/hc/core5/util/TestDeadlineTimeoutException.java   |  7 +++++++
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/httpcore5/src/main/java/org/apache/hc/core5/util/Deadline.java b/httpcore5/src/main/java/org/apache/hc/core5/util/Deadline.java
index 851a9a8a1..fb9861420 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/util/Deadline.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/util/Deadline.java
@@ -181,7 +181,11 @@ public class Deadline {
      * @return a formatted string.
      */
     public String format(final TimeUnit overdueTimeUnit) {
-        return String.format("Deadline: %s, %s overdue", formatTarget(), TimeValue.of(remaining(), overdueTimeUnit));
+        if (value == MAX_VALUE.value) {
+            return "No deadline (infinite)";
+        } else {
+            return String.format("Deadline: %s, %s overdue", formatTarget(), TimeValue.of(remaining(), overdueTimeUnit));
+        }
     }
 
     /**
@@ -190,7 +194,11 @@ public class Deadline {
      * @return a formatted string in the format {@value #DATE_FORMAT}.
      */
     public String formatTarget() {
-        return DATE_TIME_FORMATTER.format(Instant.ofEpochMilli(value).atOffset(ZoneOffset.UTC));
+        if (value == MAX_VALUE.value) {
+            return "(infinite)";
+        } else {
+            return DATE_TIME_FORMATTER.format(Instant.ofEpochMilli(value).atOffset(ZoneOffset.UTC));
+        }
     }
 
     public Deadline freeze() {
diff --git a/httpcore5/src/test/java/org/apache/hc/core5/util/TestDeadlineTimeoutException.java b/httpcore5/src/test/java/org/apache/hc/core5/util/TestDeadlineTimeoutException.java
index 83f949ea2..401098b6a 100644
--- a/httpcore5/src/test/java/org/apache/hc/core5/util/TestDeadlineTimeoutException.java
+++ b/httpcore5/src/test/java/org/apache/hc/core5/util/TestDeadlineTimeoutException.java
@@ -42,4 +42,11 @@ public class TestDeadlineTimeoutException {
                 DeadlineTimeoutException.from(deadline).getMessage());
     }
 
+    @Test
+    public void testInfiniteDeadlineMessage() {
+        final Deadline deadline = Deadline.calculate(Timeout.ZERO_MILLISECONDS);
+        Assertions.assertEquals("No deadline (infinite)",
+                DeadlineTimeoutException.from(deadline).getMessage());
+    }
+
 }