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 2017/05/26 00:04:54 UTC

[3/9] groovy git commit: Minor refactoring

Minor refactoring


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

Branch: refs/heads/GROOVY_2_6_X
Commit: 1269bcc62dc2fef5044b80e9fb1ab54d19d87fb8
Parents: 4e84d7e
Author: sunlan <su...@apache.org>
Authored: Sat May 20 22:34:30 2017 +0800
Committer: paulk <pa...@asert.com.au>
Committed: Fri May 26 10:04:24 2017 +1000

----------------------------------------------------------------------
 src/main/org/apache/groovy/util/Maps.java       | 28 ++++++++++++++
 .../groovy/control/CompilerConfiguration.java   | 15 ++++----
 .../apache/groovy/parser/antlr4/AstBuilder.java | 23 ++++++------
 .../groovy/parser/antlr4/ModifierManager.java   | 11 +++---
 .../groovy/parser/antlr4/ModifierNode.java      | 39 ++++++++++----------
 .../parser/antlr4/internal/AtnManager.java      | 12 +++---
 .../groovy/parser/antlr4/util/StringUtils.java  | 17 ++++-----
 7 files changed, 84 insertions(+), 61 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/groovy/blob/1269bcc6/src/main/org/apache/groovy/util/Maps.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/groovy/util/Maps.java b/src/main/org/apache/groovy/util/Maps.java
new file mode 100644
index 0000000..e94005c
--- /dev/null
+++ b/src/main/org/apache/groovy/util/Maps.java
@@ -0,0 +1,28 @@
+package org.apache.groovy.util;
+
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * Map utilities.
+ */
+public abstract class Maps {
+    public static Map of(Object... args) {
+        int length = args.length;
+
+        if (0 != length % 2) {
+            throw new IllegalArgumentException("the length of arguments should be a power of 2");
+        }
+
+        Map map = new LinkedHashMap();
+
+        for (int i = 0, n = length / 2; i < n; i++) {
+            int index = i * 2;
+
+            map.put(args[index], args[index + 1]);
+        }
+
+        return Collections.unmodifiableMap(map);
+    }
+}

http://git-wip-us.apache.org/repos/asf/groovy/blob/1269bcc6/src/main/org/codehaus/groovy/control/CompilerConfiguration.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/control/CompilerConfiguration.java b/src/main/org/codehaus/groovy/control/CompilerConfiguration.java
index 9ea99e6..17ac7cf 100644
--- a/src/main/org/codehaus/groovy/control/CompilerConfiguration.java
+++ b/src/main/org/codehaus/groovy/control/CompilerConfiguration.java
@@ -18,6 +18,7 @@
  */
 package org.codehaus.groovy.control;
 
+import org.apache.groovy.util.Maps;
 import org.codehaus.groovy.control.customizers.CompilationCustomizer;
 import org.codehaus.groovy.control.io.NullWriter;
 import org.codehaus.groovy.control.messages.WarningMessage;
@@ -72,13 +73,13 @@ public class CompilerConfiguration {
     /**
      * JDK version to bytecode version mapping
      */
-    public static final Map<String, Integer> JDK_TO_BYTECODE_VERSION_MAP = Collections.unmodifiableMap(new LinkedHashMap<String, Integer>() {{
-        put(JDK4, Opcodes.V1_4);
-        put(JDK5, Opcodes.V1_5);
-        put(JDK6, Opcodes.V1_6);
-        put(JDK7, Opcodes.V1_7);
-        put(JDK8, Opcodes.V1_8);
-    }});
+    public static final Map<String, Integer> JDK_TO_BYTECODE_VERSION_MAP = Maps.of(
+            JDK4, Opcodes.V1_4,
+            JDK5, Opcodes.V1_5,
+            JDK6, Opcodes.V1_6,
+            JDK7, Opcodes.V1_7,
+            JDK8, Opcodes.V1_8
+    );
 
     /** An array of the valid targetBytecode values **/
     public static final String[] ALLOWED_JDKS = JDK_TO_BYTECODE_VERSION_MAP.keySet().toArray(new String[0]);

http://git-wip-us.apache.org/repos/asf/groovy/blob/1269bcc6/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
index f50af1c..79b3d90 100644
--- a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
+++ b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
@@ -32,6 +32,7 @@ import org.antlr.v4.runtime.tree.TerminalNode;
 import org.apache.groovy.parser.antlr4.internal.AtnManager;
 import org.apache.groovy.parser.antlr4.internal.DescriptiveErrorStrategy;
 import org.apache.groovy.parser.antlr4.util.StringUtils;
+import org.apache.groovy.util.Maps;
 import org.codehaus.groovy.GroovyBugError;
 import org.codehaus.groovy.antlr.EnumHelper;
 import org.codehaus.groovy.ast.ASTNode;
@@ -3984,18 +3985,16 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov
         }
     }
 
-    private static final Map<ClassNode, Object> TYPE_DEFAULT_VALUE_MAP = Collections.unmodifiableMap(new HashMap<ClassNode, Object>() {
-        {
-            this.put(ClassHelper.int_TYPE, 0);
-            this.put(ClassHelper.long_TYPE, 0L);
-            this.put(ClassHelper.double_TYPE, 0.0D);
-            this.put(ClassHelper.float_TYPE, 0.0F);
-            this.put(ClassHelper.short_TYPE, (short) 0);
-            this.put(ClassHelper.byte_TYPE, (byte) 0);
-            this.put(ClassHelper.char_TYPE, (char) 0);
-            this.put(ClassHelper.boolean_TYPE, Boolean.FALSE);
-        }
-    });
+    private static final Map<ClassNode, Object> TYPE_DEFAULT_VALUE_MAP = Maps.of(
+            ClassHelper.int_TYPE, 0,
+            ClassHelper.long_TYPE, 0L,
+            ClassHelper.double_TYPE, 0.0D,
+            ClassHelper.float_TYPE, 0.0F,
+            ClassHelper.short_TYPE, (short) 0,
+            ClassHelper.byte_TYPE, (byte) 0,
+            ClassHelper.char_TYPE, (char) 0,
+            ClassHelper.boolean_TYPE, Boolean.FALSE
+    );
 
     private Object findDefaultValueByType(ClassNode type) {
         return TYPE_DEFAULT_VALUE_MAP.get(type);

http://git-wip-us.apache.org/repos/asf/groovy/blob/1269bcc6/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/ModifierManager.java
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/ModifierManager.java b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/ModifierManager.java
index 23ce68e..22d6d69 100644
--- a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/ModifierManager.java
+++ b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/ModifierManager.java
@@ -18,6 +18,7 @@
  */
 package org.apache.groovy.parser.antlr4;
 
+import org.apache.groovy.util.Maps;
 import org.codehaus.groovy.ast.AnnotatedNode;
 import org.codehaus.groovy.ast.AnnotationNode;
 import org.codehaus.groovy.ast.ConstructorNode;
@@ -45,12 +46,10 @@ import static org.codehaus.groovy.runtime.DefaultGroovyMethods.asBoolean;
  * Created by Daniel.Sun on 2016/08/27.
  */
 class ModifierManager {
-    private static final Map<Class, List<Integer>> INVALID_MODIFIERS_MAP = Collections.unmodifiableMap(new HashMap<Class, List<Integer>>() {
-        {
-            put(ConstructorNode.class, Arrays.asList(STATIC, FINAL, ABSTRACT, NATIVE));
-            put(MethodNode.class, Arrays.asList(VOLATILE/*, TRANSIENT*/));
-        }
-    });
+    private static final Map<Class, List<Integer>> INVALID_MODIFIERS_MAP = Maps.of(
+            ConstructorNode.class, Arrays.asList(STATIC, FINAL, ABSTRACT, NATIVE),
+            MethodNode.class, Arrays.asList(VOLATILE/*, TRANSIENT*/)
+    );
     private AstBuilder astBuilder;
     private List<ModifierNode> modifierNodeList;
 

http://git-wip-us.apache.org/repos/asf/groovy/blob/1269bcc6/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/ModifierNode.java
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/ModifierNode.java b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/ModifierNode.java
index 5d1007b..65a2f31 100644
--- a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/ModifierNode.java
+++ b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/ModifierNode.java
@@ -18,6 +18,7 @@
  */
 package org.apache.groovy.parser.antlr4;
 
+import org.apache.groovy.util.Maps;
 import org.codehaus.groovy.ast.ASTNode;
 import org.codehaus.groovy.ast.AnnotationNode;
 import org.objectweb.asm.Opcodes;
@@ -43,26 +44,24 @@ public class ModifierNode extends ASTNode {
     private boolean repeatable;
 
     public static final int ANNOTATION_TYPE = -999;
-    public static final Map<Integer, Integer> MODIFIER_OPCODE_MAP = Collections.unmodifiableMap(new HashMap<Integer, Integer>() {
-        {
-            put(ANNOTATION_TYPE, 0);
-            put(DEF, 0);
-
-            put(NATIVE, Opcodes.ACC_NATIVE);
-            put(SYNCHRONIZED, Opcodes.ACC_SYNCHRONIZED);
-            put(TRANSIENT, Opcodes.ACC_TRANSIENT);
-            put(VOLATILE, Opcodes.ACC_VOLATILE);
-
-            put(PUBLIC, Opcodes.ACC_PUBLIC);
-            put(PROTECTED, Opcodes.ACC_PROTECTED);
-            put(PRIVATE, Opcodes.ACC_PRIVATE);
-            put(STATIC, Opcodes.ACC_STATIC);
-            put(ABSTRACT, Opcodes.ACC_ABSTRACT);
-            put(FINAL, Opcodes.ACC_FINAL);
-            put(STRICTFP, Opcodes.ACC_STRICT);
-            put(DEFAULT, 0); // no flag for specifying a default method in the JVM spec, hence no ACC_DEFAULT flag in ASM
-        }
-    });
+    public static final Map<Integer, Integer> MODIFIER_OPCODE_MAP = Maps.of(
+            ANNOTATION_TYPE, 0,
+            DEF, 0,
+
+            NATIVE, Opcodes.ACC_NATIVE,
+            SYNCHRONIZED, Opcodes.ACC_SYNCHRONIZED,
+            TRANSIENT, Opcodes.ACC_TRANSIENT,
+            VOLATILE, Opcodes.ACC_VOLATILE,
+
+            PUBLIC, Opcodes.ACC_PUBLIC,
+            PROTECTED, Opcodes.ACC_PROTECTED,
+            PRIVATE, Opcodes.ACC_PRIVATE,
+            STATIC, Opcodes.ACC_STATIC,
+            ABSTRACT, Opcodes.ACC_ABSTRACT,
+            FINAL, Opcodes.ACC_FINAL,
+            STRICTFP, Opcodes.ACC_STRICT,
+            DEFAULT, 0 // no flag for specifying a default method in the JVM spec, hence no ACC_DEFAULT flag in ASM
+    );
 
     public ModifierNode(Integer type) {
         this.type = type;

http://git-wip-us.apache.org/repos/asf/groovy/blob/1269bcc6/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/internal/AtnManager.java
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/internal/AtnManager.java b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/internal/AtnManager.java
index 02cc152..11dfdb5 100644
--- a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/internal/AtnManager.java
+++ b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/internal/AtnManager.java
@@ -21,6 +21,7 @@ package org.apache.groovy.parser.antlr4.internal;
 import org.antlr.v4.runtime.atn.ATN;
 import org.apache.groovy.parser.antlr4.GroovyLangLexer;
 import org.apache.groovy.parser.antlr4.GroovyLangParser;
+import org.apache.groovy.util.Maps;
 
 import java.util.Collections;
 import java.util.HashMap;
@@ -40,13 +41,10 @@ public class AtnManager {
     private static final int CACHE_THRESHOLD;
     private final Class ownerClass;
     private final ATN atn;
-    private static final Map<Class, AtnWrapper> ATN_MAP =
-            Collections.unmodifiableMap(new HashMap<Class, AtnWrapper>() {
-                {
-                    put(GroovyLangLexer.class, new AtnWrapper(GroovyLangLexer._ATN));
-                    put(GroovyLangParser.class, new AtnWrapper(GroovyLangParser._ATN));
-                }
-            });
+    private static final Map<Class, AtnWrapper> ATN_MAP = Maps.of(
+            GroovyLangLexer.class, new AtnWrapper(GroovyLangLexer._ATN),
+            GroovyLangParser.class, new AtnWrapper(GroovyLangParser._ATN)
+    );
 
     static {
         int t = 50;

http://git-wip-us.apache.org/repos/asf/groovy/blob/1269bcc6/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/util/StringUtils.java
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/util/StringUtils.java b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/util/StringUtils.java
index 980facb..5b2a311 100644
--- a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/util/StringUtils.java
+++ b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/util/StringUtils.java
@@ -19,6 +19,7 @@
 package org.apache.groovy.parser.antlr4.util;
 
 import groovy.lang.Closure;
+import org.apache.groovy.util.Maps;
 import org.codehaus.groovy.runtime.StringGroovyMethods;
 
 import java.util.HashMap;
@@ -58,15 +59,13 @@ public class StringUtils {
 	    });
     }
 
-    private static Map<Character, Character> STANDARD_ESCAPES = new HashMap<Character, Character>() {
-		{
-			this.put('b', '\b');
-			this.put('t', '\t');
-			this.put('n', '\n');
-			this.put('f', '\f');
-			this.put('r', '\r');
-		}
-	};
+    private static Map<Character, Character> STANDARD_ESCAPES = Maps.of(
+			'b', '\b',
+			't', '\t',
+			'n', '\n',
+			'f', '\f',
+			'r', '\r'
+	);
 
 	public static String replaceStandardEscapes(String text) {
 	    Pattern p = Pattern.compile("(\\\\*)\\\\([btnfr\"'])");