You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by pa...@apache.org on 2015/11/18 18:40:15 UTC
[1/2] incubator-groovy git commit: The usage of the PROP_NAMES
HashMap was not thread safe because the access was synchronized only for
"put" operations and not for "get" operations: since HashMap is not thread
safe all access to get/put operations must
Repository: incubator-groovy
Updated Branches:
refs/heads/master b1948e89f -> 67b87a359
The usage of the PROP_NAMES HashMap was not thread safe because the access was synchronized only for "put" operations and not for "get" operations: since HashMap is not thread safe all access to get/put operations must be checked. Reimplemented in a thread safe way by leveraging a ConcurrentHashMap: in this way the synchronized block is no more required. (closes #8)
Project: http://git-wip-us.apache.org/repos/asf/incubator-groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-groovy/commit/db87d008
Tree: http://git-wip-us.apache.org/repos/asf/incubator-groovy/tree/db87d008
Diff: http://git-wip-us.apache.org/repos/asf/incubator-groovy/diff/db87d008
Branch: refs/heads/master
Commit: db87d00892dccee1c18a779cbd54e14d753c9284
Parents: b1948e8
Author: Jacopo Cappellato <ja...@gmail.com>
Authored: Fri May 1 15:13:36 2015 +0200
Committer: pascalschumacher <pa...@gmx.net>
Committed: Wed Nov 18 18:38:40 2015 +0100
----------------------------------------------------------------------
src/main/groovy/lang/MetaClassImpl.java | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-groovy/blob/db87d008/src/main/groovy/lang/MetaClassImpl.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/lang/MetaClassImpl.java b/src/main/groovy/lang/MetaClassImpl.java
index 8e2912f..611cebf 100644
--- a/src/main/groovy/lang/MetaClassImpl.java
+++ b/src/main/groovy/lang/MetaClassImpl.java
@@ -89,6 +89,8 @@ import java.security.AccessController;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
/**
* Allows methods to be dynamically added to existing classes at runtime
@@ -2418,20 +2420,18 @@ public class MetaClassImpl implements MetaClass, MutableMetaClass {
}
}
- private static final Map<String, String> PROP_NAMES = new HashMap<String, String>(1024);
+ private static final ConcurrentMap<String, String> PROP_NAMES = new ConcurrentHashMap<String, String>(1024);
private String getPropName(String methodName) {
String name = PROP_NAMES.get(methodName);
- if (name != null)
- return name;
-
- synchronized (PROP_NAMES) {
+ if (name == null) {
// assume "is" or "[gs]et"
String stripped = methodName.startsWith("is") ? methodName.substring(2) : methodName.substring(3);
String propName = java.beans.Introspector.decapitalize(stripped);
- PROP_NAMES.put(methodName, propName);
- return propName;
+ PROP_NAMES.putIfAbsent(methodName, propName);
+ name = PROP_NAMES.get(methodName);
}
+ return name;
}
private MetaProperty makeReplacementMetaProperty(MetaProperty mp, String propName, boolean isGetter, MetaMethod propertyMethod) {
[2/2] incubator-groovy git commit: Removed useless synchronized block
and comment; they were probably a leftover after commit 17ee95e.
Posted by pa...@apache.org.
Removed useless synchronized block and comment; they were probably a leftover after commit 17ee95e.
Project: http://git-wip-us.apache.org/repos/asf/incubator-groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-groovy/commit/67b87a35
Tree: http://git-wip-us.apache.org/repos/asf/incubator-groovy/tree/67b87a35
Diff: http://git-wip-us.apache.org/repos/asf/incubator-groovy/diff/67b87a35
Branch: refs/heads/master
Commit: 67b87a3592f13a6281f5b20081c37a66c80079b9
Parents: db87d00
Author: Jacopo Cappellato <ja...@gmail.com>
Authored: Fri May 1 14:49:48 2015 +0200
Committer: pascalschumacher <pa...@gmx.net>
Committed: Wed Nov 18 18:39:41 2015 +0100
----------------------------------------------------------------------
src/main/groovy/lang/MetaClassImpl.java | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-groovy/blob/67b87a35/src/main/groovy/lang/MetaClassImpl.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/lang/MetaClassImpl.java b/src/main/groovy/lang/MetaClassImpl.java
index 611cebf..a858161 100644
--- a/src/main/groovy/lang/MetaClassImpl.java
+++ b/src/main/groovy/lang/MetaClassImpl.java
@@ -3116,10 +3116,7 @@ public class MetaClassImpl implements MetaClass, MutableMetaClass {
return method;
}
}
- //log.warning("Creating reflection based dispatcher for: " + aMethod);
- synchronized (aMethod.cachedClass) {
- return aMethod;
- }
+ return aMethod;
}