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/10 11:26:29 UTC
(camel-quarkus) branch quarkus-main updated (90b4cb49d4 -> b3a798a62a)
This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a change to branch quarkus-main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
discard 90b4cb49d4 Force alignment to Groovy 5.x
discard 28abcffd1f Upgrade Quarkus to 3.35.0.CR1
add 76f2ba2bf4 Auto-detect onException/doCatch/throwException exception classes for native reflection (#8508)
add eabd728c8f Adjust Maven plugin inclusion pattern in Dependabot config
add 8e4e18ee51 Bump org.codehaus.gmavenplus:gmavenplus-plugin from 3.0.0 to 4.3.1
add 02d0fd8981 Bump quarkiverse-groovy.version from 3.34.2 to 3.34.3
add cbb2634573 remove exception reflective registration and verify with test (#8505)
new 1dbe72f04e Upgrade Quarkus to 3.35.0.CR1
new b3a798a62a Force alignment to Groovy 5.x
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (90b4cb49d4)
\
N -- N -- N refs/heads/quarkus-main (b3a798a62a)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.github/dependabot.yml | 3 +-
.../core/deployment/CamelNativeImageProcessor.java | 144 +++++++++++++++++++
.../dsl/xml/io/deployment/XmlIoDslProcessor.java | 156 +++++++++++++++++++++
.../dsl/yaml/deployment/YamlDslProcessor.java | 98 +++++++++++++
.../component/shiro/deployment/ShiroProcessor.java | 3 -
.../org/apache/camel/quarkus/eip/it/EipRoutes.java | 2 -
.../RouteConfigurationsException.java | 10 +-
.../RouteConfigurationsResource.java | 14 ++
...rationsException.java => XmlOnlyException.java} | 15 +-
...ationsException.java => YamlOnlyException.java} | 15 +-
.../src/main/resources/application.properties | 2 +-
.../src/main/resources/xml/xmlOnlyRoutes.xml | 15 +-
.../yaml/{routes.yaml => yamlOnlyRoutes.yaml} | 16 ++-
.../RouteConfigurationsTest.java | 26 ++++
.../apache/camel/quarkus/main/CustomException.java | 3 -
.../quarkus/component/mllp/it/MllpRoutes.java | 2 -
.../opentelemetry/it/OpenTelemetryTest.java | 27 ++--
.../opentelemetry2/it/Opentelemetry2Test.java | 30 ++--
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 +-
22 files changed, 524 insertions(+), 73 deletions(-)
copy integration-test-groups/foundation/route-configurations/src/main/java/org/apache/camel/quarkus/core/it/routeconfigurations/{RouteConfigurationsException.java => XmlOnlyException.java} (69%)
copy integration-test-groups/foundation/route-configurations/src/main/java/org/apache/camel/quarkus/core/it/routeconfigurations/{RouteConfigurationsException.java => YamlOnlyException.java} (68%)
copy integration-tests/jasypt/src/main/resources/routes/jasypt-routes.xml => integration-test-groups/foundation/route-configurations/src/main/resources/xml/xmlOnlyRoutes.xml (58%)
copy integration-test-groups/foundation/route-configurations/src/main/resources/yaml/{routes.yaml => yamlOnlyRoutes.yaml} (64%)
(camel-quarkus) 01/02: Upgrade Quarkus to 3.35.0.CR1
Posted by ja...@apache.org.
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 1dbe72f04e50308172377fc505e80251372694f9
Author: James Netherton <ja...@gmail.com>
AuthorDate: Mon Mar 23 12:58:50 2026 +0000
Upgrade Quarkus to 3.35.0.CR1
---
docs/antora.yml | 2 +-
.../storage/blob/it/AzureStorageBlobTest.java | 9 +-
.../common/it/mongodb/DebeziumMongodbTest.java | 5 +-
.../common/it/sqlserv/DebeziumSqlserverTest.java | 7 +-
.../common/it/mysql/DebeziumMysqlTest.java | 4 +-
.../common/it/postgres/DebeziumOracleTest.java | 4 +-
.../common/it/postgres/DebeziumPostgresTest.java | 4 +-
.../quarkus/component/http/http/it/HttpTest.java | 5 +-
.../quarkus/component/mongodb/it/MongoDbTest.java | 6 +-
.../test/support/kafka/KafkaTestResource.java | 20 +--
.../component/arangodb/it/ArangodbTest.java | 8 +-
.../camel/quarkus/component/jira/it/JiraTest.java | 9 +-
.../component/jms/artemis/it/JmsArtemisXATest.java | 6 +-
.../quarkus/component/jpa/it/JpaTestBase.java | 7 +-
.../kafka/oauth/it/KafkaKeycloakTestResource.java | 27 ++--
.../kafka/sasl/KafkaSaslSslTestResource.java | 158 ++++++++++-----------
.../quarkus/kafka/sasl/KafkaSaslTestResource.java | 89 +++++-------
.../quarkus/kafka/ssl/KafkaSslTestResource.java | 94 +++++-------
.../camel/quarkus/component/kudu/it/KuduTest.java | 6 +-
.../camel/quarkus/component/mail/MailTest.java | 7 +-
.../quarkus/component/olingo4/it/Olingo4Test.java | 25 ++--
.../opentelemetry/it/OpenTelemetryTest.java | 27 ++--
.../opentelemetry2/it/Opentelemetry2Test.java | 30 ++--
.../replication/slot/it/PgReplicationSlotTest.java | 12 +-
.../component/pinecone/it/PineconeResource.java | 10 +-
.../component/pinecone/it/PineconeTest.java | 5 +-
pom.xml | 4 +-
27 files changed, 272 insertions(+), 318 deletions(-)
diff --git a/docs/antora.yml b/docs/antora.yml
index 236a087ab9..e229ea7643 100644
--- a/docs/antora.yml
+++ b/docs/antora.yml
@@ -37,7 +37,7 @@ asciidoc:
langchain4j-version: 1.12.2 # replace ${langchain4j.version}
mapstruct-version: 1.6.3 # replace ${mapstruct.version}
min-maven-version: 3.8.2 # replace ${min-maven-version}
- target-maven-version: 3.9.12 # replace ${target-maven-version}
+ target-maven-version: 3.9.14 # replace ${target-maven-version}
# Attributes used in xrefs to other Antora components
cq-camel-components: 4.18.x@components
diff --git a/integration-test-groups/azure/azure-storage-blob/src/test/java/org/apache/camel/quarkus/component/azure/storage/blob/it/AzureStorageBlobTest.java b/integration-test-groups/azure/azure-storage-blob/src/test/java/org/apache/camel/quarkus/component/azure/storage/blob/it/AzureStorageBlobTest.java
index ec7f2f59a9..215144ae0e 100644
--- a/integration-test-groups/azure/azure-storage-blob/src/test/java/org/apache/camel/quarkus/component/azure/storage/blob/it/AzureStorageBlobTest.java
+++ b/integration-test-groups/azure/azure-storage-blob/src/test/java/org/apache/camel/quarkus/component/azure/storage/blob/it/AzureStorageBlobTest.java
@@ -61,11 +61,9 @@ class AzureStorageBlobTest {
private static final String BLOB_CONTENT = "Hello Camel Quarkus Azure Blob";
@BeforeAll
- static void beforeAll() {
- final Config config = ConfigProvider.getConfig();
+ static void beforeAll(Config config) {
String containerName = config.getValue("azure.blob.container.name", String.class);
- int port = config.getValue("quarkus.http.test-port", int.class);
- RestAssured.port = port;
+ RestAssured.port = config.getValue("quarkus.http.test-port", int.class);
RestAssured.given()
.queryParam("containerName", containerName)
.post("/azure-storage-blob/blob/container")
@@ -74,8 +72,7 @@ class AzureStorageBlobTest {
}
@AfterAll
- static void afterAll() {
- final Config config = ConfigProvider.getConfig();
+ static void afterAll(Config config) {
String containerName = config.getValue("azure.blob.container.name", String.class);
RestAssured.given()
.queryParam("containerName", containerName)
diff --git a/integration-test-groups/debezium/mongodb/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/mongodb/DebeziumMongodbTest.java b/integration-test-groups/debezium/mongodb/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/mongodb/DebeziumMongodbTest.java
index 7ff47a7def..3c12c42681 100644
--- a/integration-test-groups/debezium/mongodb/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/mongodb/DebeziumMongodbTest.java
+++ b/integration-test-groups/debezium/mongodb/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/mongodb/DebeziumMongodbTest.java
@@ -31,7 +31,6 @@ import org.apache.camel.quarkus.test.support.debezium.AbstractDebeziumTest;
import org.apache.camel.quarkus.test.support.debezium.Type;
import org.bson.Document;
import org.eclipse.microprofile.config.Config;
-import org.eclipse.microprofile.config.ConfigProvider;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
@@ -60,9 +59,7 @@ class DebeziumMongodbTest extends AbstractDebeziumTest {
}
@BeforeAll
- public static void setUp() throws SQLException {
- Config config = ConfigProvider.getConfig();
-
+ public static void setUp(Config config) {
final Optional<String> mongoUrl = config.getOptionalValue(Type.mongodb.getPropertyJdbc(), String.class);
if (mongoUrl.isPresent()) {
diff --git a/integration-test-groups/debezium/mssql/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/sqlserv/DebeziumSqlserverTest.java b/integration-test-groups/debezium/mssql/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/sqlserv/DebeziumSqlserverTest.java
index cfaa095698..f7b7f2b53d 100644
--- a/integration-test-groups/debezium/mssql/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/sqlserv/DebeziumSqlserverTest.java
+++ b/integration-test-groups/debezium/mssql/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/sqlserv/DebeziumSqlserverTest.java
@@ -28,7 +28,6 @@ import org.apache.camel.quarkus.test.support.debezium.AbstractDebeziumTest;
import org.apache.camel.quarkus.test.support.debezium.Record;
import org.apache.camel.quarkus.test.support.debezium.Type;
import org.eclipse.microprofile.config.Config;
-import org.eclipse.microprofile.config.ConfigProvider;
import org.jboss.logging.Logger;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
@@ -54,8 +53,7 @@ class DebeziumSqlserverTest extends AbstractDebeziumTest {
}
@BeforeAll
- public static void setUp() throws SQLException {
- Config config = ConfigProvider.getConfig();
+ public static void setUp(Config config) throws SQLException {
final Optional<String> jdbcUrl = config.getOptionalValue(Type.sqlserver.getPropertyJdbc(), String.class);
assumeTrue(jdbcUrl.isPresent(),
@@ -92,8 +90,7 @@ class DebeziumSqlserverTest extends AbstractDebeziumTest {
@Test
@Order(0)
- public void testReceiveInitCompany() {
- Config config = ConfigProvider.getConfig();
+ public void testReceiveInitCompany(Config config) {
assumeTrue(config.getOptionalValue(Type.sqlserver.getPropertyJdbc(), String.class).isPresent());
int i = 0;
diff --git a/integration-test-groups/debezium/mysql/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/mysql/DebeziumMysqlTest.java b/integration-test-groups/debezium/mysql/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/mysql/DebeziumMysqlTest.java
index e555e27e80..8c8c212c64 100644
--- a/integration-test-groups/debezium/mysql/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/mysql/DebeziumMysqlTest.java
+++ b/integration-test-groups/debezium/mysql/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/mysql/DebeziumMysqlTest.java
@@ -26,7 +26,6 @@ import io.quarkus.test.junit.QuarkusTest;
import org.apache.camel.quarkus.test.support.debezium.AbstractDebeziumTest;
import org.apache.camel.quarkus.test.support.debezium.Type;
import org.eclipse.microprofile.config.Config;
-import org.eclipse.microprofile.config.ConfigProvider;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assumptions;
import org.junit.jupiter.api.BeforeAll;
@@ -46,8 +45,7 @@ class DebeziumMysqlTest extends AbstractDebeziumTest {
}
@BeforeAll
- public static void setUp() throws SQLException {
- Config config = ConfigProvider.getConfig();
+ public static void setUp(Config config) throws SQLException {
Optional<String> jdbcUrl = config.getOptionalValue(Type.mysql.getPropertyJdbc(), String.class);
try {
diff --git a/integration-test-groups/debezium/oracle/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/postgres/DebeziumOracleTest.java b/integration-test-groups/debezium/oracle/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/postgres/DebeziumOracleTest.java
index 5275ff037a..58578ae664 100644
--- a/integration-test-groups/debezium/oracle/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/postgres/DebeziumOracleTest.java
+++ b/integration-test-groups/debezium/oracle/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/postgres/DebeziumOracleTest.java
@@ -25,7 +25,6 @@ import io.quarkus.test.junit.QuarkusTest;
import org.apache.camel.quarkus.test.support.debezium.AbstractDebeziumTest;
import org.apache.camel.quarkus.test.support.debezium.Type;
import org.eclipse.microprofile.config.Config;
-import org.eclipse.microprofile.config.ConfigProvider;
import org.jboss.logging.Logger;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.MethodOrderer;
@@ -46,8 +45,7 @@ class DebeziumOracleTest extends AbstractDebeziumTest {
}
@BeforeAll
- public static void setUp() throws SQLException {
- Config config = ConfigProvider.getConfig();
+ public static void setUp(Config config) throws SQLException {
final String jdbcUrl = config.getValue(Type.oracle.getPropertyJdbc(), String.class);
connection = DriverManager.getConnection(jdbcUrl, DebeziumOracleTestResource.DB_USERNAME,
DebeziumOracleTestResource.DB_PASSWORD);
diff --git a/integration-test-groups/debezium/postgresql/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/postgres/DebeziumPostgresTest.java b/integration-test-groups/debezium/postgresql/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/postgres/DebeziumPostgresTest.java
index 402c201b0d..dd92f423bc 100644
--- a/integration-test-groups/debezium/postgresql/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/postgres/DebeziumPostgresTest.java
+++ b/integration-test-groups/debezium/postgresql/src/test/java/org/apache/camel/quarkus/component/debezium/common/it/postgres/DebeziumPostgresTest.java
@@ -26,7 +26,6 @@ import io.restassured.RestAssured;
import org.apache.camel.quarkus.test.support.debezium.AbstractDebeziumTest;
import org.apache.camel.quarkus.test.support.debezium.Type;
import org.eclipse.microprofile.config.Config;
-import org.eclipse.microprofile.config.ConfigProvider;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.MethodOrderer;
@@ -47,8 +46,7 @@ class DebeziumPostgresTest extends AbstractDebeziumTest {
}
@BeforeAll
- public static void setUp() throws SQLException {
- Config config = ConfigProvider.getConfig();
+ public static void setUp(Config config) throws SQLException {
final String jdbcUrl = config.getValue(Type.postgres.getPropertyJdbc(), String.class);
connection = DriverManager.getConnection(jdbcUrl);
}
diff --git a/integration-test-groups/http/http/src/test/java/org/apache/camel/quarkus/component/http/http/it/HttpTest.java b/integration-test-groups/http/http/src/test/java/org/apache/camel/quarkus/component/http/http/it/HttpTest.java
index f03f59571a..41912995d1 100644
--- a/integration-test-groups/http/http/src/test/java/org/apache/camel/quarkus/component/http/http/it/HttpTest.java
+++ b/integration-test-groups/http/http/src/test/java/org/apache/camel/quarkus/component/http/http/it/HttpTest.java
@@ -27,7 +27,7 @@ import io.smallrye.certs.junit5.Certificate;
import org.apache.camel.quarkus.component.http.common.AbstractHttpTest;
import org.apache.camel.quarkus.component.http.common.HttpTestResource;
import org.apache.camel.quarkus.test.support.certificate.TestCertificates;
-import org.eclipse.microprofile.config.ConfigProvider;
+import org.eclipse.microprofile.config.Config;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
@@ -125,8 +125,7 @@ public class HttpTest extends AbstractHttpTest {
}
}
- static Stream<Arguments> proxyProviders() {
- var config = ConfigProvider.getConfig();
+ static Stream<Arguments> proxyProviders(Config config) {
String host = config.getValue("proxy.host", String.class);
int actualPort = config.getValue("proxy.port", Integer.class);
int fakePort = RestAssured.port;
diff --git a/integration-test-groups/mongodb/mongodb/src/test/java/org/apache/camel/quarkus/component/mongodb/it/MongoDbTest.java b/integration-test-groups/mongodb/mongodb/src/test/java/org/apache/camel/quarkus/component/mongodb/it/MongoDbTest.java
index 3dbc48b506..d714c79c21 100644
--- a/integration-test-groups/mongodb/mongodb/src/test/java/org/apache/camel/quarkus/component/mongodb/it/MongoDbTest.java
+++ b/integration-test-groups/mongodb/mongodb/src/test/java/org/apache/camel/quarkus/component/mongodb/it/MongoDbTest.java
@@ -35,7 +35,7 @@ import org.apache.camel.quarkus.test.support.mongodb.MongoDbConstants;
import org.apache.camel.quarkus.test.support.mongodb.MongoDbTestResource;
import org.apache.camel.util.CollectionHelper;
import org.bson.Document;
-import org.eclipse.microprofile.config.ConfigProvider;
+import org.eclipse.microprofile.config.Config;
import org.jboss.logging.Logger;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
@@ -65,8 +65,8 @@ class MongoDbTest {
private static MongoDatabase db;
@BeforeAll
- public static void setUp() throws SQLException {
- final String mongoUrl = "mongodb://" + ConfigProvider.getConfig().getValue("quarkus.mongodb.hosts", String.class);
+ public static void setUp(Config config) throws SQLException {
+ final String mongoUrl = "mongodb://" + config.getValue("quarkus.mongodb.hosts", String.class);
mongoClient = MongoClients.create(mongoUrl);
db = mongoClient.getDatabase("test");
diff --git a/integration-tests-support/kafka/src/main/java/org/apache/camel/quarkus/test/support/kafka/KafkaTestResource.java b/integration-tests-support/kafka/src/main/java/org/apache/camel/quarkus/test/support/kafka/KafkaTestResource.java
index c4446c65d2..01dd7dc08d 100644
--- a/integration-tests-support/kafka/src/main/java/org/apache/camel/quarkus/test/support/kafka/KafkaTestResource.java
+++ b/integration-tests-support/kafka/src/main/java/org/apache/camel/quarkus/test/support/kafka/KafkaTestResource.java
@@ -21,36 +21,40 @@ import java.util.Map;
import java.util.function.Function;
import io.quarkus.test.common.QuarkusTestResourceLifecycleManager;
+import io.strimzi.test.container.StrimziKafkaCluster;
import io.strimzi.test.container.StrimziKafkaContainer;
import org.eclipse.microprofile.config.ConfigProvider;
public class KafkaTestResource implements QuarkusTestResourceLifecycleManager {
protected static final String KAFKA_IMAGE_NAME = ConfigProvider.getConfig().getValue("kafka.container.image", String.class);
+ private StrimziKafkaCluster cluster;
private StrimziKafkaContainer container;
@Override
public Map<String, String> start() {
try {
- start(name -> new StrimziKafkaContainer(name));
+ start(name -> new StrimziKafkaCluster.StrimziKafkaClusterBuilder()
+ .withImage(name)
+ .withContainerCustomizer(c -> c.withLogConsumer(frame -> System.out.print(frame.getUtf8String())))
+ .build());
return Collections.singletonMap("camel.component.kafka.brokers", container.getBootstrapServers());
} catch (Exception e) {
throw new RuntimeException(e);
}
}
- public String start(Function<String, StrimziKafkaContainer> containerSupplier) {
- container = containerSupplier.apply(KAFKA_IMAGE_NAME);
- container.withLogConsumer(frame -> System.out.print(frame.getUtf8String()))
- .waitForRunning()
- .start();
+ public String start(Function<String, StrimziKafkaCluster> clusterSupplier) {
+ cluster = clusterSupplier.apply(KAFKA_IMAGE_NAME);
+ cluster.start();
+ container = cluster.getBrokers().stream().findFirst().orElseThrow();
return container.getBootstrapServers();
}
@Override
public void stop() {
- if (container != null) {
+ if (cluster != null) {
try {
- container.stop();
+ cluster.stop();
} catch (Exception e) {
// ignored
}
diff --git a/integration-tests/arangodb/src/test/java/org/apache/camel/quarkus/component/arangodb/it/ArangodbTest.java b/integration-tests/arangodb/src/test/java/org/apache/camel/quarkus/component/arangodb/it/ArangodbTest.java
index aab9c737e8..b04b5c3ba9 100644
--- a/integration-tests/arangodb/src/test/java/org/apache/camel/quarkus/component/arangodb/it/ArangodbTest.java
+++ b/integration-tests/arangodb/src/test/java/org/apache/camel/quarkus/component/arangodb/it/ArangodbTest.java
@@ -24,7 +24,7 @@ import io.quarkus.test.common.QuarkusTestResource;
import io.quarkus.test.junit.QuarkusTest;
import io.restassured.RestAssured;
import io.restassured.http.ContentType;
-import org.eclipse.microprofile.config.ConfigProvider;
+import org.eclipse.microprofile.config.Config;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
@@ -118,9 +118,9 @@ class ArangodbTest {
}
@BeforeAll
- public static void setup() {
- String host = ConfigProvider.getConfig().getValue("camel.arangodb.host", String.class);
- Integer port = ConfigProvider.getConfig().getValue("camel.arangodb.port", Integer.class);
+ public static void setup(Config config) {
+ String host = config.getValue("camel.arangodb.host", String.class);
+ Integer port = config.getValue("camel.arangodb.port", Integer.class);
arangoDb = new ArangoDB.Builder().host(host, port).build();
arangoDb.createDatabase(DATABASE_NAME);
ArangoDatabase arangoDatabase = arangoDb.db(DATABASE_NAME);
diff --git a/integration-tests/jira/src/test/java/org/apache/camel/quarkus/component/jira/it/JiraTest.java b/integration-tests/jira/src/test/java/org/apache/camel/quarkus/component/jira/it/JiraTest.java
index f8c84045ed..9a9fa5881f 100644
--- a/integration-tests/jira/src/test/java/org/apache/camel/quarkus/component/jira/it/JiraTest.java
+++ b/integration-tests/jira/src/test/java/org/apache/camel/quarkus/component/jira/it/JiraTest.java
@@ -38,7 +38,6 @@ import io.restassured.path.json.JsonPath;
import org.apache.camel.component.jira.oauth.JiraOAuthAuthenticationHandler;
import org.apache.camel.component.jira.oauth.OAuthAsynchronousJiraRestClientFactory;
import org.eclipse.microprofile.config.Config;
-import org.eclipse.microprofile.config.ConfigProvider;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
@@ -52,7 +51,6 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
@QuarkusTest
@QuarkusTestResource(JiraTestResource.class)
public class JiraTest {
-
private static final String ISSUE_ATTACHMENT = "Camel Quarkus Test Issue Attachment";
private static final String ISSUE_COMMENT = "Camel Quarkus Test Issue Comment";
private static final String ISSUE_DESCRIPTION = "Camel Quarkus Test Issue Description";
@@ -60,10 +58,10 @@ public class JiraTest {
private static final String ISSUE_TYPE = "Task";
private static final String UPDATED_ISSUE_SUMMARY = "Updated summary";
private static JiraRestClient REST_CLIENT;
+ Config config;
@BeforeAll
- public static void beforeAll() {
- Config config = ConfigProvider.getConfig();
+ public static void beforeAll(Config config) {
String jiraUrl = config.getValue("camel.component.jira.jira-url", String.class);
Optional<String> username = config.getOptionalValue("camel.component.jira.username", String.class);
Optional<String> password = config.getOptionalValue("camel.component.jira.password", String.class);
@@ -459,9 +457,8 @@ public class JiraTest {
}
}
- private static JiraRestClient getClient() {
+ private JiraRestClient getClient() {
if (REST_CLIENT == null) {
- Config config = ConfigProvider.getConfig();
String jiraUrl = config.getValue("camel.component.jira.jira-url", String.class);
Optional<String> username = config.getOptionalValue("camel.component.jira.username", String.class);
Optional<String> password = config.getOptionalValue("camel.component.jira.password", String.class);
diff --git a/integration-tests/jms-artemis-client/src/test/java/org/apache/camel/quarkus/component/jms/artemis/it/JmsArtemisXATest.java b/integration-tests/jms-artemis-client/src/test/java/org/apache/camel/quarkus/component/jms/artemis/it/JmsArtemisXATest.java
index 2c7cc28148..13e03213db 100644
--- a/integration-tests/jms-artemis-client/src/test/java/org/apache/camel/quarkus/component/jms/artemis/it/JmsArtemisXATest.java
+++ b/integration-tests/jms-artemis-client/src/test/java/org/apache/camel/quarkus/component/jms/artemis/it/JmsArtemisXATest.java
@@ -19,7 +19,7 @@ package org.apache.camel.quarkus.component.jms.artemis.it;
import io.quarkus.test.junit.QuarkusTest;
import io.quarkus.test.junit.TestProfile;
import io.restassured.RestAssured;
-import org.eclipse.microprofile.config.ConfigProvider;
+import org.eclipse.microprofile.config.Config;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
@@ -29,10 +29,10 @@ import static org.hamcrest.core.Is.is;
@TestProfile(JmsArtemisXAEnabled.class)
public class JmsArtemisXATest {
@BeforeAll
- public static void startRoutes() {
+ public static void startRoutes(Config config) {
RestAssured.given()
// see AbstractMessagingTest#beforeAll
- .port(ConfigProvider.getConfig().getValue("quarkus.http.test-port", Integer.class))
+ .port(config.getValue("quarkus.http.test-port", Integer.class))
.get("/messaging/jms/artemis/routes/start");
}
diff --git a/integration-tests/jpa/src/test/java/org/apache/camel/quarkus/component/jpa/it/JpaTestBase.java b/integration-tests/jpa/src/test/java/org/apache/camel/quarkus/component/jpa/it/JpaTestBase.java
index 461b47e697..19bc6b190f 100644
--- a/integration-tests/jpa/src/test/java/org/apache/camel/quarkus/component/jpa/it/JpaTestBase.java
+++ b/integration-tests/jpa/src/test/java/org/apache/camel/quarkus/component/jpa/it/JpaTestBase.java
@@ -25,7 +25,6 @@ import jakarta.json.bind.Jsonb;
import jakarta.json.bind.JsonbBuilder;
import org.apache.camel.quarkus.component.jpa.it.model.Fruit;
import org.eclipse.microprofile.config.Config;
-import org.eclipse.microprofile.config.ConfigProvider;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
@@ -42,10 +41,8 @@ public class JpaTestBase {
static final String[] FRUITS = new String[] { "Orange", "Lemon", "Plum" };
@BeforeAll
- public static void storeFruits() {
- final Config config = ConfigProvider.getConfig();
- int port = config.getValue("quarkus.http.test-port", int.class);
- RestAssured.port = port;
+ public static void storeFruits(Config config) {
+ RestAssured.port = config.getValue("quarkus.http.test-port", int.class);
for (String fruit : FRUITS) {
RestAssured.given()
.contentType(ContentType.JSON)
diff --git a/integration-tests/kafka-oauth/src/test/java/org/apache/camel/quarkus/kafka/oauth/it/KafkaKeycloakTestResource.java b/integration-tests/kafka-oauth/src/test/java/org/apache/camel/quarkus/kafka/oauth/it/KafkaKeycloakTestResource.java
index bebbd44260..4c68f5b3c3 100644
--- a/integration-tests/kafka-oauth/src/test/java/org/apache/camel/quarkus/kafka/oauth/it/KafkaKeycloakTestResource.java
+++ b/integration-tests/kafka-oauth/src/test/java/org/apache/camel/quarkus/kafka/oauth/it/KafkaKeycloakTestResource.java
@@ -27,6 +27,7 @@ import java.util.Map;
import io.quarkus.test.common.QuarkusTestResourceLifecycleManager;
import io.quarkus.test.keycloak.client.KeycloakTestClient;
import io.quarkus.test.keycloak.server.KeycloakContainer;
+import io.strimzi.test.container.StrimziKafkaCluster;
import io.strimzi.test.container.StrimziKafkaContainer;
import org.apache.commons.io.IOUtils;
import org.eclipse.microprofile.config.ConfigProvider;
@@ -43,6 +44,7 @@ public class KafkaKeycloakTestResource implements QuarkusTestResourceLifecycleMa
private static final Logger LOG = Logger.getLogger(KafkaKeycloakTestResource.class);
private static final String REALM_JSON = "keycloak/realms/kafka-authz-realm.json";
+ private StrimziKafkaCluster kafkaCluster;
private StrimziKafkaContainer kafka;
private KeycloakContainer keycloak;
@@ -85,10 +87,13 @@ public class KafkaKeycloakTestResource implements QuarkusTestResourceLifecycleMa
//Start kafka container
String imageName = ConfigProvider.getConfig().getValue("kafka.container.image", String.class);
- this.kafka = new StrimziKafkaContainer(imageName)
- .withBrokerId(1)
- .withKafkaConfigurationMap(Map.ofEntries(
- entry("listener.security.protocol.map", "JWT:SASL_PLAINTEXT,BROKER1:PLAINTEXT,CONTROLLER:PLAINTEXT"),
+ this.kafkaCluster = new StrimziKafkaCluster.StrimziKafkaClusterBuilder()
+ .withImage(imageName)
+ .withSharedNetwork()
+ .withBootstrapServers(c -> String.format("JWT://%s:%s", c.getHost(), c.getMappedPort(KAFKA_PORT)))
+ .withAdditionalKafkaConfiguration(Map.ofEntries(
+ entry("listener.security.protocol.map",
+ "JWT:SASL_PLAINTEXT,BROKER1:PLAINTEXT,CONTROLLER:PLAINTEXT"),
entry("listener.name.jwt.oauthbearer.sasl.jaas.config",
getOauthSaslJaasConfig(keycloak.getInternalUrl(), keycloak.getServerUrl())),
entry("listener.name.jwt.plain.sasl.jaas.config",
@@ -104,10 +109,12 @@ public class KafkaKeycloakTestResource implements QuarkusTestResourceLifecycleMa
"io.strimzi.kafka.oauth.client.JaasClientOauthLoginCallbackHandler"),
entry("listener.name.jwt.plain.sasl.server.callback.handler.class",
"io.strimzi.kafka.oauth.server.plain.JaasServerOauthOverPlainValidatorCallbackHandler")))
- .withNetworkAliases("kafka")
- .withBootstrapServers(
- c -> String.format("JWT://%s:%s", c.getHost(), c.getMappedPort(KAFKA_PORT)));
- this.kafka.start();
+ .withContainerCustomizer(container -> {
+ container.withNetworkAliases("kafka");
+ })
+ .build();
+ this.kafkaCluster.start();
+ this.kafka = this.kafkaCluster.getBrokers().stream().findFirst().orElseThrow();
LOG.info(this.kafka.getLogs());
properties.put("kafka.bootstrap.servers", this.kafka.getBootstrapServers());
@@ -122,8 +129,8 @@ public class KafkaKeycloakTestResource implements QuarkusTestResourceLifecycleMa
@Override
public void stop() {
- if (kafka != null) {
- kafka.stop();
+ if (kafkaCluster != null) {
+ kafkaCluster.stop();
}
if (keycloak != null) {
keycloak.stop();
diff --git a/integration-tests/kafka-sasl-ssl/src/test/java/org/apache/camel/quarkus/kafka/sasl/KafkaSaslSslTestResource.java b/integration-tests/kafka-sasl-ssl/src/test/java/org/apache/camel/quarkus/kafka/sasl/KafkaSaslSslTestResource.java
index ab1e9b34c7..5e0268a149 100644
--- a/integration-tests/kafka-sasl-ssl/src/test/java/org/apache/camel/quarkus/kafka/sasl/KafkaSaslSslTestResource.java
+++ b/integration-tests/kafka-sasl-ssl/src/test/java/org/apache/camel/quarkus/kafka/sasl/KafkaSaslSslTestResource.java
@@ -23,14 +23,17 @@ import java.util.function.Consumer;
import java.util.stream.Stream;
import com.github.dockerjava.api.command.CreateContainerCmd;
-import com.github.dockerjava.api.command.InspectContainerResponse;
+import io.strimzi.test.container.StrimziKafkaCluster;
import io.strimzi.test.container.StrimziKafkaContainer;
import org.apache.camel.quarkus.test.support.kafka.KafkaTestResource;
import org.apache.camel.util.CollectionHelper;
import org.jboss.logging.Logger;
+import org.testcontainers.containers.Container;
import org.testcontainers.images.builder.Transferable;
import org.testcontainers.utility.MountableFile;
+import static io.strimzi.test.container.StrimziKafkaContainer.KAFKA_PORT;
+
public class KafkaSaslSslTestResource extends KafkaTestResource {
static final Logger LOG = Logger.getLogger(KafkaSaslSslTestResource.class);
static final String KAFKA_KEYSTORE_PASSWORD = "changeit";
@@ -44,9 +47,76 @@ public class KafkaSaslSslTestResource extends KafkaTestResource {
static final String KAFKA_KEYSTORE_TYPE = "PKCS12";
static final String KAFKA_TRUSTSTORE_FILE = KAFKA_HOSTNAME + "-truststore.p12";
+ private StrimziKafkaCluster cluster;
+ private StrimziKafkaContainer container;
+
@Override
public Map<String, String> start() {
- String bootstrapServers = start(name -> new SaslSslKafkaContainer(name));
+ String protocolMap = "SASL_SSL:SASL_SSL,BROKER1:PLAINTEXT,CONTROLLER:PLAINTEXT";
+ Map<String, String> config = Map.ofEntries(
+ Map.entry("inter.broker.listener.name", "BROKER1"),
+ Map.entry("listener.security.protocol.map", protocolMap),
+ Map.entry("sasl.enabled.mechanisms", "SCRAM-SHA-512"),
+ Map.entry("sasl.mechanism.inter.broker.protocol", "SCRAM-SHA-512"),
+ Map.entry("ssl.keystore.location", "/etc/kafka/secrets/" + KAFKA_KEYSTORE_FILE),
+ Map.entry("ssl.keystore.password", KAFKA_KEYSTORE_PASSWORD),
+ Map.entry("ssl.keystore.type", KAFKA_KEYSTORE_TYPE),
+ Map.entry("ssl.truststore.location", "/etc/kafka/secrets/" + KAFKA_TRUSTSTORE_FILE),
+ Map.entry("ssl.truststore.password", KAFKA_KEYSTORE_PASSWORD),
+ Map.entry("ssl.truststore.type", KAFKA_KEYSTORE_TYPE),
+ Map.entry("ssl.endpoint.identification.algorithm", ""));
+
+ String setupUsersScript = "#!/bin/bash\n"
+ + "/opt/kafka/bin/kafka-configs.sh"
+ + " --bootstrap-server :9091"
+ + " --alter --add-config 'SCRAM-SHA-512=[iterations=8192,password=" + ALICE_PASSWORD
+ + "]' --entity-type users --entity-name alice";
+
+ cluster = new StrimziKafkaCluster.StrimziKafkaClusterBuilder()
+ .withImage(KAFKA_IMAGE_NAME)
+ .withAdditionalKafkaConfiguration(config)
+ .withBootstrapServers(c -> String.format("SASL_SSL://%s:%s", c.getHost(), c.getMappedPort(KAFKA_PORT)))
+ .withContainerCustomizer(container -> {
+ container.withEnv("KAFKA_OPTS", "-Djava.security.auth.login.config=/etc/kafka/kafka_server_jaas.conf");
+ container.withCreateContainerCmdModifier(new Consumer<CreateContainerCmd>() {
+ @Override
+ public void accept(CreateContainerCmd createContainerCmd) {
+ createContainerCmd.withName(KAFKA_BROKER_HOSTNAME);
+ createContainerCmd.withHostName(KAFKA_BROKER_HOSTNAME);
+ }
+ });
+ container.withEnv("KAFKA_HEAP_OPTS", "-Xmx512m -Xms256m");
+ container.withLogConsumer(frame -> System.out.print(frame.getUtf8String()));
+ container.withCopyFileToContainer(
+ MountableFile.forClasspathResource("config/kafka_server_jaas.conf"),
+ "/etc/kafka/kafka_server_jaas.conf");
+ Stream.of(KAFKA_KEYSTORE_FILE, KAFKA_TRUSTSTORE_FILE)
+ .forEach(keyStoreFile -> {
+ container.withCopyFileToContainer(
+ MountableFile.forHostPath(Path.of(CERTS_BASEDIR).resolve(keyStoreFile)),
+ "/etc/kafka/secrets/" + keyStoreFile);
+ });
+ container.withCopyToContainer(
+ Transferable.of(setupUsersScript.getBytes(StandardCharsets.UTF_8), 0775),
+ "/setup-users.sh");
+ })
+ .build();
+ cluster.start();
+ container = cluster.getBrokers().stream().findFirst().orElseThrow();
+
+ // Execute setup script after container starts
+ try {
+ Container.ExecResult execResult = container.execInContainer("/setup-users.sh");
+ if (execResult.getExitCode() != 0) {
+ LOG.warnf("Execution of setup-users.sh failed with exit code %d", execResult.getExitCode());
+ LOG.warnf("STDOUT: %s", execResult.getStdout());
+ LOG.warnf("STDERR: %s", execResult.getStderr());
+ }
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+
+ String bootstrapServers = container.getBootstrapServers();
String jaasConfig = "org.apache.kafka.common.security.scram.ScramLoginModule required "
+ "username=\"alice\" "
@@ -67,87 +137,13 @@ public class KafkaSaslSslTestResource extends KafkaTestResource {
"camel.component.kafka.ssl-truststore-type", KAFKA_KEYSTORE_TYPE);
}
- // KafkaContainer does not support SASL SSL OOTB so we need some customizations
- static final class SaslSslKafkaContainer extends StrimziKafkaContainer {
- SaslSslKafkaContainer(final String dockerImageName) {
- super(dockerImageName);
- }
-
- @Override
- public String getBootstrapServers() {
- return String.format("SASL_SSL://%s:%s", getHost(), getMappedPort(KAFKA_PORT));
- }
-
- @Override
- protected void configure() {
- super.configure();
-
- String protocolMap = "SASL_SSL:SASL_SSL,BROKER1:PLAINTEXT,CONTROLLER:PLAINTEXT";
- Map<String, String> config = Map.ofEntries(
- Map.entry("inter.broker.listener.name", "BROKER1"),
- Map.entry("listener.security.protocol.map", protocolMap),
- Map.entry("sasl.enabled.mechanisms", "SCRAM-SHA-512"),
- Map.entry("sasl.mechanism.inter.broker.protocol", "SCRAM-SHA-512"),
- Map.entry("ssl.keystore.location", "/etc/kafka/secrets/" + KAFKA_KEYSTORE_FILE),
- Map.entry("ssl.keystore.password", KAFKA_KEYSTORE_PASSWORD),
- Map.entry("ssl.keystore.type", KAFKA_KEYSTORE_TYPE),
- Map.entry("ssl.truststore.location", "/etc/kafka/secrets/" + KAFKA_TRUSTSTORE_FILE),
- Map.entry("ssl.truststore.password", KAFKA_KEYSTORE_PASSWORD),
- Map.entry("ssl.truststore.type", KAFKA_KEYSTORE_TYPE),
- Map.entry("ssl.endpoint.identification.algorithm", ""));
-
- withEnv("KAFKA_OPTS", "-Djava.security.auth.login.config=/etc/kafka/kafka_server_jaas.conf");
- withCreateContainerCmdModifier(new Consumer<CreateContainerCmd>() {
- @Override
- public void accept(CreateContainerCmd createContainerCmd) {
- createContainerCmd.withName(KAFKA_BROKER_HOSTNAME);
- createContainerCmd.withHostName(KAFKA_BROKER_HOSTNAME);
- }
- });
- withBrokerId(1);
- withNodeId(1);
- withKafkaConfigurationMap(config);
- withEnv("KAFKA_HEAP_OPTS", "-Xmx512m -Xms256m");
- withLogConsumer(frame -> System.out.print(frame.getUtf8String()));
- }
-
- @Override
- protected void containerIsStarting(InspectContainerResponse containerInfo, boolean reused) {
- super.containerIsStarting(containerInfo, reused);
- copyFileToContainer(
- MountableFile.forClasspathResource("config/kafka_server_jaas.conf"),
- "/etc/kafka/kafka_server_jaas.conf");
-
- Stream.of(KAFKA_KEYSTORE_FILE, KAFKA_TRUSTSTORE_FILE)
- .forEach(keyStoreFile -> {
- copyFileToContainer(
- MountableFile.forHostPath(Path.of(CERTS_BASEDIR).resolve(keyStoreFile)),
- "/etc/kafka/secrets/" + keyStoreFile);
- });
-
- String setupUsersScript = "#!/bin/bash\n"
- + "/opt/kafka/bin/kafka-configs.sh"
- + " --bootstrap-server :" + INTER_BROKER_LISTENER_PORT
- + " --alter --add-config 'SCRAM-SHA-512=[iterations=8192,password=" + ALICE_PASSWORD
- + "]' --entity-type users --entity-name alice";
-
- copyFileToContainer(
- Transferable.of(setupUsersScript.getBytes(StandardCharsets.UTF_8), 0775),
- "/setup-users.sh");
- }
-
- @Override
- protected void containerIsStarted(InspectContainerResponse containerInfo) {
- super.containerIsStarted(containerInfo);
+ @Override
+ public void stop() {
+ if (cluster != null) {
try {
- ExecResult execResult = execInContainer("/setup-users.sh");
- if (execResult.getExitCode() != 0) {
- LOG.warnf("Execution of setup-users.sh failed with exit code %d", execResult.getExitCode());
- LOG.warnf("STDOUT: %s", execResult.getStdout());
- LOG.warnf("STDERR: %s", execResult.getStderr());
- }
+ cluster.stop();
} catch (Exception e) {
- throw new RuntimeException(e);
+ // Ignored
}
}
}
diff --git a/integration-tests/kafka-sasl/src/test/java/org/apache/camel/quarkus/kafka/sasl/KafkaSaslTestResource.java b/integration-tests/kafka-sasl/src/test/java/org/apache/camel/quarkus/kafka/sasl/KafkaSaslTestResource.java
index 444edfb7f3..f264046379 100644
--- a/integration-tests/kafka-sasl/src/test/java/org/apache/camel/quarkus/kafka/sasl/KafkaSaslTestResource.java
+++ b/integration-tests/kafka-sasl/src/test/java/org/apache/camel/quarkus/kafka/sasl/KafkaSaslTestResource.java
@@ -25,7 +25,7 @@ import java.util.function.Consumer;
import java.util.stream.Stream;
import com.github.dockerjava.api.command.CreateContainerCmd;
-import com.github.dockerjava.api.command.InspectContainerResponse;
+import io.strimzi.test.container.StrimziKafkaCluster;
import io.strimzi.test.container.StrimziKafkaContainer;
import org.apache.camel.quarkus.test.support.kafka.KafkaTestResource;
import org.apache.camel.util.CollectionHelper;
@@ -33,11 +33,14 @@ import org.apache.commons.io.FileUtils;
import org.apache.kafka.clients.CommonClientConfigs;
import org.testcontainers.utility.MountableFile;
+import static io.strimzi.test.container.StrimziKafkaContainer.KAFKA_PORT;
+
public class KafkaSaslTestResource extends KafkaTestResource {
static final String KAFKA_BROKER_HOSTNAME = "broker-1";
private Path serviceBindingDir;
- private SaslKafkaContainer container;
+ private StrimziKafkaCluster cluster;
+ private StrimziKafkaContainer container;
@Override
public Map<String, String> start() {
@@ -59,9 +62,35 @@ public class KafkaSaslTestResource extends KafkaTestResource {
throw new RuntimeException(e);
}
- container = new SaslKafkaContainer(KAFKA_IMAGE_NAME);
- container.waitForRunning();
- container.start();
+ String protocolMap = "SASL_PLAINTEXT:SASL_PLAINTEXT,BROKER1:PLAINTEXT,CONTROLLER:PLAINTEXT";
+ Map<String, String> config = Map.ofEntries(
+ Map.entry("inter.broker.listener.name", "BROKER1"),
+ Map.entry("listener.security.protocol.map", protocolMap),
+ Map.entry("zookeeper.sasl.enabled", "false"),
+ Map.entry("sasl.enabled.mechanisms", "PLAIN"),
+ Map.entry("sasl.mechanism.inter.broker.protocol", "PLAIN"));
+
+ cluster = new StrimziKafkaCluster.StrimziKafkaClusterBuilder()
+ .withImage(KAFKA_IMAGE_NAME)
+ .withAdditionalKafkaConfiguration(config)
+ .withBootstrapServers(c -> String.format("SASL_PLAINTEXT://%s:%s", c.getHost(), c.getMappedPort(KAFKA_PORT)))
+ .withContainerCustomizer(container -> {
+ container.withEnv("KAFKA_OPTS", "-Djava.security.auth.login.config=/etc/kafka/kafka_server_jaas.conf");
+ container.withCreateContainerCmdModifier(new Consumer<CreateContainerCmd>() {
+ @Override
+ public void accept(CreateContainerCmd createContainerCmd) {
+ createContainerCmd.withName(KAFKA_BROKER_HOSTNAME);
+ createContainerCmd.withHostName(KAFKA_BROKER_HOSTNAME);
+ }
+ });
+ container.withLogConsumer(frame -> System.out.print(frame.getUtf8String()));
+ container.withCopyFileToContainer(
+ MountableFile.forClasspathResource("config/kafka_server_jaas.conf"),
+ "/etc/kafka/kafka_server_jaas.conf");
+ })
+ .build();
+ cluster.start();
+ container = cluster.getBrokers().stream().findFirst().orElseThrow();
return CollectionHelper.mapOf(
"kafka." + CommonClientConfigs.BOOTSTRAP_SERVERS_CONFIG, container.getBootstrapServers(),
"quarkus.kubernetes-service-binding.root", serviceBindingDir.toString());
@@ -69,59 +98,13 @@ public class KafkaSaslTestResource extends KafkaTestResource {
@Override
public void stop() {
- if (this.container != null) {
+ if (this.cluster != null) {
try {
- this.container.stop();
+ this.cluster.stop();
FileUtils.deleteDirectory(serviceBindingDir.toFile());
} catch (Exception e) {
// Ignored
}
}
}
-
- // KafkaContainer does not support SASL OOTB so we need some customizations
- static final class SaslKafkaContainer extends StrimziKafkaContainer {
- SaslKafkaContainer(final String dockerImageName) {
- super(dockerImageName);
- }
-
- @Override
- public String getBootstrapServers() {
- return String.format("SASL_PLAINTEXT://%s:%s", getHost(), getMappedPort(KAFKA_PORT));
- }
-
- @Override
- protected void configure() {
- super.configure();
-
- String protocolMap = "SASL_PLAINTEXT:SASL_PLAINTEXT,BROKER1:PLAINTEXT,CONTROLLER:PLAINTEXT";
- Map<String, String> config = Map.ofEntries(
- Map.entry("inter.broker.listener.name", "BROKER1"),
- Map.entry("listener.security.protocol.map", protocolMap),
- Map.entry("zookeeper.sasl.enabled", "false"),
- Map.entry("sasl.enabled.mechanisms", "PLAIN"),
- Map.entry("sasl.mechanism.inter.broker.protocol", "PLAIN"));
-
- withEnv("KAFKA_OPTS", "-Djava.security.auth.login.config=/etc/kafka/kafka_server_jaas.conf");
- withCreateContainerCmdModifier(new Consumer<CreateContainerCmd>() {
- @Override
- public void accept(CreateContainerCmd createContainerCmd) {
- createContainerCmd.withName(KAFKA_BROKER_HOSTNAME);
- createContainerCmd.withHostName(KAFKA_BROKER_HOSTNAME);
- }
- });
- withBrokerId(1);
- withNodeId(1);
- withKafkaConfigurationMap(config);
- withLogConsumer(frame -> System.out.print(frame.getUtf8String()));
- }
-
- @Override
- protected void containerIsStarting(InspectContainerResponse containerInfo, boolean reused) {
- super.containerIsStarting(containerInfo, reused);
- copyFileToContainer(
- MountableFile.forClasspathResource("config/kafka_server_jaas.conf"),
- "/etc/kafka/kafka_server_jaas.conf");
- }
- }
}
diff --git a/integration-tests/kafka-ssl/src/test/java/org/apache/camel/quarkus/kafka/ssl/KafkaSslTestResource.java b/integration-tests/kafka-ssl/src/test/java/org/apache/camel/quarkus/kafka/ssl/KafkaSslTestResource.java
index 5d0e05eeea..11cc30c95f 100644
--- a/integration-tests/kafka-ssl/src/test/java/org/apache/camel/quarkus/kafka/ssl/KafkaSslTestResource.java
+++ b/integration-tests/kafka-ssl/src/test/java/org/apache/camel/quarkus/kafka/ssl/KafkaSslTestResource.java
@@ -22,13 +22,14 @@ import java.util.function.Consumer;
import java.util.stream.Stream;
import com.github.dockerjava.api.command.CreateContainerCmd;
-import com.github.dockerjava.api.command.InspectContainerResponse;
-import io.strimzi.test.container.StrimziKafkaContainer;
+import io.strimzi.test.container.StrimziKafkaCluster;
import org.apache.camel.quarkus.test.support.kafka.KafkaTestResource;
import org.apache.camel.util.CollectionHelper;
import org.apache.kafka.clients.CommonClientConfigs;
import org.testcontainers.utility.MountableFile;
+import static io.strimzi.test.container.StrimziKafkaContainer.KAFKA_PORT;
+
public class KafkaSslTestResource extends KafkaTestResource {
static final String KAFKA_KEYSTORE_PASSWORD = "changeit";
@@ -43,37 +44,7 @@ public class KafkaSslTestResource extends KafkaTestResource {
@Override
public Map<String, String> start() {
- String bootstrapServers = start(name -> new SSLKafkaContainer(name));
-
- return CollectionHelper.mapOf(
- "kafka." + CommonClientConfigs.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers,
- "camel.component.kafka.brokers", bootstrapServers,
- "camel.component.kafka.security-protocol", "SSL",
- "camel.component.kafka.ssl-key-password", KAFKA_KEYSTORE_PASSWORD,
- "camel.component.kafka.ssl-keystore-location", Path.of(CERTS_BASEDIR).resolve(KAFKA_KEYSTORE_FILE).toString(),
- "camel.component.kafka.ssl-keystore-password", KAFKA_KEYSTORE_PASSWORD,
- "camel.component.kafka.ssl-keystore-type", KAFKA_KEYSTORE_TYPE,
- "camel.component.kafka.ssl-truststore-location",
- Path.of(CERTS_BASEDIR).resolve(KAFKA_TRUSTSTORE_FILE).toString(),
- "camel.component.kafka.ssl-truststore-password", KAFKA_KEYSTORE_PASSWORD,
- "camel.component.kafka.ssl-truststore-type", KAFKA_KEYSTORE_TYPE);
- }
-
- // KafkaContainer does not support SSL OOTB so we need some customizations
- static final class SSLKafkaContainer extends StrimziKafkaContainer {
- SSLKafkaContainer(final String dockerImageName) {
- super(dockerImageName);
- }
-
- @Override
- public String getBootstrapServers() {
- return String.format("SSL://%s:%s", getHost(), getMappedPort(KAFKA_PORT));
- }
-
- @Override
- protected void configure() {
- super.configure();
-
+ String bootstrapServers = start(name -> {
String protocolMap = "SSL:SSL,BROKER1:PLAINTEXT,CONTROLLER:PLAINTEXT";
Map<String, String> config = Map.ofEntries(
Map.entry("inter.broker.listener.name", "BROKER1"),
@@ -86,29 +57,40 @@ public class KafkaSslTestResource extends KafkaTestResource {
Map.entry("ssl.truststore.type", KAFKA_KEYSTORE_TYPE),
Map.entry("ssl.endpoint.identification.algorithm", ""));
- withCreateContainerCmdModifier(new Consumer<CreateContainerCmd>() {
- @Override
- public void accept(CreateContainerCmd createContainerCmd) {
- createContainerCmd.withName(KAFKA_BROKER_HOSTNAME);
- createContainerCmd.withHostName(KAFKA_BROKER_HOSTNAME);
- }
- });
- withBrokerId(1);
- withNodeId(1);
- withKafkaConfigurationMap(config);
- withLogConsumer(frame -> System.out.print(frame.getUtf8String()));
- }
-
- @Override
- protected void containerIsStarting(InspectContainerResponse containerInfo, boolean reused) {
- super.containerIsStarting(containerInfo, reused);
+ return new StrimziKafkaCluster.StrimziKafkaClusterBuilder()
+ .withImage(name)
+ .withAdditionalKafkaConfiguration(config)
+ .withBootstrapServers(c -> String.format("SSL://%s:%s", c.getHost(), c.getMappedPort(KAFKA_PORT)))
+ .withContainerCustomizer(container -> {
+ container.withCreateContainerCmdModifier(new Consumer<CreateContainerCmd>() {
+ @Override
+ public void accept(CreateContainerCmd createContainerCmd) {
+ createContainerCmd.withName(KAFKA_BROKER_HOSTNAME);
+ createContainerCmd.withHostName(KAFKA_BROKER_HOSTNAME);
+ }
+ });
+ container.withLogConsumer(frame -> System.out.print(frame.getUtf8String()));
+ Stream.of(KAFKA_KEYSTORE_FILE, KAFKA_TRUSTSTORE_FILE)
+ .forEach(keyStoreFile -> {
+ container.withCopyFileToContainer(
+ MountableFile.forHostPath(Path.of(CERTS_BASEDIR).resolve(keyStoreFile)),
+ "/etc/kafka/secrets/" + keyStoreFile);
+ });
+ })
+ .build();
+ });
- Stream.of(KAFKA_KEYSTORE_FILE, KAFKA_TRUSTSTORE_FILE)
- .forEach(keyStoreFile -> {
- copyFileToContainer(
- MountableFile.forHostPath(Path.of(CERTS_BASEDIR).resolve(keyStoreFile)),
- "/etc/kafka/secrets/" + keyStoreFile);
- });
- }
+ return CollectionHelper.mapOf(
+ "kafka." + CommonClientConfigs.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers,
+ "camel.component.kafka.brokers", bootstrapServers,
+ "camel.component.kafka.security-protocol", "SSL",
+ "camel.component.kafka.ssl-key-password", KAFKA_KEYSTORE_PASSWORD,
+ "camel.component.kafka.ssl-keystore-location", Path.of(CERTS_BASEDIR).resolve(KAFKA_KEYSTORE_FILE).toString(),
+ "camel.component.kafka.ssl-keystore-password", KAFKA_KEYSTORE_PASSWORD,
+ "camel.component.kafka.ssl-keystore-type", KAFKA_KEYSTORE_TYPE,
+ "camel.component.kafka.ssl-truststore-location",
+ Path.of(CERTS_BASEDIR).resolve(KAFKA_TRUSTSTORE_FILE).toString(),
+ "camel.component.kafka.ssl-truststore-password", KAFKA_KEYSTORE_PASSWORD,
+ "camel.component.kafka.ssl-truststore-type", KAFKA_KEYSTORE_TYPE);
}
}
diff --git a/integration-tests/kudu/src/test/java/org/apache/camel/quarkus/component/kudu/it/KuduTest.java b/integration-tests/kudu/src/test/java/org/apache/camel/quarkus/component/kudu/it/KuduTest.java
index 4e0aad2f14..958b969615 100644
--- a/integration-tests/kudu/src/test/java/org/apache/camel/quarkus/component/kudu/it/KuduTest.java
+++ b/integration-tests/kudu/src/test/java/org/apache/camel/quarkus/component/kudu/it/KuduTest.java
@@ -25,7 +25,7 @@ import io.restassured.http.ContentType;
import org.apache.camel.quarkus.test.DisabledIfFipsMode;
import org.apache.kudu.client.KuduClient;
import org.apache.kudu.client.KuduException;
-import org.eclipse.microprofile.config.ConfigProvider;
+import org.eclipse.microprofile.config.Config;
import org.jboss.logging.Logger;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
@@ -47,8 +47,8 @@ class KuduTest {
static KuduClient client;
@BeforeAll
- static void setup() {
- String authority = ConfigProvider.getConfig().getValue(KUDU_AUTHORITY_CONFIG_KEY, String.class);
+ static void setup(Config config) {
+ String authority = config.getValue(KUDU_AUTHORITY_CONFIG_KEY, String.class);
client = new KuduClient.KuduClientBuilder(authority).build();
}
diff --git a/integration-tests/mail/src/test/java/org/apache/camel/quarkus/component/mail/MailTest.java b/integration-tests/mail/src/test/java/org/apache/camel/quarkus/component/mail/MailTest.java
index 24dd1a484f..3ff79a5559 100644
--- a/integration-tests/mail/src/test/java/org/apache/camel/quarkus/component/mail/MailTest.java
+++ b/integration-tests/mail/src/test/java/org/apache/camel/quarkus/component/mail/MailTest.java
@@ -44,7 +44,6 @@ import org.apache.camel.quarkus.test.support.certificate.TestCertificates;
import org.awaitility.Awaitility;
import org.eclipse.angus.mail.util.MailConnectException;
import org.eclipse.microprofile.config.Config;
-import org.eclipse.microprofile.config.ConfigProvider;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
@@ -82,9 +81,8 @@ public class MailTest {
+ "${delimiter}--\r\n";
@BeforeAll
- public static void beforeAll() {
+ public static void beforeAll(Config config) {
// Configure users
- Config config = ConfigProvider.getConfig();
String userJson = String.format("{ \"email\": \"%s\", \"login\": \"%s\", \"password\": \"%s\"}", EMAIL_ADDRESS,
USERNAME, PASSWORD);
@@ -96,9 +94,8 @@ public class MailTest {
}
@AfterEach
- public void afterEach() {
+ public void afterEach(Config config) {
// Clear mailboxes
- Config config = ConfigProvider.getConfig();
RestAssured.given()
.post("http://" + config.getValue("mail.host", String.class) + ":"
+ config.getValue("mail.api.port", Integer.class) + "/api/mail/purge")
diff --git a/integration-tests/olingo4/src/test/java/org/apache/camel/quarkus/component/olingo4/it/Olingo4Test.java b/integration-tests/olingo4/src/test/java/org/apache/camel/quarkus/component/olingo4/it/Olingo4Test.java
index 0ed89fc9e8..2e4d56807c 100644
--- a/integration-tests/olingo4/src/test/java/org/apache/camel/quarkus/component/olingo4/it/Olingo4Test.java
+++ b/integration-tests/olingo4/src/test/java/org/apache/camel/quarkus/component/olingo4/it/Olingo4Test.java
@@ -29,7 +29,7 @@ import org.apache.http.impl.client.HttpClients;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import org.apache.http.protocol.HttpCoreContext;
-import org.eclipse.microprofile.config.ConfigProvider;
+import org.eclipse.microprofile.config.Config;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
@@ -38,15 +38,13 @@ import static org.hamcrest.core.Is.is;
@QuarkusTest
@QuarkusTestResource(OdataTestResource.class)
class Olingo4Test {
-
- public static final String TEST_SERVICE_BASE_URL = ConfigProvider.getConfig().getValue("olingo4.test.url", String.class);
-
private static String sessionId;
@BeforeAll
- public static void beforeAll() throws IOException {
+ public static void beforeAll(Config config) throws IOException {
// Use the same session id for each request to the demo Olingo4 Service
- sessionId = getSession();
+ String testServiceBaseUrl = config.getValue("olingo4.test.url", String.class);
+ sessionId = getSession(testServiceBaseUrl);
}
@Test
@@ -113,12 +111,13 @@ class Olingo4Test {
.statusCode(404);
}
- private static String getSession() throws IOException {
- CloseableHttpClient httpClient = HttpClients.createDefault();
- HttpGet httpGet = new HttpGet(TEST_SERVICE_BASE_URL);
- HttpContext httpContext = new BasicHttpContext();
- httpClient.execute(httpGet, httpContext);
- HttpUriRequest currentReq = (HttpUriRequest) httpContext.getAttribute(HttpCoreContext.HTTP_REQUEST);
- return currentReq.getURI().getPath().split("/")[2];
+ private static String getSession(String testServiceBaseUrl) throws IOException {
+ try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
+ HttpGet httpGet = new HttpGet(testServiceBaseUrl);
+ HttpContext httpContext = new BasicHttpContext();
+ httpClient.execute(httpGet, httpContext);
+ HttpUriRequest currentReq = (HttpUriRequest) httpContext.getAttribute(HttpCoreContext.HTTP_REQUEST);
+ return currentReq.getURI().getPath().split("/")[2];
+ }
}
}
diff --git a/integration-tests/opentelemetry/src/test/java/org/apache/camel/quarkus/component/opentelemetry/it/OpenTelemetryTest.java b/integration-tests/opentelemetry/src/test/java/org/apache/camel/quarkus/component/opentelemetry/it/OpenTelemetryTest.java
index d36b7b893c..8bcda24e70 100644
--- a/integration-tests/opentelemetry/src/test/java/org/apache/camel/quarkus/component/opentelemetry/it/OpenTelemetryTest.java
+++ b/integration-tests/opentelemetry/src/test/java/org/apache/camel/quarkus/component/opentelemetry/it/OpenTelemetryTest.java
@@ -122,27 +122,30 @@ class OpenTelemetryTest {
assertTrue(Long.parseLong(timestamp) > 0);
- // Verify the span hierarchy is JAX-RS Service -> Direct Endpoint -> Bean Endpoint -> Bean method -> JDBC query
- await().atMost(30, TimeUnit.SECONDS).pollDelay(50, TimeUnit.MILLISECONDS).until(() -> getSpans().size() == 6);
+ // Verify the span hierarchy is JAX-RS Service -> Direct Endpoint -> Bean Endpoint -> JDBC query
+ await().atMost(30, TimeUnit.SECONDS).pollDelay(50, TimeUnit.MILLISECONDS).until(() -> getSpans().size() == 5);
List<Map<String, String>> spans = getSpans();
- assertEquals(6, spans.size());
- assertEquals(spans.get(0).get("parentId"), spans.get(1).get("parentId"));
- assertEquals(spans.get(0).get("code.function"), "getConnection");
+ assertEquals(5, spans.size());
+ // JDBC SELECT operation span
+ assertEquals(spans.get(0).get("parentId"), spans.get(1).get("spanId"));
+ assertEquals(spans.get(0).get("db.operation"), "SELECT");
+
+ // Bean endpoint span
assertEquals(spans.get(1).get("parentId"), spans.get(2).get("spanId"));
- assertEquals(spans.get(1).get("db.operation"), "SELECT");
+ assertEquals(spans.get(1).get("camel.uri"), "bean://jdbcQueryBean");
+ // Direct endpoint INTERNAL span
assertEquals(spans.get(2).get("parentId"), spans.get(3).get("spanId"));
- assertEquals(spans.get(2).get("camel.uri"), "bean://jdbcQueryBean");
+ assertEquals(spans.get(2).get("camel.uri"), "direct://jdbcQuery");
+ // Direct endpoint CLIENT span
assertEquals(spans.get(3).get("parentId"), spans.get(4).get("spanId"));
assertEquals(spans.get(3).get("camel.uri"), "direct://jdbcQuery");
- assertEquals(spans.get(4).get("parentId"), spans.get(5).get("spanId"));
- assertEquals(spans.get(4).get("camel.uri"), "direct://jdbcQuery");
-
- assertEquals(spans.get(5).get("parentId"), "0000000000000000");
- assertEquals(spans.get(5).get(CODE_FUNCTION_NAME.getKey()),
+ // JAX-RS Server span (root)
+ assertEquals(spans.get(4).get("parentId"), "0000000000000000");
+ assertEquals(spans.get(4).get(CODE_FUNCTION_NAME.getKey()),
"org.apache.camel.quarkus.component.opentelemetry.it.OpenTelemetryResource.jdbcQuery");
}
diff --git a/integration-tests/opentelemetry2/src/test/java/org/apache/camel/quarkus/component/opentelemetry2/it/Opentelemetry2Test.java b/integration-tests/opentelemetry2/src/test/java/org/apache/camel/quarkus/component/opentelemetry2/it/Opentelemetry2Test.java
index f9a17da50a..ced76dc971 100644
--- a/integration-tests/opentelemetry2/src/test/java/org/apache/camel/quarkus/component/opentelemetry2/it/Opentelemetry2Test.java
+++ b/integration-tests/opentelemetry2/src/test/java/org/apache/camel/quarkus/component/opentelemetry2/it/Opentelemetry2Test.java
@@ -138,29 +138,33 @@ class Opentelemetry2Test {
assertTrue(Long.parseLong(timestamp) > 0);
- // Verify the span hierarchy is JAX-RS Service -> Direct Endpoint -> Bean Endpoint -> Bean method -> JDBC query
- await().atMost(30, TimeUnit.SECONDS).pollDelay(50, TimeUnit.MILLISECONDS).until(() -> getSpans().size() == 6);
+ // Verify the span hierarchy is JAX-RS Service -> Direct Endpoint -> Bean Endpoint -> JDBC query
+ await().atMost(30, TimeUnit.SECONDS).pollDelay(50, TimeUnit.MILLISECONDS).until(() -> getSpans().size() == 5);
List<Map<String, String>> spans = getSpans();
- assertEquals(6, spans.size());
- assertEquals(spans.get(0).get("parentId"), spans.get(1).get("parentId"));
- assertEquals("getConnection", spans.get(0).get("code.function"));
+ assertEquals(5, spans.size());
+
+ // JDBC SELECT operation span
+ assertEquals(spans.get(0).get("parentId"), spans.get(1).get("spanId"));
+ assertEquals("SELECT", spans.get(0).get("db.operation"));
+ // Bean endpoint span
assertEquals(spans.get(1).get("parentId"), spans.get(2).get("spanId"));
- assertEquals("SELECT", spans.get(1).get("db.operation"));
+ assertEquals("bean://jdbcQueryBean", spans.get(1).get("camel.uri"));
+ // Direct endpoint EVENT_RECEIVED span
assertEquals(spans.get(2).get("parentId"), spans.get(3).get("spanId"));
- assertEquals("bean://jdbcQueryBean", spans.get(2).get("camel.uri"));
+ assertEquals("direct://jdbcQuery", spans.get(2).get("camel.uri"));
+ assertEquals("EVENT_RECEIVED", spans.get(2).get("op"));
+ // Direct endpoint EVENT_SENT span
assertEquals(spans.get(3).get("parentId"), spans.get(4).get("spanId"));
assertEquals("direct://jdbcQuery", spans.get(3).get("camel.uri"));
- assertEquals("EVENT_RECEIVED", spans.get(3).get("op"));
- assertEquals(spans.get(4).get("parentId"), spans.get(5).get("spanId"));
- assertEquals("direct://jdbcQuery", spans.get(4).get("camel.uri"));
- assertEquals("EVENT_SENT", spans.get(4).get("op"));
+ assertEquals("EVENT_SENT", spans.get(3).get("op"));
- assertEquals(spans.get(5).get("parentId"), "0000000000000000");
+ // JAX-RS Server span (root)
+ assertEquals(spans.get(4).get("parentId"), "0000000000000000");
assertEquals("org.apache.camel.quarkus.component.opentelemetry2.it.OpenTelemetry2Resource.jdbcQuery",
- spans.get(5).get(CODE_FUNCTION_NAME.getKey()));
+ spans.get(4).get(CODE_FUNCTION_NAME.getKey()));
}
@Test
diff --git a/integration-tests/pg-replication-slot/src/test/java/org/apache/camel/quarkus/component/pg/replication/slot/it/PgReplicationSlotTest.java b/integration-tests/pg-replication-slot/src/test/java/org/apache/camel/quarkus/component/pg/replication/slot/it/PgReplicationSlotTest.java
index 331ceaec7c..9e91ad29a0 100644
--- a/integration-tests/pg-replication-slot/src/test/java/org/apache/camel/quarkus/component/pg/replication/slot/it/PgReplicationSlotTest.java
+++ b/integration-tests/pg-replication-slot/src/test/java/org/apache/camel/quarkus/component/pg/replication/slot/it/PgReplicationSlotTest.java
@@ -26,7 +26,7 @@ import java.util.concurrent.TimeUnit;
import io.quarkus.test.common.QuarkusTestResource;
import io.quarkus.test.junit.QuarkusTest;
import io.restassured.http.ContentType;
-import org.eclipse.microprofile.config.ConfigProvider;
+import org.eclipse.microprofile.config.Config;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
@@ -46,11 +46,11 @@ class PgReplicationSlotTest {
private static Connection connection;
@BeforeAll
- public static void setUp() throws SQLException {
- String authority = ConfigProvider.getConfig().getValue(PG_AUTHORITY_CFG_KEY, String.class);
- String dbName = ConfigProvider.getConfig().getValue(PG_DBNAME_CFG_KEY, String.class);
- String user = ConfigProvider.getConfig().getValue(PG_USER_CFG_KEY, String.class);
- String password = ConfigProvider.getConfig().getValue(PG_PASSRD_CFG_KEY, String.class);
+ public static void setUp(Config config) throws SQLException {
+ String authority = config.getValue(PG_AUTHORITY_CFG_KEY, String.class);
+ String dbName = config.getValue(PG_DBNAME_CFG_KEY, String.class);
+ String user = config.getValue(PG_USER_CFG_KEY, String.class);
+ String password = config.getValue(PG_PASSRD_CFG_KEY, String.class);
String url = String.format("jdbc:postgresql://%s/%s", authority, dbName);
Properties props = new Properties();
diff --git a/integration-tests/pinecone/src/main/java/org/apache/camel/quarkus/component/pinecone/it/PineconeResource.java b/integration-tests/pinecone/src/main/java/org/apache/camel/quarkus/component/pinecone/it/PineconeResource.java
index bf937ea3c4..a9dae2d25a 100644
--- a/integration-tests/pinecone/src/main/java/org/apache/camel/quarkus/component/pinecone/it/PineconeResource.java
+++ b/integration-tests/pinecone/src/main/java/org/apache/camel/quarkus/component/pinecone/it/PineconeResource.java
@@ -36,7 +36,7 @@ import jakarta.ws.rs.core.MediaType;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.component.pinecone.PineconeVectorDbComponent;
import org.apache.camel.component.pinecone.PineconeVectorDbConfiguration;
-import org.eclipse.microprofile.config.ConfigProvider;
+import org.eclipse.microprofile.config.Config;
import org.openapitools.db_control.client.model.IndexModel;
@Path("/pinecone")
@@ -83,8 +83,8 @@ public class PineconeResource {
}
@Named("pinecone")
- PineconeVectorDbComponent pineconeVectorDbComponent() {
- Pinecone client = createPineconeClient();
+ PineconeVectorDbComponent pineconeVectorDbComponent(Config config) {
+ Pinecone client = createPineconeClient(config);
PineconeVectorDbComponent component = new PineconeVectorDbComponent();
PineconeVectorDbConfiguration configuration = new PineconeVectorDbConfiguration();
configuration.setClient(client);
@@ -92,8 +92,8 @@ public class PineconeResource {
return component;
}
- static Pinecone createPineconeClient() {
- String endpoint = ConfigProvider.getConfig().getValue("pinecone.emulator.endpoint", String.class);
+ static Pinecone createPineconeClient(Config config) {
+ String endpoint = config.getValue("pinecone.emulator.endpoint", String.class);
Pinecone.Builder builder = new Pinecone.Builder("pclocal")
.withHost(endpoint)
.withTlsEnabled(false);
diff --git a/integration-tests/pinecone/src/test/java/org/apache/camel/quarkus/component/pinecone/it/PineconeTest.java b/integration-tests/pinecone/src/test/java/org/apache/camel/quarkus/component/pinecone/it/PineconeTest.java
index 2884e1be44..cf9d808adf 100644
--- a/integration-tests/pinecone/src/test/java/org/apache/camel/quarkus/component/pinecone/it/PineconeTest.java
+++ b/integration-tests/pinecone/src/test/java/org/apache/camel/quarkus/component/pinecone/it/PineconeTest.java
@@ -24,6 +24,7 @@ import io.quarkus.test.common.QuarkusTestResource;
import io.quarkus.test.junit.QuarkusTest;
import io.restassured.RestAssured;
import io.restassured.http.ContentType;
+import org.eclipse.microprofile.config.Config;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.openapitools.db_control.client.model.IndexModel;
@@ -42,8 +43,8 @@ class PineconeTest {
private static Pinecone pinecone;
@BeforeAll
- public static void beforeAll() {
- pinecone = createPineconeClient();
+ public static void beforeAll(Config config) {
+ pinecone = createPineconeClient(config);
}
@Test
diff --git a/pom.xml b/pom.xml
index 2c6cf42d45..0c76b4c392 100644
--- a/pom.xml
+++ b/pom.xml
@@ -63,7 +63,7 @@
<quarkiverse-minio.version>3.8.6</quarkiverse-minio.version><!-- https://repo1.maven.org/maven2/io/quarkiverse/minio/quarkus-minio-parent/ -->
<quarkiverse-mybatis.version>2.4.2</quarkiverse-mybatis.version><!-- https://repo1.maven.org/maven2/io/quarkiverse/mybatis/quarkus-mybatis-parent/ -->
<quarkiverse-pooled-jms.version>2.12.0</quarkiverse-pooled-jms.version><!-- https://repo1.maven.org/maven2/io/quarkiverse/messaginghub/quarkus-pooled-jms-parent/ -->
- <quarkus.version>3.34.1</quarkus.version><!-- https://repo1.maven.org/maven2/io/quarkus/quarkus-bom/ -->
+ <quarkus.version>999-SNAPSHOT</quarkus.version><!-- https://repo1.maven.org/maven2/io/quarkus/quarkus-bom/ -->
<quarkus-hazelcast-client.version>4.1.0</quarkus-hazelcast-client.version><!-- https://repo1.maven.org/maven2/com/hazelcast/quarkus-hazelcast-client-bom/ -->
<quarkus-qpid-jms.version>2.12.0</quarkus-qpid-jms.version><!-- This should be in sync with quarkus-platform https://repo1.maven.org/maven2/org/amqphub/quarkus/quarkus-qpid-jms-bom/ -->
@@ -300,7 +300,7 @@
<!-- maven-enforcer-plugin -->
<min-maven-version>3.8.2</min-maven-version>
- <target-maven-version>3.9.12</target-maven-version><!-- @sync io.quarkus:quarkus-build-parent:${quarkus.version} prop:proposed-maven-version -->
+ <target-maven-version>3.9.14</target-maven-version><!-- @sync io.quarkus:quarkus-build-parent:${quarkus.version} prop:proposed-maven-version -->
<supported-maven-versions>[${min-maven-version},)</supported-maven-versions>
<!-- maven-release-plugin -->
(camel-quarkus) 02/02: Force alignment to Groovy 5.x
Posted by ja...@apache.org.
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 b3a798a62a8b3ebcea2e9dd5744702b47d13ba70
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 | 176 ++++++++++++++++++++
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, 308 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..95717ef866
--- /dev/null
+++ b/extensions/groovy/runtime/src/main/java/org/apache/camel/quarkus/component/groovy/runtime/graal/GroovySubstitutions.java
@@ -0,0 +1,176 @@
+/*
+ * 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 0c76b4c392..25bfac4e2b 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 0423b5d6e9..cf855d6657 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 934276a177..f395034033 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 b9051ece3c..68af7ef247 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 -->