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 2022/06/26 17:27:14 UTC
[groovy] branch GROOVY_4_0_X updated: Tweak finding `cloneArray` method
This is an automated email from the ASF dual-hosted git repository.
sunlan pushed a commit to branch GROOVY_4_0_X
in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/GROOVY_4_0_X by this push:
new 8d95d66067 Tweak finding `cloneArray` method
8d95d66067 is described below
commit 8d95d6606782ddb77c866e097273c0284e3d86d7
Author: Daniel Sun <su...@apache.org>
AuthorDate: Mon Jun 27 01:22:29 2022 +0800
Tweak finding `cloneArray` method
(cherry picked from commit c18411fe233bd60d4d045d65d9bb04b459f95e12)
---
src/main/java/groovy/lang/MetaClassImpl.java | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/src/main/java/groovy/lang/MetaClassImpl.java b/src/main/java/groovy/lang/MetaClassImpl.java
index 5a30b58c58..a5586381d2 100644
--- a/src/main/java/groovy/lang/MetaClassImpl.java
+++ b/src/main/java/groovy/lang/MetaClassImpl.java
@@ -1166,14 +1166,16 @@ public class MetaClassImpl implements MetaClass, MutableMetaClass {
private static class MethodHandleHolder {
private static final MethodHandle CLONE_ARRAY_METHOD_HANDLE;
static {
- Optional<Method> methodOptional = Arrays.stream(ArrayUtil.class.getDeclaredMethods()).filter(m -> "cloneArray".equals(m.getName())).findFirst();
- if (!methodOptional.isPresent()) {
- throw new GroovyBugError("Failed to find `cloneArray` method in class `" + ArrayUtil.class.getName() + "`");
+ final Class<ArrayUtil> arrayUtilClass = ArrayUtil.class;
+ Method cloneArrayMethod;
+ try {
+ cloneArrayMethod = arrayUtilClass.getDeclaredMethod("cloneArray", Object[].class);
+ } catch (NoSuchMethodException e) {
+ throw new GroovyBugError("Failed to find `cloneArray` method in class `" + arrayUtilClass.getName() + "`", e);
}
- Method cloneArrayMethod = methodOptional.get();
try {
- CLONE_ARRAY_METHOD_HANDLE = MethodHandles.lookup().in(ArrayUtil.class).unreflect(cloneArrayMethod);
+ CLONE_ARRAY_METHOD_HANDLE = MethodHandles.lookup().in(arrayUtilClass).unreflect(cloneArrayMethod);
} catch (IllegalAccessException e) {
throw new GroovyBugError("Failed to create method handle for " + cloneArrayMethod);
}