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} -->