You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2026/04/02 09:36:12 UTC

(camel-quarkus) 01/01: Force alignment to Groovy 5.x

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

jamesnetherton pushed a commit to branch quarkus-main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 46c21bdd9863dd6b29c72f82bfae100f5763ca1d
Author: James Netherton <ja...@gmail.com>
AuthorDate: Wed Mar 25 08:57:44 2026 +0000

    Force alignment to Groovy 5.x
---
 extensions/groovy-xml/deployment/pom.xml           |   5 +
 extensions/groovy-xml/runtime/pom.xml              |   5 +
 .../groovy/deployment/GroovyProcessor.java         |  17 ++
 extensions/groovy/runtime/pom.xml                  |   6 +
 .../groovy/runtime/graal/GroovySubstitutions.java  | 160 ++++++++++++++++++
 pom.xml                                            |   2 +-
 poms/bom/src/main/generated/flattened-full-pom.xml | 180 ++++++++++-----------
 .../src/main/generated/flattened-reduced-pom.xml   |   4 +-
 .../generated/flattened-reduced-verbose-pom.xml    |  12 +-
 9 files changed, 292 insertions(+), 99 deletions(-)

diff --git a/extensions/groovy-xml/deployment/pom.xml b/extensions/groovy-xml/deployment/pom.xml
index 51e7d696b9..69fdc26625 100644
--- a/extensions/groovy-xml/deployment/pom.xml
+++ b/extensions/groovy-xml/deployment/pom.xml
@@ -34,6 +34,11 @@
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-core-deployment</artifactId>
         </dependency>
+        <!-- TODO: Remove this - https://github.com/apache/camel-quarkus/issues/8468 -->
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-groovy-deployment</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-groovy-xml</artifactId>
diff --git a/extensions/groovy-xml/runtime/pom.xml b/extensions/groovy-xml/runtime/pom.xml
index 89360b5f4c..d62b882d8f 100644
--- a/extensions/groovy-xml/runtime/pom.xml
+++ b/extensions/groovy-xml/runtime/pom.xml
@@ -40,6 +40,11 @@
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-core</artifactId>
         </dependency>
+        <!-- TODO: Remove this - https://github.com/apache/camel-quarkus/issues/8468 -->
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-groovy</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-groovy-xml</artifactId>
diff --git a/extensions/groovy/deployment/src/main/java/org/apache/camel/quarkus/component/groovy/deployment/GroovyProcessor.java b/extensions/groovy/deployment/src/main/java/org/apache/camel/quarkus/component/groovy/deployment/GroovyProcessor.java
index 136a111d2e..00ce7af6ef 100644
--- a/extensions/groovy/deployment/src/main/java/org/apache/camel/quarkus/component/groovy/deployment/GroovyProcessor.java
+++ b/extensions/groovy/deployment/src/main/java/org/apache/camel/quarkus/component/groovy/deployment/GroovyProcessor.java
@@ -27,9 +27,11 @@ import io.quarkus.deployment.annotations.ExecutionTime;
 import io.quarkus.deployment.annotations.Record;
 import io.quarkus.deployment.builditem.FeatureBuildItem;
 import io.quarkus.deployment.builditem.GeneratedClassBuildItem;
+import io.quarkus.deployment.builditem.RemovedResourceBuildItem;
 import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
 import io.quarkus.deployment.pkg.builditem.CurateOutcomeBuildItem;
 import io.quarkus.deployment.pkg.steps.NativeOrNativeSourcesBuild;
+import io.quarkus.maven.dependency.ArtifactKey;
 import io.quarkus.maven.dependency.ResolvedDependency;
 import io.quarkus.paths.PathCollection;
 import io.quarkus.runtime.RuntimeValue;
@@ -177,6 +179,21 @@ class GroovyProcessor {
         return null;
     }
 
+    // TODO: Remove this - https://github.com/apache/camel-quarkus/issues/8468
+    @BuildStep
+    RemovedResourceBuildItem removedResources() {
+        return new RemovedResourceBuildItem(
+                ArtifactKey.fromString("io.quarkiverse.groovy:quarkus-groovy"),
+                Set.of("io/quarkiverse/groovy/runtime/graal/SubstituteCacheableCallSite.class",
+                        "io/quarkiverse/groovy/runtime/graal/SubstituteIndyInterface$FromCacheBiFunction.class",
+                        "io/quarkiverse/groovy/runtime/graal/SubstituteIndyInterface$ToCacheBiFunction.class",
+                        "io/quarkiverse/groovy/runtime/graal/SubstituteMethodHandleWrapper.class",
+                        "io/quarkiverse/groovy/runtime/graal/SubstituteIndyInterface.class",
+                        "io/quarkiverse/groovy/runtime/graal/SubstituteSourceUnit.class",
+                        "io/quarkiverse/groovy/runtime/graal/SubstituteIndyFallbackSupplier.class",
+                        "io/quarkiverse/groovy/runtime/graal/GroovySubstitutions.class"));
+    }
+
     /**
      * Convert a Groovy expression into a Script class to be able to compile it.
      *
diff --git a/extensions/groovy/runtime/pom.xml b/extensions/groovy/runtime/pom.xml
index 310dde5587..74b6171c65 100644
--- a/extensions/groovy/runtime/pom.xml
+++ b/extensions/groovy/runtime/pom.xml
@@ -52,6 +52,12 @@
             <groupId>io.quarkiverse.groovy</groupId>
             <artifactId>quarkus-groovy</artifactId>
         </dependency>
+        <!-- TODO: Remove this - https://github.com/apache/camel-quarkus/issues/8468 -->
+        <dependency>
+            <groupId>org.graalvm.sdk</groupId>
+            <artifactId>nativeimage</artifactId>
+            <scope>provided</scope>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/extensions/groovy/runtime/src/main/java/org/apache/camel/quarkus/component/groovy/runtime/graal/GroovySubstitutions.java b/extensions/groovy/runtime/src/main/java/org/apache/camel/quarkus/component/groovy/runtime/graal/GroovySubstitutions.java
new file mode 100644
index 0000000000..7dd86abcb9
--- /dev/null
+++ b/extensions/groovy/runtime/src/main/java/org/apache/camel/quarkus/component/groovy/runtime/graal/GroovySubstitutions.java
@@ -0,0 +1,160 @@
+package org.apache.camel.quarkus.component.groovy.runtime.graal;
+
+import java.lang.invoke.MethodHandle;
+import java.util.concurrent.BlockingQueue;
+
+import com.oracle.svm.core.annotate.Alias;
+import com.oracle.svm.core.annotate.RecomputeFieldValue;
+import com.oracle.svm.core.annotate.Substitute;
+import com.oracle.svm.core.annotate.TargetClass;
+import org.codehaus.groovy.control.ParserPluginFactory;
+import org.codehaus.groovy.control.SourceUnit;
+import org.codehaus.groovy.runtime.memoize.MemoizeCache;
+import org.codehaus.groovy.vmplugin.v8.CacheableCallSite;
+import org.codehaus.groovy.vmplugin.v8.IndyInterface;
+
+final class GroovySubstitutions {
+}
+
+@TargetClass(className = "org.codehaus.groovy.vmplugin.v8.MethodHandleWrapper")
+final class SubstituteMethodHandleWrapper {
+
+    @Alias
+    public boolean isCanSetTarget() {
+        return false;
+    }
+
+    @Alias
+    public MethodHandle getCachedMethodHandle() {
+        return null;
+    }
+}
+
+@TargetClass(className = "org.codehaus.groovy.vmplugin.v8.IndyInterface$FallbackSupplier")
+final class SubstituteIndyFallbackSupplier {
+
+    @Alias
+    SubstituteIndyFallbackSupplier(CacheableCallSite callSite, Class<?> sender, String methodName, int callID,
+            Boolean safeNavigation, Boolean thisCall, Boolean spreadCall, Object dummyReceiver, Object[] arguments) {
+
+    }
+
+    @Alias
+    SubstituteMethodHandleWrapper get() {
+        return null;
+    }
+}
+
+@TargetClass(CacheableCallSite.class)
+final class SubstituteCacheableCallSite {
+    @Alias
+    @RecomputeFieldValue(kind = RecomputeFieldValue.Kind.FromAlias)
+    private static BlockingQueue<Runnable> CACHE_CLEANER_QUEUE = null;
+
+    @Alias
+    public SubstituteMethodHandleWrapper getAndPut(String className,
+            MemoizeCache.ValueProvider<? super String, ? extends SubstituteMethodHandleWrapper> valueProvider) {
+        return null;
+    }
+
+    @Alias
+    public SubstituteMethodHandleWrapper put(String name, SubstituteMethodHandleWrapper mhw) {
+        return null;
+    }
+
+    @Alias
+    private void removeAllStaleEntriesOfLruCache() {
+    }
+}
+
+@TargetClass(IndyInterface.class)
+final class SubstituteIndyInterface {
+
+    @Alias
+    private static SubstituteMethodHandleWrapper NULL_METHOD_HANDLE_WRAPPER;
+
+    @Substitute
+    protected static void invalidateSwitchPoints() {
+        throw new UnsupportedOperationException("invalidateSwitchPoints is not supported");
+    }
+
+    @Alias
+    private static boolean bypassCache(Boolean spreadCall, Object[] arguments) {
+        return false;
+    }
+
+    @Alias
+    private static SubstituteMethodHandleWrapper fallback(CacheableCallSite callSite, Class<?> sender, String methodName,
+            int callID, Boolean safeNavigation, Boolean thisCall, Boolean spreadCall, Object dummyReceiver,
+            Object[] arguments) {
+        return null;
+    }
+
+    @Substitute
+    public static Object selectMethod(CacheableCallSite callSite, Class<?> sender, String methodName, int callID,
+            Boolean safeNavigation, Boolean thisCall, Boolean spreadCall, Object dummyReceiver, Object[] arguments)
+            throws Throwable {
+        final SubstituteMethodHandleWrapper mhw = fallback(callSite, sender, methodName, callID, safeNavigation, thisCall,
+                spreadCall, dummyReceiver, arguments);
+
+        final MethodHandle defaultTarget = callSite.getDefaultTarget();
+        if (defaultTarget == callSite.getTarget()) {
+            // correct the stale methodhandle in the inline cache of callsite
+            // it is important but impacts the performance somehow when cache misses frequently
+            Object receiver = arguments[0];
+            String key = receiver != null ? receiver.getClass().getName() : "org.codehaus.groovy.runtime.NullObject";
+            SubstituteCacheableCallSite cs = (SubstituteCacheableCallSite) (Object) callSite;
+            cs.put(key, mhw);
+        }
+
+        return mhw.getCachedMethodHandle().invokeExact(arguments);
+    }
+
+    @Substitute
+    public static Object fromCache(CacheableCallSite callSite, Class<?> sender, String methodName, int callID,
+            Boolean safeNavigation, Boolean thisCall, Boolean spreadCall, Object dummyReceiver, Object[] arguments)
+            throws Throwable {
+        SubstituteIndyFallbackSupplier fallbackSupplier = new SubstituteIndyFallbackSupplier(callSite, sender, methodName,
+                callID, safeNavigation, thisCall, spreadCall, dummyReceiver, arguments);
+
+        SubstituteMethodHandleWrapper mhw;
+        if (bypassCache(spreadCall, arguments)) {
+            mhw = NULL_METHOD_HANDLE_WRAPPER;
+        } else {
+            Object receiver = arguments[0];
+            String receiverClassName = receiver != null ? receiver.getClass().getName()
+                    : "org.codehaus.groovy.runtime.NullObject";
+            SubstituteCacheableCallSite cs = (SubstituteCacheableCallSite) (Object) callSite;
+            mhw = cs.getAndPut(receiverClassName, new MemoizeCache.ValueProvider<String, SubstituteMethodHandleWrapper>() {
+                @Override
+                public SubstituteMethodHandleWrapper provide(String key) {
+                    SubstituteMethodHandleWrapper fbMhw = fallbackSupplier.get();
+                    return fbMhw.isCanSetTarget() ? fbMhw : NULL_METHOD_HANDLE_WRAPPER;
+                }
+            });
+        }
+
+        if (NULL_METHOD_HANDLE_WRAPPER == mhw) {
+            mhw = fallbackSupplier.get();
+        }
+
+        return mhw.getCachedMethodHandle().invokeExact(arguments);
+    }
+}
+
+@TargetClass(SourceUnit.class)
+final class SubstituteSourceUnit {
+
+    @Substitute
+    public void convert() {
+        throw new UnsupportedOperationException("convert is not supported");
+    }
+}
+
+@TargetClass(ParserPluginFactory.class)
+final class SubstituteParserPluginFactory {
+    @Substitute
+    public static ParserPluginFactory antlr4() {
+        throw new UnsupportedOperationException("Antlr4 parsing is not supported at runtime in native mode");
+    }
+}
diff --git a/pom.xml b/pom.xml
index 7da21cc6e2..3716581194 100644
--- a/pom.xml
+++ b/pom.xml
@@ -112,7 +112,7 @@
         <google-oauth-client.version>1.39.0</google-oauth-client.version><!-- @sync com.google.cloud:google-cloud-bigquery:${google-cloud-bigquery.version} dep:com.google.oauth-client:google-oauth-client -->
         <graalvm.version>23.1.2</graalvm.version><!-- @sync io.quarkus:quarkus-bom:${quarkus.version} dep:org.graalvm.sdk:nativeimage -->
         <graalvm-docs.version>jdk21</graalvm-docs.version><!-- @sync io.quarkus:quarkus-documentation:${quarkus.version} prop:graal-community.tag-for-documentation -->
-        <groovy.version>4.0.29</groovy.version><!-- @sync io.quarkiverse.groovy:quarkus-groovy-parent:${quarkiverse-groovy.version} prop:groovy.version -->
+        <groovy.version>5.0.5</groovy.version><!-- TODO: Reinstate @sync tag https://github.com/apache/camel-quarkus/issues/8468 --><!-- io.quarkiverse.groovy:quarkus-groovy-parent:${quarkiverse-groovy.version} prop:groovy.version -->
         <hapi.version>${hapi-version}</hapi.version>
         <hapi-base.version>${hapi-base-version}</hapi-base.version>
         <hapi-fhir.version>${hapi-fhir-version}</hapi-fhir.version>
diff --git a/poms/bom/src/main/generated/flattened-full-pom.xml b/poms/bom/src/main/generated/flattened-full-pom.xml
index 07e7a60504..f43a503eaa 100644
--- a/poms/bom/src/main/generated/flattened-full-pom.xml
+++ b/poms/bom/src/main/generated/flattened-full-pom.xml
@@ -8946,154 +8946,154 @@
         <version>4.1.5</version><!-- io.quarkiverse.cxf:quarkus-cxf-bom:3.33.1 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy-ant</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy-ant</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy-astbuilder</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy-astbuilder</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy-cli-commons</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy-cli-commons</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy-cli-picocli</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy-cli-picocli</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy-console</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy-console</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy-contracts</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy-contracts</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy-datetime</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy-datetime</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy-dateutil</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy-dateutil</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy-docgenerator</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy-docgenerator</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy-ginq</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy-ginq</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy-groovydoc</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy-groovydoc</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy-groovysh</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy-groovysh</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy-jmx</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy-jmx</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy-json</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy-json</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy-jsr223</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy-jsr223</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy-macro</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy-macro</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy-macro-library</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy-macro-library</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy-nio</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy-nio</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy-servlet</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy-servlet</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy-sql</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy-sql</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy-swing</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy-swing</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy-templates</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy-templates</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy-test</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy-test</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy-test-junit5</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy-test-junit5</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy-testng</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy-testng</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy-toml</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy-toml</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy-typecheckers</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy-typecheckers</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy-xml</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy-xml</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy-yaml</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy-yaml</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
         <groupId>software.amazon.awssdk</groupId><!-- software.amazon.awssdk:bom:2.42.22 -->
diff --git a/poms/bom/src/main/generated/flattened-reduced-pom.xml b/poms/bom/src/main/generated/flattened-reduced-pom.xml
index 874a96e239..b3ece6337e 100644
--- a/poms/bom/src/main/generated/flattened-reduced-pom.xml
+++ b/poms/bom/src/main/generated/flattened-reduced-pom.xml
@@ -8816,12 +8816,12 @@
       <dependency>
         <groupId>org.apache.groovy</groupId>
         <artifactId>groovy</artifactId>
-        <version>4.0.29</version>
+        <version>5.0.5</version>
       </dependency>
       <dependency>
         <groupId>org.apache.groovy</groupId>
         <artifactId>groovy-xml</artifactId>
-        <version>4.0.29</version>
+        <version>5.0.5</version>
       </dependency>
       <dependency>
         <groupId>software.amazon.awssdk</groupId>
diff --git a/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml b/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml
index 425db9d9f7..b735d3b526 100644
--- a/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml
+++ b/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml
@@ -8814,14 +8814,14 @@
         <version>4.1.5</version><!-- io.quarkiverse.cxf:quarkus-cxf-bom:3.33.1 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
-        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <artifactId>groovy-xml</artifactId><!-- org.apache.groovy:groovy-bom:4.0.29 -->
-        <version>4.0.29</version><!-- org.apache.groovy:groovy-bom:4.0.29 -->
+        <groupId>org.apache.groovy</groupId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <artifactId>groovy-xml</artifactId><!-- org.apache.groovy:groovy-bom:5.0.5 -->
+        <version>5.0.5</version><!-- org.apache.groovy:groovy-bom:5.0.5 -->
       </dependency>
       <dependency>
         <groupId>software.amazon.awssdk</groupId><!-- software.amazon.awssdk:bom:2.42.22 -->