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()));