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 2020/02/02 08:44:02 UTC

[groovy] branch master updated: refactor some code into java 8 style (closes #1156)

This is an automated email from the ASF dual-hosted git repository.

paulk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git


The following commit(s) were added to refs/heads/master by this push:
     new 9381aa5  refactor some code into java 8 style (closes #1156)
9381aa5 is described below

commit 9381aa58db42874ca5fede79feef8ae8ed16686f
Author: Ten000hours <50...@qq.com>
AuthorDate: Sat Feb 1 14:28:52 2020 +0800

    refactor some code into java 8 style (closes #1156)
---
 src/main/java/org/apache/groovy/util/Arrays.java   |   3 +-
 .../codehaus/groovy/control/CompilationUnit.java   |   4 +-
 .../groovy/control/CompilerConfiguration.java      |   2 +-
 .../codehaus/groovy/reflection/CachedClass.java    |   2 +-
 .../groovy/runtime/DefaultGroovyMethods.java       | 107 ++++++++++++---------
 .../runtime/memoize/ConcurrentCommonCache.java     |  10 +-
 .../org/codehaus/groovy/tools/GroovyStarter.java   |  57 ++++++-----
 .../ASTTransformationCollectorCodeVisitor.java     |   8 +-
 .../groovy/transform/ASTTransformationVisitor.java |   4 +-
 .../transform/stc/StaticTypeCheckingVisitor.java   |  16 +--
 10 files changed, 113 insertions(+), 100 deletions(-)

diff --git a/src/main/java/org/apache/groovy/util/Arrays.java b/src/main/java/org/apache/groovy/util/Arrays.java
index de3f85e..db928d1 100644
--- a/src/main/java/org/apache/groovy/util/Arrays.java
+++ b/src/main/java/org/apache/groovy/util/Arrays.java
@@ -19,6 +19,7 @@
 package org.apache.groovy.util;
 
 import java.lang.reflect.Array;
+import java.util.Objects;
 
 /**
  * Array utilities.
@@ -40,7 +41,7 @@ public class Arrays {
 
         int resultLength =
                 java.util.Arrays.stream(arrays)
-                        .filter(e -> null != e)
+                        .filter(Objects::nonNull)
                         .map(e -> e.length)
                         .reduce(0, Integer::sum);
         T[] resultArray = (T[]) Array.newInstance(arrays[0].getClass().getComponentType(), resultLength);
diff --git a/src/main/java/org/codehaus/groovy/control/CompilationUnit.java b/src/main/java/org/codehaus/groovy/control/CompilationUnit.java
index 7889a5d..02e4f1c 100644
--- a/src/main/java/org/codehaus/groovy/control/CompilationUnit.java
+++ b/src/main/java/org/codehaus/groovy/control/CompilationUnit.java
@@ -219,9 +219,7 @@ public class CompilationUnit extends ProcessingUnit {
             }
         }, Phases.SEMANTIC_ANALYSIS);
 
-        addPhaseOperation((final SourceUnit source, final GeneratorContext context, final ClassNode classNode) -> {
-            TraitComposer.doExtendTraits(classNode, source, this);
-        }, Phases.CANONICALIZATION);
+        addPhaseOperation((final SourceUnit source, final GeneratorContext context, final ClassNode classNode) -> TraitComposer.doExtendTraits(classNode, source, this), Phases.CANONICALIZATION);
 
         addPhaseOperation(source -> {
             List<ClassNode> classes = source.getAST().getClasses();
diff --git a/src/main/java/org/codehaus/groovy/control/CompilerConfiguration.java b/src/main/java/org/codehaus/groovy/control/CompilerConfiguration.java
index e2faff7..0c1f16e 100644
--- a/src/main/java/org/codehaus/groovy/control/CompilerConfiguration.java
+++ b/src/main/java/org/codehaus/groovy/control/CompilerConfiguration.java
@@ -882,7 +882,7 @@ public class CompilerConfiguration {
     }
 
     public void setScriptExtensions(final Set<String> scriptExtensions) {
-        this.scriptExtensions = Optional.ofNullable(scriptExtensions).orElseGet(() -> new LinkedHashSet<>());
+        this.scriptExtensions = Optional.ofNullable(scriptExtensions).orElseGet(LinkedHashSet::new);
     }
 
     public Set<String> getScriptExtensions() {
diff --git a/src/main/java/org/codehaus/groovy/reflection/CachedClass.java b/src/main/java/org/codehaus/groovy/reflection/CachedClass.java
index 04a3347..0f4314d 100644
--- a/src/main/java/org/codehaus/groovy/reflection/CachedClass.java
+++ b/src/main/java/org/codehaus/groovy/reflection/CachedClass.java
@@ -113,7 +113,7 @@ public class CachedClass {
                 superClass.getMethods(); // populate mopMethods
                 Collections.addAll(mopMethods, superClass.mopMethods);
             }
-            Collections.sort(mopMethods, CachedMethodComparatorByName.INSTANCE);
+            mopMethods.sort(CachedMethodComparatorByName.INSTANCE);
             CachedClass.this.mopMethods = mopMethods.toArray(CachedMethod.EMPTY_ARRAY);
 
             return methods.toArray(CachedMethod.EMPTY_ARRAY);
diff --git a/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java b/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
index 1d91ada..2e42850 100644
--- a/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
+++ b/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
@@ -979,56 +979,67 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
 
         Object[] ans;
         String elemType = arg.getClass().getName();
-        if (elemType.equals("[I")) {
-            int[] ia = (int[]) arg;
-            ans = new Integer[ia.length];
-            for (int i = 0; i < ia.length; i++) {
-                ans[i] = ia[i];
-            }
-        } else if (elemType.equals("[C")) {
-            char[] ca = (char[]) arg;
-            ans = new Character[ca.length];
-            for (int i = 0; i < ca.length; i++) {
-                ans[i] = ca[i];
-            }
-        } else if (elemType.equals("[Z")) {
-            boolean[] ba = (boolean[]) arg;
-            ans = new Boolean[ba.length];
-            for (int i = 0; i < ba.length; i++) {
-                ans[i] = ba[i];
-            }
-        } else if (elemType.equals("[B")) {
-            byte[] ba = (byte[]) arg;
-            ans = new Byte[ba.length];
-            for (int i = 0; i < ba.length; i++) {
-                ans[i] = ba[i];
-            }
-        } else if (elemType.equals("[S")) {
-            short[] sa = (short[]) arg;
-            ans = new Short[sa.length];
-            for (int i = 0; i < sa.length; i++) {
-                ans[i] = sa[i];
-            }
-        } else if (elemType.equals("[F")) {
-            float[] fa = (float[]) arg;
-            ans = new Float[fa.length];
-            for (int i = 0; i < fa.length; i++) {
-                ans[i] = fa[i];
-            }
-        } else if (elemType.equals("[J")) {
-            long[] la = (long[]) arg;
-            ans = new Long[la.length];
-            for (int i = 0; i < la.length; i++) {
-                ans[i] = la[i];
+        switch (elemType) {
+            case "[I":
+                int[] ia = (int[]) arg;
+                ans = new Integer[ia.length];
+                for (int i = 0; i < ia.length; i++) {
+                    ans[i] = ia[i];
+                }
+                break;
+            case "[C":
+                char[] ca = (char[]) arg;
+                ans = new Character[ca.length];
+                for (int i = 0; i < ca.length; i++) {
+                    ans[i] = ca[i];
+                }
+                break;
+            case "[Z": {
+                boolean[] ba = (boolean[]) arg;
+                ans = new Boolean[ba.length];
+                for (int i = 0; i < ba.length; i++) {
+                    ans[i] = ba[i];
+                }
+                break;
             }
-        } else if (elemType.equals("[D")) {
-            double[] da = (double[]) arg;
-            ans = new Double[da.length];
-            for (int i = 0; i < da.length; i++) {
-                ans[i] = da[i];
+            case "[B": {
+                byte[] ba = (byte[]) arg;
+                ans = new Byte[ba.length];
+                for (int i = 0; i < ba.length; i++) {
+                    ans[i] = ba[i];
+                }
+                break;
             }
-        } else {
-            throw new RuntimeException("sprintf(String," + arg + ")");
+            case "[S":
+                short[] sa = (short[]) arg;
+                ans = new Short[sa.length];
+                for (int i = 0; i < sa.length; i++) {
+                    ans[i] = sa[i];
+                }
+                break;
+            case "[F":
+                float[] fa = (float[]) arg;
+                ans = new Float[fa.length];
+                for (int i = 0; i < fa.length; i++) {
+                    ans[i] = fa[i];
+                }
+                break;
+            case "[J":
+                long[] la = (long[]) arg;
+                ans = new Long[la.length];
+                for (int i = 0; i < la.length; i++) {
+                    ans[i] = la[i];
+                }
+                break;
+            case "[D":
+                double[] da = (double[]) arg;
+                ans = new Double[da.length];
+                for (int i = 0; i < da.length; i++) {
+                    ans[i] = da[i];
+                }
+                break;
+            default:
+                throw new RuntimeException("sprintf(String," + arg + ")");
         }
         return sprintf(self, format, ans);
     }
diff --git a/src/main/java/org/codehaus/groovy/runtime/memoize/ConcurrentCommonCache.java b/src/main/java/org/codehaus/groovy/runtime/memoize/ConcurrentCommonCache.java
index 7032889..ace4ae6 100644
--- a/src/main/java/org/codehaus/groovy/runtime/memoize/ConcurrentCommonCache.java
+++ b/src/main/java/org/codehaus/groovy/runtime/memoize/ConcurrentCommonCache.java
@@ -150,12 +150,12 @@ public class ConcurrentCommonCache<K, V> implements EvictableCache<K, V>, ValueC
      */
     @Override
     public Collection<V> values() {
-        return doWithReadLock(c -> c.values());
+        return doWithReadLock(EvictableCache::values);
     }
 
     @Override
     public Set<Entry<K, V>> entrySet() {
-        return doWithReadLock(c -> c.entrySet());
+        return doWithReadLock(Map::entrySet);
     }
 
     /**
@@ -163,7 +163,7 @@ public class ConcurrentCommonCache<K, V> implements EvictableCache<K, V>, ValueC
      */
     @Override
     public Set<K> keys() {
-        return doWithReadLock(c -> c.keys());
+        return doWithReadLock(EvictableCache::keys);
     }
 
     /**
@@ -184,7 +184,7 @@ public class ConcurrentCommonCache<K, V> implements EvictableCache<K, V>, ValueC
      */
     @Override
     public int size() {
-        return doWithReadLock(c -> c.size());
+        return doWithReadLock(EvictableCache::size);
     }
 
     @Override
@@ -218,7 +218,7 @@ public class ConcurrentCommonCache<K, V> implements EvictableCache<K, V>, ValueC
      */
     @Override
     public Map<K, V> clearAll() {
-        return doWithWriteLock(c -> c.clearAll());
+        return doWithWriteLock(EvictableCache::clearAll);
     }
 
     /**
diff --git a/src/main/java/org/codehaus/groovy/tools/GroovyStarter.java b/src/main/java/org/codehaus/groovy/tools/GroovyStarter.java
index c745510..2f3a78d 100644
--- a/src/main/java/org/codehaus/groovy/tools/GroovyStarter.java
+++ b/src/main/java/org/codehaus/groovy/tools/GroovyStarter.java
@@ -42,33 +42,38 @@ public class GroovyStarter {
         // evaluate parameters
         boolean hadMain=false, hadConf=false, hadCP=false;
         int argsOffset = 0;
+        label:
         while (args.length-argsOffset>0 && !(hadMain && hadConf && hadCP)) {
-            if (args[argsOffset].equals("--classpath")) {
-                if (hadCP) break;
-                if (args.length==argsOffset+1) {
-                    exit("classpath parameter needs argument");
-                }
-                lc.addClassPath(args[argsOffset+1]);
-                argsOffset+=2;
-                hadCP=true;
-            } else if (args[argsOffset].equals("--main")) {
-                if (hadMain) break;
-                if (args.length==argsOffset+1) {
-                    exit("main parameter needs argument");
-                }
-                lc.setMainClass(args[argsOffset+1]);
-                argsOffset+=2;
-                hadMain=true;
-            } else if (args[argsOffset].equals("--conf")) {
-                if (hadConf) break;
-                if (args.length==argsOffset+1) {
-                    exit("conf parameter needs argument");
-                }
-                conf=args[argsOffset+1];
-                argsOffset+=2;
-                hadConf=true;
-            } else {
-                break;
+            switch (args[argsOffset]) {
+                case "--classpath":
+                    if (hadCP) break label;
+                    if (args.length == argsOffset + 1) {
+                        exit("classpath parameter needs argument");
+                    }
+                    lc.addClassPath(args[argsOffset + 1]);
+                    argsOffset += 2;
+                    hadCP = true;
+                    break;
+                case "--main":
+                    if (hadMain) break label;
+                    if (args.length == argsOffset + 1) {
+                        exit("main parameter needs argument");
+                    }
+                    lc.setMainClass(args[argsOffset + 1]);
+                    argsOffset += 2;
+                    hadMain = true;
+                    break;
+                case "--conf":
+                    if (hadConf) break label;
+                    if (args.length == argsOffset + 1) {
+                        exit("conf parameter needs argument");
+                    }
+                    conf = args[argsOffset + 1];
+                    argsOffset += 2;
+                    hadConf = true;
+                    break;
+                default:
+                    break label;
             }            
         }
 
diff --git a/src/main/java/org/codehaus/groovy/transform/ASTTransformationCollectorCodeVisitor.java b/src/main/java/org/codehaus/groovy/transform/ASTTransformationCollectorCodeVisitor.java
index 8e38896..8638b72 100644
--- a/src/main/java/org/codehaus/groovy/transform/ASTTransformationCollectorCodeVisitor.java
+++ b/src/main/java/org/codehaus/groovy/transform/ASTTransformationCollectorCodeVisitor.java
@@ -41,6 +41,7 @@ import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Optional;
 import java.util.stream.Stream;
 
@@ -252,12 +253,7 @@ public class ASTTransformationCollectorCodeVisitor extends ClassCodeVisitorSuppo
                     source.getErrorCollector().addError(new SimpleMessage(error, source));
                 }
 
-                Stream.concat(Stream.of(transformClassNames), Stream.of(transformClasses).map(Class::getName)).forEach(transformClassName -> {
-                    Class<?> transformClass = loadTransformClass(transformClassName, annotation);
-                    if (transformClass != null) {
-                        verifyAndAddTransform(annotation, transformClass);
-                    }
-                });
+                Stream.concat(Stream.of(transformClassNames), Stream.of(transformClasses).map(Class::getName)).map(transformClassName -> loadTransformClass(transformClassName, annotation)).filter(Objects::nonNull).forEach(transformClass -> verifyAndAddTransform(annotation, transformClass));
             } catch (ReflectiveOperationException | RuntimeException e) {
                 source.getErrorCollector().addError(new ExceptionMessage(e, true, source));
             }
diff --git a/src/main/java/org/codehaus/groovy/transform/ASTTransformationVisitor.java b/src/main/java/org/codehaus/groovy/transform/ASTTransformationVisitor.java
index f3f90a7..016c0fd 100644
--- a/src/main/java/org/codehaus/groovy/transform/ASTTransformationVisitor.java
+++ b/src/main/java/org/codehaus/groovy/transform/ASTTransformationVisitor.java
@@ -333,9 +333,7 @@ public final class ASTTransformationVisitor extends ClassCodeVisitorSupport {
                     if (instance instanceof CompilationUnitAware) {
                         ((CompilationUnitAware) instance).setCompilationUnit(compilationUnit);
                     }
-                    CompilationUnit.ISourceUnitOperation suOp = source -> {
-                        instance.visit(new ASTNode[]{source.getAST()}, source);
-                    };
+                    CompilationUnit.ISourceUnitOperation suOp = source -> instance.visit(new ASTNode[]{source.getAST()}, source);
                     if (isFirstScan) {
                         compilationUnit.addPhaseOperation(suOp, transformAnnotation.phase().getPhaseNumber());
                     } else {
diff --git a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
index c979287..f72aaa2 100644
--- a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++ b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -3374,12 +3374,16 @@ public class StaticTypeCheckingVisitor extends ClassCodeVisitorSupport {
                 }
                 if (mn.isEmpty() && typeCheckingContext.getEnclosingClosure() != null && args.length == 0) {
                     // add special handling of getDelegate() and getOwner()
-                    if ("getDelegate".equals(name)) {
-                        mn = Collections.singletonList(GET_DELEGATE);
-                    } else if ("getOwner".equals(name)) {
-                        mn = Collections.singletonList(GET_OWNER);
-                    } else if ("getThisObject".equals(name)) {
-                        mn = Collections.singletonList(GET_THISOBJECT);
+                    switch (name) {
+                        case "getDelegate":
+                            mn = Collections.singletonList(GET_DELEGATE);
+                            break;
+                        case "getOwner":
+                            mn = Collections.singletonList(GET_OWNER);
+                            break;
+                        case "getThisObject":
+                            mn = Collections.singletonList(GET_THISOBJECT);
+                            break;
                     }
                 }
                 if (mn.isEmpty()) {