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 <garydgreg...@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()));