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 2820ce1936 minor refactor: remove a deprecation warning
2820ce1936 is described below

commit 2820ce193673f00276fe315c4d744fb0625ec6e1
Author: Paul King <[email protected]>
AuthorDate: Sun Mar 29 10:56:36 2026 +1000

    minor refactor: remove a deprecation warning
---
 .../reflection/stdclasses/ArrayCachedClass.java     | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git 
a/src/main/java/org/codehaus/groovy/reflection/stdclasses/ArrayCachedClass.java 
b/src/main/java/org/codehaus/groovy/reflection/stdclasses/ArrayCachedClass.java
index a80294f845..03d96f2434 100644
--- 
a/src/main/java/org/codehaus/groovy/reflection/stdclasses/ArrayCachedClass.java
+++ 
b/src/main/java/org/codehaus/groovy/reflection/stdclasses/ArrayCachedClass.java
@@ -23,6 +23,8 @@ import org.codehaus.groovy.reflection.CachedClass;
 import org.codehaus.groovy.reflection.ClassInfo;
 import org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation;
 
+import java.lang.reflect.Array;
+
 public class ArrayCachedClass extends CachedClass {
     public ArrayCachedClass(Class klazz, ClassInfo classInfo) {
         super(klazz, classInfo);
@@ -36,7 +38,7 @@ public class ArrayCachedClass extends CachedClass {
 
         Class paramComponent = getTheClass().getComponentType();
         if (paramComponent.isPrimitive()) {
-            argument = 
DefaultTypeTransformation.convertToPrimitiveArray(argument, paramComponent);
+            argument = convertToPrimitiveArray(argument, paramComponent);
         } else if (paramComponent == String.class && argument instanceof 
GString[] strings) {
             String[] ret = new String[strings.length];
             for (int i = 0; i < strings.length; i++) {
@@ -49,4 +51,21 @@ public class ArrayCachedClass extends CachedClass {
         return argument;
     }
 
+    /**
+     * Converts a boxed object array (e.g. Integer[]) to a primitive array 
(e.g. int[]).
+     * If the source is already the correct primitive array type, it is 
returned as-is.
+     */
+    private static Object convertToPrimitiveArray(Object array, Class<?> 
primitiveType) {
+        if (array.getClass().getComponentType() == primitiveType) return array;
+        Object[] source = (Object[]) array;
+        int length = source.length;
+        Object result = Array.newInstance(primitiveType, length);
+        for (int i = 0; i < length; i++) {
+            if (source[i] != null) {
+                Array.set(result, i, 
DefaultTypeTransformation.castToType(source[i], primitiveType));
+            }
+        }
+        return result;
+    }
+
 }

Reply via email to