From commits-return-65251-archive-asf-public=cust-asf.ponee.io@commons.apache.org Fri Nov 23 08:51:24 2018 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx-eu-01.ponee.io (Postfix) with SMTP id F3128180660 for ; Fri, 23 Nov 2018 08:51:23 +0100 (CET) Received: (qmail 74464 invoked by uid 500); 23 Nov 2018 07:51:23 -0000 Mailing-List: contact commits-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@commons.apache.org Delivered-To: mailing list commits@commons.apache.org Received: (qmail 74455 invoked by uid 99); 23 Nov 2018 07:51:23 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 23 Nov 2018 07:51:23 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id DE3C5E11A4; Fri, 23 Nov 2018 07:51:22 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: ggregory@apache.org To: commits@commons.apache.org Message-Id: <79477ec23aea4b5d8c67fa2b279c986a@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: commons-collections git commit: [COLLECTIONS-703] The PassiveExpiringMap#put() method should return the previous record only if not expired. Date: Fri, 23 Nov 2018 07:51:22 +0000 (UTC) Repository: commons-collections Updated Branches: refs/heads/master c15be5398 -> 26bebdafe [COLLECTIONS-703] The PassiveExpiringMap#put() method should return the previous record only if not expired. Project: http://git-wip-us.apache.org/repos/asf/commons-collections/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-collections/commit/26bebdaf Tree: http://git-wip-us.apache.org/repos/asf/commons-collections/tree/26bebdaf Diff: http://git-wip-us.apache.org/repos/asf/commons-collections/diff/26bebdaf Branch: refs/heads/master Commit: 26bebdafe451c5992398c8c69e06de11845e6666 Parents: c15be53 Author: Tomas Tulka Authored: Fri Nov 23 00:51:19 2018 -0700 Committer: Gary Gregory Committed: Fri Nov 23 00:51:19 2018 -0700 ---------------------------------------------------------------------- src/changes/changes.xml | 3 ++ .../collections4/map/PassiveExpiringMap.java | 3 ++ .../map/PassiveExpiringMapTest.java | 30 +++++++++++++------- 3 files changed, 26 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-collections/blob/26bebdaf/src/changes/changes.xml ---------------------------------------------------------------------- diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 4881baa..28a02c9 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -39,6 +39,9 @@ StackOverflowError in SetUniqueList.add() when it receives itself. + + The PassiveExpiringMap#put() method should return the previous record only if not expired. + http://git-wip-us.apache.org/repos/asf/commons-collections/blob/26bebdaf/src/main/java/org/apache/commons/collections4/map/PassiveExpiringMap.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/collections4/map/PassiveExpiringMap.java b/src/main/java/org/apache/commons/collections4/map/PassiveExpiringMap.java index d8565e6..76a0d84 100644 --- a/src/main/java/org/apache/commons/collections4/map/PassiveExpiringMap.java +++ b/src/main/java/org/apache/commons/collections4/map/PassiveExpiringMap.java @@ -430,6 +430,9 @@ public class PassiveExpiringMap */ @Override public V put(final K key, final V value) { + // remove the previous record + removeIfExpired(key, now()); + // record expiration time of new entry final long expirationTime = expiringPolicy.expirationTime(key, value); expirationMap.put(key, Long.valueOf(expirationTime)); http://git-wip-us.apache.org/repos/asf/commons-collections/blob/26bebdaf/src/test/java/org/apache/commons/collections4/map/PassiveExpiringMapTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/collections4/map/PassiveExpiringMapTest.java b/src/test/java/org/apache/commons/collections4/map/PassiveExpiringMapTest.java index f09105c..0dee598 100644 --- a/src/test/java/org/apache/commons/collections4/map/PassiveExpiringMapTest.java +++ b/src/test/java/org/apache/commons/collections4/map/PassiveExpiringMapTest.java @@ -181,6 +181,15 @@ public class PassiveExpiringMapTest extends AbstractMapTest { assertEquals(3, m.entrySet().size()); } + public void testExpiration() { + validateExpiration(new PassiveExpiringMap(500), 500); + validateExpiration(new PassiveExpiringMap(1000), 1000); + validateExpiration(new PassiveExpiringMap<>( + new PassiveExpiringMap.ConstantTimeToLiveExpirationPolicy(500)), 500); + validateExpiration(new PassiveExpiringMap<>( + new PassiveExpiringMap.ConstantTimeToLiveExpirationPolicy(1, TimeUnit.SECONDS)), 1000); + } + public void testGet() { final Map m = makeTestMap(); assertNull(m.get(Integer.valueOf(1))); @@ -208,6 +217,16 @@ public class PassiveExpiringMapTest extends AbstractMapTest { assertEquals(3, m.keySet().size()); } + public void testPut() { + final Map m = makeTestMap(); + assertNull(m.put(Integer.valueOf(1), "ONE")); + assertEquals("two", m.put(Integer.valueOf(2), "TWO")); + assertNull(m.put(Integer.valueOf(3), "THREE")); + assertEquals("four", m.put(Integer.valueOf(4), "FOUR")); + assertNull(m.put(Integer.valueOf(5), "FIVE")); + assertEquals("six", m.put(Integer.valueOf(6), "SIX")); + } + public void testSize() { final Map m = makeTestMap(); assertEquals(3, m.size()); @@ -225,15 +244,6 @@ public class PassiveExpiringMapTest extends AbstractMapTest { assertNull(m.get("a")); } - public void testExpiration() { - validateExpiration(new PassiveExpiringMap(500), 500); - validateExpiration(new PassiveExpiringMap(1000), 1000); - validateExpiration(new PassiveExpiringMap<>( - new PassiveExpiringMap.ConstantTimeToLiveExpirationPolicy(500)), 500); - validateExpiration(new PassiveExpiringMap<>( - new PassiveExpiringMap.ConstantTimeToLiveExpirationPolicy(1, TimeUnit.SECONDS)), 1000); - } - private void validateExpiration(final Map map, final long timeout) { map.put("a", "b"); @@ -247,5 +257,5 @@ public class PassiveExpiringMapTest extends AbstractMapTest { assertNull(map.get("a")); } - + }