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 02:23:00 UTC
groovy git commit: Refine the `clear` method of `CommonCache`
Repository: groovy
Updated Branches:
refs/heads/master 380c79d98 -> 22e45ebe2
Refine 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/22e45ebe
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/22e45ebe
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/22e45ebe
Branch: refs/heads/master
Commit: 22e45ebe2ab9a7524ccde311fed8f01c7ff3b987
Parents: 380c79d
Author: sunlan <su...@apache.org>
Authored: Wed Dec 13 10:22:54 2017 +0800
Committer: sunlan <su...@apache.org>
Committed: Wed Dec 13 10:22:54 2017 +0800
----------------------------------------------------------------------
src/main/groovy/lang/GroovyClassLoader.java | 7 ++++---
src/main/org/codehaus/groovy/runtime/memoize/CommonCache.java | 7 +++----
.../groovy/runtime/memoize/ConcurrentCommonCache.java | 2 +-
.../org/codehaus/groovy/runtime/memoize/EvictableCache.java | 5 +++--
.../org/codehaus/groovy/runtime/memoize/CommonCacheTest.java | 2 +-
.../groovy/runtime/memoize/ConcurrentCommonCacheTest.java | 2 +-
6 files changed, 13 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/22e45ebe/src/main/groovy/lang/GroovyClassLoader.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/lang/GroovyClassLoader.java b/src/main/groovy/lang/GroovyClassLoader.java
index 37480cb..8581879 100644
--- a/src/main/groovy/lang/GroovyClassLoader.java
+++ b/src/main/groovy/lang/GroovyClassLoader.java
@@ -72,6 +72,7 @@ import java.security.ProtectionDomain;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
+import java.util.Map;
/**
* A ClassLoader which can load Groovy classes. The loaded classes are cached,
@@ -1022,17 +1023,17 @@ public class GroovyClassLoader extends URLClassLoader {
* @see #removeClassCacheEntry(String)
*/
public void clearCache() {
- Collection<Class> classesToClear = classCache.clear();
+ Map<String, Class> clearedClasses = classCache.clear();
sourceCache.clear();
- for (Class c : classesToClear) {
+ for (Map.Entry<String, Class> entry : clearedClasses.entrySet()) {
// Another Thread may be using an instance of this class
// (for the first time) requiring a ClassInfo lock and
// classloading which would require a lock on classCache.
// The following locks on ClassInfo and to avoid deadlock
// should not be done with a classCache lock.
- InvokerHelper.removeClass(c);
+ InvokerHelper.removeClass(entry.getValue());
}
}
http://git-wip-us.apache.org/repos/asf/groovy/blob/22e45ebe/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 9286a3f..4659459 100644
--- a/src/main/org/codehaus/groovy/runtime/memoize/CommonCache.java
+++ b/src/main/org/codehaus/groovy/runtime/memoize/CommonCache.java
@@ -21,7 +21,6 @@ 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,11 +181,11 @@ public class CommonCache<K, V> implements EvictableCache<K, V> {
* {@inheritDoc}
*/
@Override
- public Collection<V> clear() {
- Collection<V> values = new ArrayList<V>(map.values()); // we must create a new list, or the method will always return empty collection.
+ public Map<K, V> clear() {
+ Map<K, V> result = new LinkedHashMap<K, V>(map);
map.clear();
- return values;
+ return result;
}
/**
http://git-wip-us.apache.org/repos/asf/groovy/blob/22e45ebe/src/main/org/codehaus/groovy/runtime/memoize/ConcurrentCommonCache.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/runtime/memoize/ConcurrentCommonCache.java b/src/main/org/codehaus/groovy/runtime/memoize/ConcurrentCommonCache.java
index 3854b12..9eae7cd 100644
--- a/src/main/org/codehaus/groovy/runtime/memoize/ConcurrentCommonCache.java
+++ b/src/main/org/codehaus/groovy/runtime/memoize/ConcurrentCommonCache.java
@@ -215,7 +215,7 @@ public class ConcurrentCommonCache<K, V> extends CommonCache<K, V> {
* {@inheritDoc}
*/
@Override
- public Collection<V> clear() {
+ public Map<K, V> clear() {
writeLock.lock();
try {
return super.clear();
http://git-wip-us.apache.org/repos/asf/groovy/blob/22e45ebe/src/main/org/codehaus/groovy/runtime/memoize/EvictableCache.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/runtime/memoize/EvictableCache.java b/src/main/org/codehaus/groovy/runtime/memoize/EvictableCache.java
index 67bb794..34a0b8d 100644
--- a/src/main/org/codehaus/groovy/runtime/memoize/EvictableCache.java
+++ b/src/main/org/codehaus/groovy/runtime/memoize/EvictableCache.java
@@ -19,6 +19,7 @@
package org.codehaus.groovy.runtime.memoize;
import java.util.Collection;
+import java.util.Map;
import java.util.Set;
/**
@@ -38,9 +39,9 @@ public interface EvictableCache<K, V> extends MemoizeCache<K, V> {
/**
* Clear the cache
- * @return returns cleared values
+ * @return returns the content of the cleared map
*/
- Collection<V> clear();
+ Map<K, V> clear();
/**
* Try to get the value from cache.
http://git-wip-us.apache.org/repos/asf/groovy/blob/22e45ebe/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 9ffc129..74defbd 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.clear().toArray(new String[0]));
+ Assert.assertArrayEquals(new String[] {"Daniel", "Male", "Shanghai"}, sc.clear().values().toArray(new String[0]));
}
@Test
http://git-wip-us.apache.org/repos/asf/groovy/blob/22e45ebe/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 e2d4366..44c9ae2 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.clear().toArray(new String[0]));
+ Assert.assertArrayEquals(new String[] {"Daniel", "Male", "Shanghai"}, sc.clear().values().toArray(new String[0]));
}
@Test