You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2022/08/21 12:55:54 UTC

[commons-io] branch master updated: Add TimestampedObserver.isClosed().

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

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-io.git


The following commit(s) were added to refs/heads/master by this push:
     new a86bd6c6 Add TimestampedObserver.isClosed().
a86bd6c6 is described below

commit a86bd6c62fd716360586f17dcc62cd91976fae48
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sat Aug 20 16:08:04 2022 -0400

    Add TimestampedObserver.isClosed().
---
 src/changes/changes.xml                                        |  3 +++
 .../java/org/apache/commons/io/input/TimestampedObserver.java  | 10 ++++++++++
 .../org/apache/commons/io/input/TimestampedObserverTest.java   |  5 +++++
 3 files changed, 18 insertions(+)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 3cc80882..9db4d876 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -433,6 +433,9 @@ The <action> type attribute can be add,update,fix,remove.
       <action dev="ggregory" type="add" due-to="Gary Gregory">
         Add IOConsumer.asConsumer().
       </action>
+      <action dev="ggregory" type="add" due-to="Gary Gregory">
+        Add TimestampedObserver.isClosed().
+      </action>
       <!-- UPDATE -->
       <action dev="kinow" type="update" due-to="Dependabot, Gary Gregory">
         Bump actions/cache from 2.1.6 to 3.0.7 #307, #337.
diff --git a/src/main/java/org/apache/commons/io/input/TimestampedObserver.java b/src/main/java/org/apache/commons/io/input/TimestampedObserver.java
index e577fa4e..df18a6cf 100644
--- a/src/main/java/org/apache/commons/io/input/TimestampedObserver.java
+++ b/src/main/java/org/apache/commons/io/input/TimestampedObserver.java
@@ -86,6 +86,16 @@ public class TimestampedObserver extends Observer {
         return Duration.between(openInstant, Instant.now());
     }
 
+    /**
+     * Tests whether {@link #closed()} has been called.
+     *
+     * @return whether {@link #closed()} has been called.
+     * @since 2.12.0
+     */
+    public boolean isClosed() {
+        return closeInstant != null;
+    }
+
     @Override
     public String toString() {
         return "TimestampedObserver [openInstant=" + openInstant + ", closeInstant=" + closeInstant + "]";
diff --git a/src/test/java/org/apache/commons/io/input/TimestampedObserverTest.java b/src/test/java/org/apache/commons/io/input/TimestampedObserverTest.java
index c80527e3..51507366 100644
--- a/src/test/java/org/apache/commons/io/input/TimestampedObserverTest.java
+++ b/src/test/java/org/apache/commons/io/input/TimestampedObserverTest.java
@@ -20,6 +20,7 @@ package org.apache.commons.io.input;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
@@ -39,6 +40,7 @@ public class TimestampedObserverTest {
         // Some OS' clock granularity may be high.
         Thread.sleep(20);
         final TimestampedObserver timestampedObserver = new TimestampedObserver();
+        assertFalse(timestampedObserver.isClosed());
         // Java 8 instant resolution is not great.
         Thread.sleep(20);
         // toString() should not blow up before close().
@@ -46,11 +48,14 @@ public class TimestampedObserverTest {
         assertTrue(timestampedObserver.getOpenInstant().isAfter(before));
         assertTrue(timestampedObserver.getOpenToNowDuration().toNanos() > 0);
         assertNull(timestampedObserver.getCloseInstant());
+        assertFalse(timestampedObserver.isClosed());
         final byte[] buffer = MessageDigestCalculatingInputStreamTest.generateRandomByteStream(IOUtils.DEFAULT_BUFFER_SIZE);
         try (ObservableInputStream ois = new ObservableInputStream(new ByteArrayInputStream(buffer), timestampedObserver)) {
             assertTrue(timestampedObserver.getOpenInstant().isAfter(before));
             assertTrue(timestampedObserver.getOpenToNowDuration().toNanos() > 0);
+            assertFalse(timestampedObserver.isClosed());
         }
+        assertTrue(timestampedObserver.isClosed());
         assertTrue(timestampedObserver.getOpenInstant().isAfter(before));
         assertTrue(timestampedObserver.getOpenToNowDuration().toNanos() > 0);
         assertTrue(timestampedObserver.getCloseInstant().isAfter(timestampedObserver.getOpenInstant()));