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 2021/08/20 00:24:44 UTC
[commons-pool] branch master updated: Add
PooledObject.getFullDuration().
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-pool.git
The following commit(s) were added to refs/heads/master by this push:
new ce4a44e Add PooledObject.getFullDuration().
ce4a44e is described below
commit ce4a44e56bbedca9ba54d7a0348067d97b3c4318
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Thu Aug 19 20:24:41 2021 -0400
Add PooledObject.getFullDuration().
---
pom.xml | 6 +++---
src/changes/changes.xml | 8 +++++++-
src/main/java/org/apache/commons/pool2/PooledObject.java | 10 ++++++++++
.../commons/pool2/impl/TestDefaultPooledObject.java | 15 +++++++++++++++
4 files changed, 35 insertions(+), 4 deletions(-)
diff --git a/pom.xml b/pom.xml
index 41ef845..9925b6e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,7 @@
</parent>
<artifactId>commons-pool2</artifactId>
- <version>2.11.2-SNAPSHOT</version>
+ <version>2.12.0-SNAPSHOT</version>
<name>Apache Commons Pool</name>
<inceptionYear>2001</inceptionYear>
@@ -174,7 +174,7 @@
<commons.module.name>org.apache.commons.pool2</commons.module.name>
<commons.rc.version>RC1</commons.rc.version>
<!-- Java 8 -->
- <commons.release.version>2.11.1</commons.release.version>
+ <commons.release.version>2.12.0</commons.release.version>
<commons.release.desc>(Java 8)</commons.release.desc>
<!-- Java 7 -->
<commons.release.2.version>2.6.2</commons.release.2.version>
@@ -200,7 +200,7 @@
<spotbugs.impl.version>4.3.0</spotbugs.impl.version>
<!-- Commons Release Plugin -->
- <commons.bc.version>2.11.0</commons.bc.version>
+ <commons.bc.version>2.11.1</commons.bc.version>
<commons.release.isDistModule>true</commons.release.isDistModule>
<commons.releaseManagerName>Gary Gregory</commons.releaseManagerName>
<commons.releaseManagerKey>86fdc7e2a11262cb</commons.releaseManagerKey>
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 4682ffc..edcab58 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -43,7 +43,13 @@ The <action> type attribute can be add,update,fix,remove.
<title>Apache Commons Pool Release Notes</title>
</properties>
<body>
- <release version="2.11.1" date="2021-08-DD" description="This is a maintenance release (Java 8).">
+ <release version="2.12.0" date="2021-MM-DD" description="This is a maintenance release (Java 8).">
+ <!-- ADD -->
+ <action dev="ggregory" type="add" due-to="Gary Gregory">
+ Add PooledObject.getFullDuration().
+ </action>
+ </release>
+ <release version="2.11.1" date="2021-08-18" description="This is a maintenance release (Java 8).">
<!-- FIXES -->
<action dev="ggregory" type="fix" due-to="Gary Gregory">
Getting a PooledObject's active duration returns a negative duration when the object is borrowed but not returned. Affects:
diff --git a/src/main/java/org/apache/commons/pool2/PooledObject.java b/src/main/java/org/apache/commons/pool2/PooledObject.java
index ae55dad..ac1d4b3 100644
--- a/src/main/java/org/apache/commons/pool2/PooledObject.java
+++ b/src/main/java/org/apache/commons/pool2/PooledObject.java
@@ -149,6 +149,16 @@ public interface PooledObject<T> extends Comparable<PooledObject<T>> {
long getCreateTime();
/**
+ * Computes the duration since this object was created (using {@link Instant#now()}).
+ *
+ * @return The duration since this object was created.
+ * @since 2.12.0
+ */
+ default Duration getFullDuration() {
+ return Duration.between(getCreateInstant(), Instant.now());
+ }
+
+ /**
* Gets the amount of time that this object last spend in the
* idle state (it may still be idle in which case subsequent calls will
* return an increased value).
diff --git a/src/test/java/org/apache/commons/pool2/impl/TestDefaultPooledObject.java b/src/test/java/org/apache/commons/pool2/impl/TestDefaultPooledObject.java
index 4bf779c..9ae69b1 100644
--- a/src/test/java/org/apache/commons/pool2/impl/TestDefaultPooledObject.java
+++ b/src/test/java/org/apache/commons/pool2/impl/TestDefaultPooledObject.java
@@ -17,8 +17,10 @@
package org.apache.commons.pool2.impl;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.lessThan;
import static org.hamcrest.Matchers.lessThanOrEqualTo;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertFalse;
import java.time.Duration;
@@ -98,6 +100,19 @@ public class TestDefaultPooledObject {
assertEquals(dpo.getCreateTime(), dpo.getLastUsedTime());
}
+ @Test
+ public void testInitialStateDuration() throws InterruptedException {
+ final PooledObject<Object> dpo = new DefaultPooledObject<>(new Object());
+ final Duration duration1 = dpo.getFullDuration();
+ assertNotNull(duration1);
+ assertFalse(duration1.isNegative());
+ Thread.sleep(100);
+ final Duration duration2 = dpo.getFullDuration();
+ assertNotNull(duration2);
+ assertFalse(duration2.isNegative());
+ assertThat(duration1, lessThan(duration2));
+ }
+
/**
* JIRA: POOL-279
*