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 2019/11/01 07:45:33 UTC
[groovy] branch master updated: java 8 refacotor
This is an automated email from the ASF dual-hosted git repository.
sunlan 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 77c2dd4 java 8 refacotor
77c2dd4 is described below
commit 77c2dd4d4b21df580b04ec6d68054c2b560e5a71
Author: mattisonchao <ma...@gmail.com>
AuthorDate: Fri Nov 1 13:34:16 2019 +0800
java 8 refacotor
I found several code again that can be changed to a lambda expression.
---
src/main/java/groovy/lang/GroovyClassLoader.java | 56 +++++++++-------------
.../groovy/classgen/asm/ClosureWriter.java | 6 +--
.../codehaus/groovy/reflection/CachedClass.java | 22 ++++-----
.../org/codehaus/groovy/reflection/ClassInfo.java | 6 +--
.../reflection/ClassLoaderForClassArtifacts.java | 6 +--
.../groovy/runtime/DefaultGroovyMethods.java | 8 ++--
.../groovy/runtime/metaclass/ClosureMetaClass.java | 44 +++++++----------
7 files changed, 56 insertions(+), 92 deletions(-)
diff --git a/src/main/java/groovy/lang/GroovyClassLoader.java b/src/main/java/groovy/lang/GroovyClassLoader.java
index 726c5d4..59741fb 100644
--- a/src/main/java/groovy/lang/GroovyClassLoader.java
+++ b/src/main/java/groovy/lang/GroovyClassLoader.java
@@ -109,18 +109,16 @@ public class GroovyClassLoader extends URLClassLoader {
private GroovyResourceLoader resourceLoader = new GroovyResourceLoader() {
public URL loadGroovySource(final String filename) throws MalformedURLException {
- return AccessController.doPrivileged(new PrivilegedAction<URL>() {
- public URL run() {
- for (String extension : config.getScriptExtensions()) {
- try {
- URL ret = getSourceFile(filename, extension);
- if (ret != null)
- return ret;
- } catch (Throwable t) { //
- }
+ return AccessController.doPrivileged((PrivilegedAction<URL>) () -> {
+ for (String extension : config.getScriptExtensions()) {
+ try {
+ URL ret = getSourceFile(filename, extension);
+ if (ret != null)
+ return ret;
+ } catch (Throwable t) { //
}
- return null;
}
+ return null;
});
}
};
@@ -253,11 +251,7 @@ public class GroovyClassLoader extends URLClassLoader {
* @return the main class defined in the given script
*/
public Class parseClass(final String text, final String fileName) throws CompilationFailedException {
- GroovyCodeSource gcs = AccessController.doPrivileged(new PrivilegedAction<GroovyCodeSource>() {
- public GroovyCodeSource run() {
- return new GroovyCodeSource(text, fileName, "/groovy/script");
- }
- });
+ GroovyCodeSource gcs = AccessController.doPrivileged((PrivilegedAction<GroovyCodeSource>) () -> new GroovyCodeSource(text, fileName, "/groovy/script"));
gcs.setCachable(false);
return parseClass(gcs);
}
@@ -279,14 +273,12 @@ public class GroovyClassLoader extends URLClassLoader {
}
public Class parseClass(final Reader reader, final String fileName) throws CompilationFailedException {
- GroovyCodeSource gcs = AccessController.doPrivileged(new PrivilegedAction<GroovyCodeSource>() {
- public GroovyCodeSource run() {
- try {
- String scriptText = IOGroovyMethods.getText(reader);
- return new GroovyCodeSource(scriptText, fileName, "/groovy/script");
- } catch (IOException e) {
- throw new RuntimeException("Impossible to read the content of the reader for file named: " + fileName, e);
- }
+ GroovyCodeSource gcs = AccessController.doPrivileged((PrivilegedAction<GroovyCodeSource>) () -> {
+ try {
+ String scriptText = IOGroovyMethods.getText(reader);
+ return new GroovyCodeSource(scriptText, fileName, "/groovy/script");
+ } catch (IOException e) {
+ throw new RuntimeException("Impossible to read the content of the reader for file named: " + fileName, e);
}
});
return parseClass(gcs);
@@ -301,16 +293,14 @@ public class GroovyClassLoader extends URLClassLoader {
// For generic input streams, provide a catch-all codebase of GroovyScript
// Security for these classes can be administered via policy grants with
// a codebase of file:groovy.script
- GroovyCodeSource gcs = AccessController.doPrivileged(new PrivilegedAction<GroovyCodeSource>() {
- public GroovyCodeSource run() {
- try {
- String scriptText = config.getSourceEncoding() != null ?
- IOGroovyMethods.getText(in, config.getSourceEncoding()) :
- IOGroovyMethods.getText(in);
- return new GroovyCodeSource(scriptText, fileName, "/groovy/script");
- } catch (IOException e) {
- throw new RuntimeException("Impossible to read the content of the input stream for file named: " + fileName, e);
- }
+ GroovyCodeSource gcs = AccessController.doPrivileged((PrivilegedAction<GroovyCodeSource>) () -> {
+ try {
+ String scriptText = config.getSourceEncoding() != null ?
+ IOGroovyMethods.getText(in, config.getSourceEncoding()) :
+ IOGroovyMethods.getText(in);
+ return new GroovyCodeSource(scriptText, fileName, "/groovy/script");
+ } catch (IOException e) {
+ throw new RuntimeException("Impossible to read the content of the input stream for file named: " + fileName, e);
}
});
return parseClass(gcs);
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/ClosureWriter.java b/src/main/java/org/codehaus/groovy/classgen/asm/ClosureWriter.java
index d9a783b..4b6cfc9 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/ClosureWriter.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/ClosureWriter.java
@@ -77,11 +77,7 @@ public class ClosureWriter {
public ClosureWriter(WriterController wc) {
this.controller = wc;
closureClassMap = new HashMap<Expression,ClassNode>();
- factory = new WriterControllerFactory() {
- public WriterController makeController(final WriterController normalController) {
- return controller;
- }
- };
+ factory = normalController -> controller;
}
public void writeClosure(ClosureExpression expression) {
diff --git a/src/main/java/org/codehaus/groovy/reflection/CachedClass.java b/src/main/java/org/codehaus/groovy/reflection/CachedClass.java
index 5e4a66e..51c2083 100644
--- a/src/main/java/org/codehaus/groovy/reflection/CachedClass.java
+++ b/src/main/java/org/codehaus/groovy/reflection/CachedClass.java
@@ -101,19 +101,17 @@ public class CachedClass {
public CachedMethod[] initValue() {
final Method[] declaredMethods;
- declaredMethods = AccessController.doPrivileged(new PrivilegedAction<Method[]>() {
- public Method[] run() {
- try {
- Method[] dm = getTheClass().getDeclaredMethods();
- dm = Arrays.stream(dm)
- .filter(m -> checkCanSetAccessible(m, CachedClass.class))
- .toArray(Method[]::new);
+ declaredMethods = AccessController.doPrivileged((PrivilegedAction<Method[]>) () -> {
+ try {
+ Method[] dm = getTheClass().getDeclaredMethods();
+ dm = Arrays.stream(dm)
+ .filter(m -> checkCanSetAccessible(m, CachedClass.class))
+ .toArray(Method[]::new);
// dm = (Method[]) ReflectionUtils.makeAccessible(dm);
- return dm;
- } catch (Throwable e) {
- // Typically, Android can throw ClassNotFoundException
- return EMPTY_METHOD_ARRAY;
- }
+ return dm;
+ } catch (Throwable e) {
+ // Typically, Android can throw ClassNotFoundException
+ return EMPTY_METHOD_ARRAY;
}
});
List<CachedMethod> methods = new ArrayList<CachedMethod>(declaredMethods.length);
diff --git a/src/main/java/org/codehaus/groovy/reflection/ClassInfo.java b/src/main/java/org/codehaus/groovy/reflection/ClassInfo.java
index 2c4ae9a..c7d1a51 100644
--- a/src/main/java/org/codehaus/groovy/reflection/ClassInfo.java
+++ b/src/main/java/org/codehaus/groovy/reflection/ClassInfo.java
@@ -462,11 +462,7 @@ public class ClassInfo implements Finalizable {
}
public ClassLoaderForClassArtifacts initValue() {
- return AccessController.doPrivileged(new PrivilegedAction<ClassLoaderForClassArtifacts>() {
- public ClassLoaderForClassArtifacts run() {
- return new ClassLoaderForClassArtifacts(info.classRef.get());
- }
- });
+ return AccessController.doPrivileged((PrivilegedAction<ClassLoaderForClassArtifacts>) () -> new ClassLoaderForClassArtifacts(info.classRef.get()));
}
}
diff --git a/src/main/java/org/codehaus/groovy/reflection/ClassLoaderForClassArtifacts.java b/src/main/java/org/codehaus/groovy/reflection/ClassLoaderForClassArtifacts.java
index f8f0dfa..5087a84 100644
--- a/src/main/java/org/codehaus/groovy/reflection/ClassLoaderForClassArtifacts.java
+++ b/src/main/java/org/codehaus/groovy/reflection/ClassLoaderForClassArtifacts.java
@@ -75,11 +75,7 @@ public class ClassLoaderForClassArtifacts extends ClassLoader {
}
public Constructor defineClassAndGetConstructor(final String name, final byte[] bytes) {
- final Class cls = AccessController.doPrivileged( new PrivilegedAction<Class>(){
- public Class run() {
- return define(name, bytes);
- }
- });
+ final Class cls = AccessController.doPrivileged((PrivilegedAction<Class>) () -> define(name, bytes));
if (cls != null) {
try {
diff --git a/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java b/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
index 69ec742..64b3603 100644
--- a/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
+++ b/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
@@ -451,11 +451,9 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
if (groovyObject && field.getName().equals("metaClass")) {
continue;
}
- AccessController.doPrivileged(new PrivilegedAction<Object>() {
- public Object run() {
- ReflectionUtils.trySetAccessible(field);
- return null;
- }
+ AccessController.doPrivileged((PrivilegedAction<Object>) () -> {
+ ReflectionUtils.trySetAccessible(field);
+ return null;
});
buffer.append(" ");
buffer.append(field.getName());
diff --git a/src/main/java/org/codehaus/groovy/runtime/metaclass/ClosureMetaClass.java b/src/main/java/org/codehaus/groovy/runtime/metaclass/ClosureMetaClass.java
index bdf8c8d..786a0ba 100644
--- a/src/main/java/org/codehaus/groovy/runtime/metaclass/ClosureMetaClass.java
+++ b/src/main/java/org/codehaus/groovy/runtime/metaclass/ClosureMetaClass.java
@@ -458,21 +458,17 @@ public final class ClosureMetaClass extends MetaClassImpl {
int length = c.length;
if (length == 0) {
// no arg method
- chooser = new MethodChooser() {
- public Object chooseMethod(Class[] arguments, boolean coerce) {
- if (arguments.length == 0) return doCall;
- return null;
- }
+ chooser = (arguments, coerce) -> {
+ if (arguments.length == 0) return doCall;
+ return null;
};
} else {
if (length == 1 && c[0].getTheClass() == Object.class) {
// Object fits all, so simple dispatch rule here
- chooser = new MethodChooser() {
- public Object chooseMethod(Class[] arguments, boolean coerce) {
- // <2, because foo() is same as foo(null)
- if (arguments.length < 2) return doCall;
- return null;
- }
+ chooser = (arguments, coerce) -> {
+ // <2, because foo() is same as foo(null)
+ if (arguments.length < 2) return doCall;
+ return null;
};
} else {
boolean allObject = true;
@@ -484,11 +480,9 @@ public final class ClosureMetaClass extends MetaClassImpl {
}
if (allObject && c[c.length - 1].getTheClass() == Object.class) {
// all arguments are object, so test only if argument number is correct
- chooser = new MethodChooser() {
- public Object chooseMethod(Class[] arguments, boolean coerce) {
- if (arguments.length == c.length) return doCall;
- return null;
- }
+ chooser = (arguments, coerce) -> {
+ if (arguments.length == c.length) return doCall;
+ return null;
};
} else {
if (allObject && c[c.length - 1].getTheClass() == Object[].class) {
@@ -496,21 +490,17 @@ public final class ClosureMetaClass extends MetaClassImpl {
// will fit all, so just test if the number of argument is equal or
// more than the parameters we have.
final int minimumLength = c.length - 2;
- chooser = new MethodChooser() {
- public Object chooseMethod(Class[] arguments, boolean coerce) {
- if (arguments.length > minimumLength) return doCall;
- return null;
- }
+ chooser = (arguments, coerce) -> {
+ if (arguments.length > minimumLength) return doCall;
+ return null;
};
} else {
// general case for single method
- chooser = new MethodChooser() {
- public Object chooseMethod(Class[] arguments, boolean coerce) {
- if (doCall.isValidMethod(arguments)) {
- return doCall;
- }
- return null;
+ chooser = (arguments, coerce) -> {
+ if (doCall.isValidMethod(arguments)) {
+ return doCall;
}
+ return null;
};
}
}