Repository: groovy
Updated Branches:
  refs/heads/master 0e055fb24 -> b02d2f57c


Minor refactoring


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

Branch: refs/heads/master
Commit: b02d2f57c09ba6ba46553ed77aff191ec9ab274e
Parents: 0e055fb
Author: sunlan <[email protected]>
Authored: Sat May 20 22:34:30 2017 +0800
Committer: sunlan <[email protected]>
Committed: Sat May 20 22:35:21 2017 +0800

----------------------------------------------------------------------
 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/b02d2f57/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/b02d2f57/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 763d4e5..c0f00c6 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/b02d2f57/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 2930f26..451cff8 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;
@@ -3905,18 +3906,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/b02d2f57/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 a45e36c..c3fb287 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;
@@ -44,12 +45,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/b02d2f57/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/b02d2f57/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/b02d2f57/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 739a737..8903513 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\"'])");

Reply via email to