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/28 08:16:13 UTC

(camel-quarkus) branch main updated: Upgrade Quarkus Groovy to 3.35.0

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

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


The following commit(s) were added to refs/heads/main by this push:
     new 4c862837c1 Upgrade Quarkus Groovy to 3.35.0
4c862837c1 is described below

commit 4c862837c1dd67fc8bf3ed1b1d867f3b96437bdf
Author: James Netherton <ja...@users.noreply.github.com>
AuthorDate: Tue Apr 28 09:16:06 2026 +0100

    Upgrade Quarkus Groovy to 3.35.0
    
    Fixes #8468
---
 .../groovy/deployment/GroovyProcessor.java         |  17 --
 extensions/groovy/runtime/pom.xml                  |   6 -
 .../groovy/runtime/graal/GroovySubstitutions.java  | 176 ---------------------
 pom.xml                                            |   4 +-
 poms/bom/src/main/generated/flattened-full-pom.xml |   4 +-
 .../src/main/generated/flattened-reduced-pom.xml   |   4 +-
 .../generated/flattened-reduced-verbose-pom.xml    |   4 +-
 7 files changed, 8 insertions(+), 207 deletions(-)

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 00ce7af6ef..136a111d2e 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,11 +27,9 @@ 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;
@@ -179,21 +177,6 @@ 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 74b6171c65..310dde5587 100644
--- a/extensions/groovy/runtime/pom.xml
+++ b/extensions/groovy/runtime/pom.xml
@@ -52,12 +52,6 @@
             <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
deleted file mode 100644
index 95717ef866..0000000000
--- a/extensions/groovy/runtime/src/main/java/org/apache/camel/quarkus/component/groovy/runtime/graal/GroovySubstitutions.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-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 90a4bca161..7bf0f24fd0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -54,7 +54,7 @@
         <quarkiverse-cxf.version>3.35.1</quarkiverse-cxf.version><!-- This should be in sync with quarkus-platform https://repo1.maven.org/maven2/io/quarkiverse/cxf/quarkus-cxf-parent/ -->
         <quarkiverse-freemarker.version>1.3.0</quarkiverse-freemarker.version><!-- https://repo1.maven.org/maven2/io/quarkiverse/freemarker/quarkus-freemarker-parent/ -->
         <quarkiverse-fory.version>0.5.0</quarkiverse-fory.version><!-- https://repo1.maven.org/maven2/io/quarkiverse/fury/quarkus-fury-parent/ -->
-        <quarkiverse-groovy.version>3.34.3</quarkiverse-groovy.version><!-- https://repo1.maven.org/maven2/io/quarkiverse/groovy/quarkus-groovy-parent/ -->
+        <quarkiverse-groovy.version>3.35.0</quarkiverse-groovy.version><!-- https://repo1.maven.org/maven2/io/quarkiverse/groovy/quarkus-groovy-parent/ -->
         <quarkiverse-jackson-jq.version>2.5.0</quarkiverse-jackson-jq.version><!-- https://repo1.maven.org/maven2/io/quarkiverse/jackson-jq/quarkus-jackson-jq-parent/ -->
         <quarkiverse-jgit.version>3.6.2</quarkiverse-jgit.version><!-- https://repo1.maven.org/maven2/io/quarkiverse/jgit/quarkus-jgit/ -->
         <quarkiverse-jsch.version>3.1.3</quarkiverse-jsch.version><!-- https://repo1.maven.org/maven2/io/quarkiverse/jsch/quarkus-jsch/ -->
@@ -113,7 +113,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>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 -->
+        <groovy.version>5.0.5</groovy.version><!-- @sync 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 4325a700ee..5e78bfa49d 100644
--- a/poms/bom/src/main/generated/flattened-full-pom.xml
+++ b/poms/bom/src/main/generated/flattened-full-pom.xml
@@ -7602,12 +7602,12 @@
       <dependency>
         <groupId>io.quarkiverse.groovy</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
         <artifactId>quarkus-groovy</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
-        <version>3.34.3</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+        <version>3.35.0</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
       </dependency>
       <dependency>
         <groupId>io.quarkiverse.groovy</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
         <artifactId>quarkus-groovy-deployment</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
-        <version>3.34.3</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+        <version>3.35.0</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
       </dependency>
       <dependency>
         <groupId>io.quarkiverse.jackson-jq</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
diff --git a/poms/bom/src/main/generated/flattened-reduced-pom.xml b/poms/bom/src/main/generated/flattened-reduced-pom.xml
index 196d34d42c..b5d1ec351d 100644
--- a/poms/bom/src/main/generated/flattened-reduced-pom.xml
+++ b/poms/bom/src/main/generated/flattened-reduced-pom.xml
@@ -7556,12 +7556,12 @@
       <dependency>
         <groupId>io.quarkiverse.groovy</groupId>
         <artifactId>quarkus-groovy</artifactId>
-        <version>3.34.3</version>
+        <version>3.35.0</version>
       </dependency>
       <dependency>
         <groupId>io.quarkiverse.groovy</groupId>
         <artifactId>quarkus-groovy-deployment</artifactId>
-        <version>3.34.3</version>
+        <version>3.35.0</version>
       </dependency>
       <dependency>
         <groupId>io.quarkiverse.jackson-jq</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 5130855f68..da0abfbd32 100644
--- a/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml
+++ b/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml
@@ -7556,12 +7556,12 @@
       <dependency>
         <groupId>io.quarkiverse.groovy</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
         <artifactId>quarkus-groovy</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
-        <version>3.34.3</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+        <version>3.35.0</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
       </dependency>
       <dependency>
         <groupId>io.quarkiverse.groovy</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
         <artifactId>quarkus-groovy-deployment</artifactId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
-        <version>3.34.3</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+        <version>3.35.0</version><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
       </dependency>
       <dependency>
         <groupId>io.quarkiverse.jackson-jq</groupId><!-- org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->