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 799c8cd786 GROOVY-11906 VMPlugin cleanup for Groovy 6:   - Created 
v17/Java17.java extending Java16   - Updated VMPluginFactory to use only Java17 
  - Deprecated Java8, Java9, Java10, Java16 for removal   - Left existing 
auxiliary files in place   - Added @SuppressWarnings("removal") at call sites 
using the old classes
799c8cd786 is described below

commit 799c8cd7866902bd8116d1fb02a8d8790b3df81b
Author: Paul King <[email protected]>
AuthorDate: Mon Apr 6 11:39:56 2026 +1000

    GROOVY-11906 VMPlugin cleanup for Groovy 6:
      - Created v17/Java17.java extending Java16
      - Updated VMPluginFactory to use only Java17
      - Deprecated Java8, Java9, Java10, Java16 for removal
      - Left existing auxiliary files in place
      - Added @SuppressWarnings("removal") at call sites using the old classes
---
 .../ast/decompiled/FormalParameterParser.java      |  1 +
 .../groovy/ast/decompiled/TypeSignatureParser.java |  1 +
 .../codehaus/groovy/vmplugin/VMPluginFactory.java  |  4 +--
 .../org/codehaus/groovy/vmplugin/v10/Java10.java   |  5 ++++
 .../org/codehaus/groovy/vmplugin/v16/Java16.java   |  5 ++++
 .../vmplugin/{v10/Java10.java => v17/Java17.java}  | 30 ++++++++++------------
 .../org/codehaus/groovy/vmplugin/v8/Java8.java     | 17 +++---------
 .../org/codehaus/groovy/vmplugin/v8/Selector.java  |  1 +
 .../org/codehaus/groovy/vmplugin/v9/Java9.java     |  5 ++++
 9 files changed, 36 insertions(+), 33 deletions(-)

diff --git 
a/src/main/java/org/codehaus/groovy/ast/decompiled/FormalParameterParser.java 
b/src/main/java/org/codehaus/groovy/ast/decompiled/FormalParameterParser.java
index 55de8532cb..e3da547419 100644
--- 
a/src/main/java/org/codehaus/groovy/ast/decompiled/FormalParameterParser.java
+++ 
b/src/main/java/org/codehaus/groovy/ast/decompiled/FormalParameterParser.java
@@ -41,6 +41,7 @@ abstract class FormalParameterParser extends SignatureVisitor 
{
         this.resolver = resolver;
     }
 
+    @SuppressWarnings("removal")
     protected void flushTypeParameter() {
         if (currentTypeParameter != null) {
             ClassNode ref = 
Java8.configureTypeVariableReference(currentTypeParameter);
diff --git 
a/src/main/java/org/codehaus/groovy/ast/decompiled/TypeSignatureParser.java 
b/src/main/java/org/codehaus/groovy/ast/decompiled/TypeSignatureParser.java
index c623f61b79..a85cc40067 100644
--- a/src/main/java/org/codehaus/groovy/ast/decompiled/TypeSignatureParser.java
+++ b/src/main/java/org/codehaus/groovy/ast/decompiled/TypeSignatureParser.java
@@ -55,6 +55,7 @@ abstract class TypeSignatureParser extends SignatureVisitor {
     private final List<GenericsType> arguments = new ArrayList<>();
 
     @Override
+    @SuppressWarnings("removal")
     public void visitTypeVariable(final String name) {
         finished(Java8.configureTypeVariableReference(name));
     }
diff --git a/src/main/java/org/codehaus/groovy/vmplugin/VMPluginFactory.java 
b/src/main/java/org/codehaus/groovy/vmplugin/VMPluginFactory.java
index 8e8dbe38e1..2f68df6024 100644
--- a/src/main/java/org/codehaus/groovy/vmplugin/VMPluginFactory.java
+++ b/src/main/java/org/codehaus/groovy/vmplugin/VMPluginFactory.java
@@ -31,9 +31,7 @@ import java.util.Map;
 public class VMPluginFactory {
 
     private static final Map<Integer,String> PLUGIN_MAP = Maps.of(
-        // NOTE: Declare the vm plugin entries in *descending* order!
-        16, "org.codehaus.groovy.vmplugin.v16.Java16",
-        10, "org.codehaus.groovy.vmplugin.v10.Java10"
+        17, "org.codehaus.groovy.vmplugin.v17.Java17"
     );
 
     private static final VMPlugin PLUGIN = createPlugin();
diff --git a/src/main/java/org/codehaus/groovy/vmplugin/v10/Java10.java 
b/src/main/java/org/codehaus/groovy/vmplugin/v10/Java10.java
index 787259c246..6e4d442234 100644
--- a/src/main/java/org/codehaus/groovy/vmplugin/v10/Java10.java
+++ b/src/main/java/org/codehaus/groovy/vmplugin/v10/Java10.java
@@ -22,6 +22,11 @@ import org.codehaus.groovy.vmplugin.v9.Java9;
 
 import java.util.Arrays;
 
+/**
+ * @deprecated Use {@link org.codehaus.groovy.vmplugin.v17.Java17} instead. 
Groovy 6.0 requires JDK 17+.
+ */
+@Deprecated(since = "6.0.0", forRemoval = true)
+@SuppressWarnings("removal")
 public class Java10 extends Java9 {
 
     @Override
diff --git a/src/main/java/org/codehaus/groovy/vmplugin/v16/Java16.java 
b/src/main/java/org/codehaus/groovy/vmplugin/v16/Java16.java
index 46bbcd5f45..31ffe028a8 100644
--- a/src/main/java/org/codehaus/groovy/vmplugin/v16/Java16.java
+++ b/src/main/java/org/codehaus/groovy/vmplugin/v16/Java16.java
@@ -33,6 +33,11 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 
+/**
+ * @deprecated Use {@link org.codehaus.groovy.vmplugin.v17.Java17} instead. 
Groovy 6.0 requires JDK 17+.
+ */
+@Deprecated(since = "6.0.0", forRemoval = true)
+@SuppressWarnings("removal")
 public class Java16 extends Java10 {
 
     @Override
diff --git a/src/main/java/org/codehaus/groovy/vmplugin/v10/Java10.java 
b/src/main/java/org/codehaus/groovy/vmplugin/v17/Java17.java
similarity index 64%
copy from src/main/java/org/codehaus/groovy/vmplugin/v10/Java10.java
copy to src/main/java/org/codehaus/groovy/vmplugin/v17/Java17.java
index 787259c246..103c9cd20f 100644
--- a/src/main/java/org/codehaus/groovy/vmplugin/v10/Java10.java
+++ b/src/main/java/org/codehaus/groovy/vmplugin/v17/Java17.java
@@ -16,27 +16,23 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.codehaus.groovy.vmplugin.v10;
+package org.codehaus.groovy.vmplugin.v17;
 
-import org.codehaus.groovy.vmplugin.v9.Java9;
+import org.codehaus.groovy.vmplugin.v16.Java16;
 
-import java.util.Arrays;
-
-public class Java10 extends Java9 {
+/**
+ * Java 17 based functions. Groovy 6.0 requires JDK 17 as the minimum version.
+ * <p>
+ * This plugin subsumes all functionality from earlier version-specific plugins
+ * (Java8 through Java16) into a single entry point for the VM plugin system.
+ *
+ * @since 6.0.0
+ */
+@SuppressWarnings("removal")
+public class Java17 extends Java16 {
 
     @Override
     public int getVersion() {
-        return 10;
-    }
-
-    @Override
-    public Class<?>[] getPluginDefaultGroovyMethods() {
-        Class<?>[] answer = super.getPluginDefaultGroovyMethods();
-
-        final int n = answer.length;
-        answer = Arrays.copyOf(answer, n + 1);
-        answer[n] = PluginDefaultGroovyMethods.class;
-
-        return answer;
+        return 17;
     }
 }
diff --git a/src/main/java/org/codehaus/groovy/vmplugin/v8/Java8.java 
b/src/main/java/org/codehaus/groovy/vmplugin/v8/Java8.java
index 5da3938fcf..2cab339d36 100644
--- a/src/main/java/org/codehaus/groovy/vmplugin/v8/Java8.java
+++ b/src/main/java/org/codehaus/groovy/vmplugin/v8/Java8.java
@@ -63,11 +63,9 @@ import java.lang.reflect.Member;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.ReflectPermission;
 import java.lang.reflect.Type;
 import java.lang.reflect.TypeVariable;
 import java.lang.reflect.WildcardType;
-import java.security.Permission;
 import java.util.Arrays;
 import java.util.List;
 
@@ -75,12 +73,14 @@ import java.util.List;
  * Java 8 based functions.
  *
  * @since 2.5.0
+ * @deprecated Use {@link org.codehaus.groovy.vmplugin.v17.Java17} instead. 
Groovy 6.0 requires JDK 17+.
  */
+@Deprecated(since = "6.0.0", forRemoval = true)
 public class Java8 implements VMPlugin {
 
     private static final Method[] EMPTY_METHOD_ARRAY = new Method[0];
     private static final Annotation[] EMPTY_ANNOTATION_ARRAY = new 
Annotation[0];
-    private static final Permission ACCESS_PERMISSION = new 
ReflectPermission("suppressAccessChecks");
+
 
     public static GenericsType configureTypeVariableDefinition(final ClassNode 
base, final ClassNode[] bounds) {
         ClassNode redirect = base.redirect();
@@ -529,17 +529,7 @@ public class Java8 implements VMPlugin {
      * @return the check result
      */
     @Override
-    @SuppressWarnings("removal") // TODO a future Groovy version should skip 
the permission check
     public boolean checkCanSetAccessible(final AccessibleObject 
accessibleObject, final Class<?> callerClass) {
-        SecurityManager sm = System.getSecurityManager();
-        try {
-            if (sm != null) {
-                sm.checkPermission(ACCESS_PERMISSION);
-            }
-        } catch (SecurityException e) {
-            return false;
-        }
-
         if (accessibleObject instanceof Constructor<?> c) {
             if (c.getDeclaringClass() == Class.class) {
                 return false; // Cannot make a java.lang.Class constructor 
accessible
@@ -607,6 +597,7 @@ public class Java8 implements VMPlugin {
     
//--------------------------------------------------------------------------
 
     @Deprecated(since = "5.0.0")
+    @SuppressWarnings("removal")
     public static MethodHandles.Lookup of(final Class<?> targetClass) {
         return ((Java8) VMPluginFactory.getPlugin()).newLookup(targetClass);
     }
diff --git a/src/main/java/org/codehaus/groovy/vmplugin/v8/Selector.java 
b/src/main/java/org/codehaus/groovy/vmplugin/v8/Selector.java
index de93f46c08..3a50eb750a 100644
--- a/src/main/java/org/codehaus/groovy/vmplugin/v8/Selector.java
+++ b/src/main/java/org/codehaus/groovy/vmplugin/v8/Selector.java
@@ -325,6 +325,7 @@ public abstract class Selector {
             } else if (mp instanceof CachedField && !mp.isStatic()) {
                 try {
                     // GROOVY-9144, GROOVY-9596: get lookup for sender and 
unreflect before forcing access
+                    @SuppressWarnings("removal")
                     MethodHandles.Lookup lookup = ((Java8) 
VMPluginFactory.getPlugin()).newLookup(sender);
                     handle = ((CachedField) mp).asAccessMethod(lookup);
                 } catch (IllegalAccessException e) {
diff --git a/src/main/java/org/codehaus/groovy/vmplugin/v9/Java9.java 
b/src/main/java/org/codehaus/groovy/vmplugin/v9/Java9.java
index cf213d0690..10b67b831f 100644
--- a/src/main/java/org/codehaus/groovy/vmplugin/v9/Java9.java
+++ b/src/main/java/org/codehaus/groovy/vmplugin/v9/Java9.java
@@ -53,6 +53,11 @@ import java.util.logging.Level;
 import java.util.logging.Logger;
 import java.util.stream.Collectors;
 
+/**
+ * @deprecated Use {@link org.codehaus.groovy.vmplugin.v17.Java17} instead. 
Groovy 6.0 requires JDK 17+.
+ */
+@Deprecated(since = "6.0.0", forRemoval = true)
+@SuppressWarnings("removal")
 public class Java9 extends Java8 {
 
     @Override

Reply via email to