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 2018/02/18 10:28:35 UTC

[2/2] groovy git commit: Minor refactoring: remove duplicated code of `ClassHelper`

Minor refactoring: remove duplicated code of `ClassHelper`


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

Branch: refs/heads/master
Commit: ee6060bee045631cca608a48fb36c3483aaafec3
Parents: 9699e99
Author: danielsun1106 <re...@hotmail.com>
Authored: Sun Feb 18 18:28:28 2018 +0800
Committer: danielsun1106 <re...@hotmail.com>
Committed: Sun Feb 18 18:28:28 2018 +0800

----------------------------------------------------------------------
 .../org/codehaus/groovy/ast/ClassHelper.java    | 67 +++++++++-----------
 1 file changed, 29 insertions(+), 38 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/groovy/blob/ee6060be/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/codehaus/groovy/ast/ClassHelper.java b/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
index d8ce0d7..8362d8d 100644
--- a/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
+++ b/src/main/java/org/codehaus/groovy/ast/ClassHelper.java
@@ -28,6 +28,7 @@ import groovy.lang.MetaClass;
 import groovy.lang.Range;
 import groovy.lang.Reference;
 import groovy.lang.Script;
+import org.apache.groovy.util.Maps;
 import org.codehaus.groovy.classgen.asm.util.TypeDescriptionUtil;
 import org.codehaus.groovy.runtime.GeneratedClosure;
 import org.codehaus.groovy.runtime.GeneratedLambda;
@@ -248,6 +249,18 @@ public class ClassHelper {
         return makeWithoutCaching(name);
     }
 
+    private static final Map<ClassNode, ClassNode> PRIMARY_TYPE_TO_WRAPPER_TYPE_MAP = Maps.of(
+            boolean_TYPE, Boolean_TYPE,
+            byte_TYPE, Byte_TYPE,
+            char_TYPE, Character_TYPE,
+            short_TYPE, Short_TYPE,
+            int_TYPE, Integer_TYPE,
+            long_TYPE, Long_TYPE,
+            float_TYPE, Float_TYPE,
+            double_TYPE, Double_TYPE,
+            VOID_TYPE, void_WRAPPER_TYPE
+    );
+
     /**
      * Creates a ClassNode containing the wrapper of a ClassNode
      * of primitive type. Any ClassNode representing a primitive
@@ -268,51 +281,29 @@ public class ClassHelper {
     public static ClassNode getWrapper(ClassNode cn) {
         cn = cn.redirect();
         if (!isPrimitiveType(cn)) return cn;
-        if (cn == boolean_TYPE) {
-            return Boolean_TYPE;
-        } else if (cn == byte_TYPE) {
-            return Byte_TYPE;
-        } else if (cn == char_TYPE) {
-            return Character_TYPE;
-        } else if (cn == short_TYPE) {
-            return Short_TYPE;
-        } else if (cn == int_TYPE) {
-            return Integer_TYPE;
-        } else if (cn == long_TYPE) {
-            return Long_TYPE;
-        } else if (cn == float_TYPE) {
-            return Float_TYPE;
-        } else if (cn == double_TYPE) {
-            return Double_TYPE;
-        } else if (cn == VOID_TYPE) {
-            return void_WRAPPER_TYPE;
-        } else {
-            return cn;
+
+        ClassNode result = PRIMARY_TYPE_TO_WRAPPER_TYPE_MAP.get(cn);
+
+        if (null != result) {
+            return result;
         }
+
+        return cn;
     }
 
+    private static final Map<ClassNode, ClassNode> WRAPPER_TYPE_TO_PRIMARY_TYPE_MAP = Maps.inverse(PRIMARY_TYPE_TO_WRAPPER_TYPE_MAP);
+
     public static ClassNode getUnwrapper(ClassNode cn) {
         cn = cn.redirect();
         if (isPrimitiveType(cn)) return cn;
-        if (cn == Boolean_TYPE) {
-            return boolean_TYPE;
-        } else if (cn == Byte_TYPE) {
-            return byte_TYPE;
-        } else if (cn == Character_TYPE) {
-            return char_TYPE;
-        } else if (cn == Short_TYPE) {
-            return short_TYPE;
-        } else if (cn == Integer_TYPE) {
-            return int_TYPE;
-        } else if (cn == Long_TYPE) {
-            return long_TYPE;
-        } else if (cn == Float_TYPE) {
-            return float_TYPE;
-        } else if (cn == Double_TYPE) {
-            return double_TYPE;
-        } else {
-            return cn;
+
+        ClassNode result = WRAPPER_TYPE_TO_PRIMARY_TYPE_MAP.get(cn);
+
+        if (null != result) {
+            return result;
         }
+
+        return cn;
     }