You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2017/12/13 01:41:53 UTC

groovy git commit: Fix the `clear` method of `CommonCache`

Repository: groovy
Updated Branches:
  refs/heads/master a42dc880e -> 380c79d98


Fix the `clear` method of `CommonCache`


Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/380c79d9
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/380c79d9
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/380c79d9

Branch: refs/heads/master
Commit: 380c79d98a2ecf692f11d91eda0cb28ca18be23d
Parents: a42dc88
Author: sunlan <su...@apache.org>
Authored: Wed Dec 13 09:41:15 2017 +0800
Committer: sunlan <su...@apache.org>
Committed: Wed Dec 13 09:41:15 2017 +0800

----------------------------------------------------------------------
 src/main/org/codehaus/groovy/runtime/memoize/CommonCache.java     | 3 ++-
 src/test/org/codehaus/groovy/runtime/memoize/CommonCacheTest.java | 2 +-
 .../groovy/runtime/memoize/ConcurrentCommonCacheTest.java         | 2 +-
 3 files changed, 4 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/groovy/blob/380c79d9/src/main/org/codehaus/groovy/runtime/memoize/CommonCache.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/runtime/memoize/CommonCache.java b/src/main/org/codehaus/groovy/runtime/memoize/CommonCache.java
index e698535..9286a3f 100644
--- a/src/main/org/codehaus/groovy/runtime/memoize/CommonCache.java
+++ b/src/main/org/codehaus/groovy/runtime/memoize/CommonCache.java
@@ -21,6 +21,7 @@ package org.codehaus.groovy.runtime.memoize;
 
 import java.lang.ref.SoftReference;
 import java.lang.ref.WeakReference;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.LinkedHashMap;
 import java.util.LinkedList;
@@ -182,7 +183,7 @@ public class CommonCache<K, V> implements EvictableCache<K, V> {
      */
     @Override
     public Collection<V> clear() {
-        Collection<V> values = map.values();
+        Collection<V> values = new ArrayList<V>(map.values()); // we must create a new list, or the method will always return empty collection.
         map.clear();
 
         return values;

http://git-wip-us.apache.org/repos/asf/groovy/blob/380c79d9/src/test/org/codehaus/groovy/runtime/memoize/CommonCacheTest.java
----------------------------------------------------------------------
diff --git a/src/test/org/codehaus/groovy/runtime/memoize/CommonCacheTest.java b/src/test/org/codehaus/groovy/runtime/memoize/CommonCacheTest.java
index 2b32c4a..9ffc129 100644
--- a/src/test/org/codehaus/groovy/runtime/memoize/CommonCacheTest.java
+++ b/src/test/org/codehaus/groovy/runtime/memoize/CommonCacheTest.java
@@ -156,7 +156,7 @@ public class CommonCacheTest {
                         )
                 );
 
-        Assert.assertArrayEquals(new String[] {"Daniel", "Male", "Shanghai"}, sc.values().toArray(new String[0]));
+        Assert.assertArrayEquals(new String[] {"Daniel", "Male", "Shanghai"}, sc.clear().toArray(new String[0]));
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/groovy/blob/380c79d9/src/test/org/codehaus/groovy/runtime/memoize/ConcurrentCommonCacheTest.java
----------------------------------------------------------------------
diff --git a/src/test/org/codehaus/groovy/runtime/memoize/ConcurrentCommonCacheTest.java b/src/test/org/codehaus/groovy/runtime/memoize/ConcurrentCommonCacheTest.java
index 340c286..e2d4366 100644
--- a/src/test/org/codehaus/groovy/runtime/memoize/ConcurrentCommonCacheTest.java
+++ b/src/test/org/codehaus/groovy/runtime/memoize/ConcurrentCommonCacheTest.java
@@ -155,7 +155,7 @@ public class ConcurrentCommonCacheTest {
                         )
                 );
 
-        Assert.assertArrayEquals(new String[] {"Daniel", "Male", "Shanghai"}, sc.values().toArray(new String[0]));
+        Assert.assertArrayEquals(new String[] {"Daniel", "Male", "Shanghai"}, sc.clear().toArray(new String[0]));
     }
 
     @Test