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

groovy git commit: ConversionHandler minor improvements (closes #237)

Repository: groovy
Updated Branches:
  refs/heads/master f2a2fc059 -> 606891d85


ConversionHandler minor improvements (closes #237)


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

Branch: refs/heads/master
Commit: 606891d85bedbda8139882f41eef531f5752d99f
Parents: f2a2fc0
Author: John Wagenleitner <jw...@apache.org>
Authored: Sun Jan 10 10:20:49 2016 -0800
Committer: John Wagenleitner <jw...@apache.org>
Committed: Mon Jan 11 17:08:31 2016 -0800

----------------------------------------------------------------------
 .../groovy/runtime/ConversionHandler.java         | 18 ++++++++++++------
 .../codehaus/groovy/runtime/ConvertedClosure.java |  5 +++--
 .../org/codehaus/groovy/runtime/ConvertedMap.java |  3 +++
 3 files changed, 18 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/groovy/blob/606891d8/src/main/org/codehaus/groovy/runtime/ConversionHandler.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/runtime/ConversionHandler.java b/src/main/org/codehaus/groovy/runtime/ConversionHandler.java
index 929642d..8bf7c69 100644
--- a/src/main/org/codehaus/groovy/runtime/ConversionHandler.java
+++ b/src/main/org/codehaus/groovy/runtime/ConversionHandler.java
@@ -42,11 +42,15 @@ import java.util.concurrent.ConcurrentHashMap;
  * @author <a href="mailto:blackdrag@gmx.org">Jochen Theodorou</a>
  */
 public abstract class ConversionHandler implements InvocationHandler, Serializable {
-    private Object delegate;
+    private final Object delegate;
     private static final long serialVersionUID = 1162833717190835227L;
-    private ConcurrentHashMap handleCache;
+    private final ConcurrentHashMap<Method, Object> handleCache;
     {
-        if (VMPluginFactory.getPlugin().getVersion()>=7) handleCache = new ConcurrentHashMap();
+        if (VMPluginFactory.getPlugin().getVersion() >= 7) {
+            handleCache = new ConcurrentHashMap<Method, Object>(16, 0.9f, 2);
+        } else {
+            handleCache = null;
+        }
     }
 
     private MetaClass metaClass;
@@ -58,7 +62,9 @@ public abstract class ConversionHandler implements InvocationHandler, Serializab
      * @throws IllegalArgumentException if the given delegate is null
      */
     public ConversionHandler(Object delegate) {
-        if (delegate == null) throw new IllegalArgumentException("delegate must not be null");
+        if (delegate == null) {
+            throw new IllegalArgumentException("delegate must not be null");
+        }
         this.delegate = delegate;
     }
 
@@ -96,8 +102,8 @@ public abstract class ConversionHandler implements InvocationHandler, Serializab
      * @see InvocationHandler#invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])
      */
     public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
-        VMPlugin plugin = VMPluginFactory.getPlugin();
-        if (plugin.getVersion()>=7 && isDefaultMethod(method)) {
+        if (handleCache != null && isDefaultMethod(method)) {
+            VMPlugin plugin = VMPluginFactory.getPlugin();
             Object handle = handleCache.get(method);
             if (handle == null) {
                 handle = plugin.getInvokeSpecialHandle(method, proxy);

http://git-wip-us.apache.org/repos/asf/groovy/blob/606891d8/src/main/org/codehaus/groovy/runtime/ConvertedClosure.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/runtime/ConvertedClosure.java b/src/main/org/codehaus/groovy/runtime/ConvertedClosure.java
index 56211aa..dfc7ea0 100644
--- a/src/main/org/codehaus/groovy/runtime/ConvertedClosure.java
+++ b/src/main/org/codehaus/groovy/runtime/ConvertedClosure.java
@@ -31,7 +31,7 @@ import java.lang.reflect.Method;
  * Jul 27, 2006 3:50:51 PM
  */
 public class ConvertedClosure extends ConversionHandler implements Serializable {
-    private String methodName;
+    private final String methodName;
     private static final long serialVersionUID = 1162833713450835227L;
 
     /**
@@ -46,7 +46,8 @@ public class ConvertedClosure extends ConversionHandler implements Serializable
     public ConvertedClosure(Closure closure) {
         this(closure,null);
     }
-    
+
+    @Override
     public Object invokeCustom(Object proxy, Method method, Object[] args)
     throws Throwable {
         if (methodName!=null && !methodName.equals(method.getName())) return null;

http://git-wip-us.apache.org/repos/asf/groovy/blob/606891d8/src/main/org/codehaus/groovy/runtime/ConvertedMap.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/runtime/ConvertedMap.java b/src/main/org/codehaus/groovy/runtime/ConvertedMap.java
index 81a76a7..811f269 100644
--- a/src/main/org/codehaus/groovy/runtime/ConvertedMap.java
+++ b/src/main/org/codehaus/groovy/runtime/ConvertedMap.java
@@ -40,6 +40,7 @@ public class ConvertedMap extends ConversionHandler {
         super(closures);
     }
 
+    @Override
     public Object invokeCustom(Object proxy, Method method, Object[] args)
             throws Throwable {
         Map m = (Map) getDelegate();
@@ -53,10 +54,12 @@ public class ConvertedMap extends ConversionHandler {
         return cl.call(args);
     }
 
+    @Override
     public String toString() {
         return DefaultGroovyMethods.toString(getDelegate());
     }
 
+    @Override
     protected boolean checkMethod(Method method) {
         return isCoreObjectMethod(method);
     }