This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/main by this push:
new 464000d118 Fix hashicorp-vault extension
464000d118 is described below
commit 464000d118b8950eb5cbdce7e52f2b1767e51372
Author: James Netherton <[email protected]>
AuthorDate: Thu Aug 22 10:09:05 2024 +0100
Fix hashicorp-vault extension
Fixes #6254
* Depend on camel-quarkus-support-spring
* Unban spring-web
* Add integration tests
---
extensions-jvm/hashicorp-vault/deployment/pom.xml | 4 ++
extensions-jvm/hashicorp-vault/runtime/pom.xml | 4 ++
integration-tests-jvm/hashicorp-vault/pom.xml | 44 +++++++++++++
.../hashicorp/vault/it/HashicorpVaultResource.java | 66 ++++++++++++++++----
.../hashicorp/vault/it/HashicorpVaultRoutes.java | 72 ++++++++++++++++++++++
.../hashicorp/vault/it/HashicorpVaultTest.java | 50 +++++++++++++--
.../vault/it/HashicorpVaultTestResource.java | 58 +++++++++++++++++
pom.xml | 1 +
poms/bom/pom.xml | 23 +++++--
poms/bom/src/main/generated/flattened-full-pom.xml | 23 +++++--
.../src/main/generated/flattened-reduced-pom.xml | 23 +++++--
.../generated/flattened-reduced-verbose-pom.xml | 23 +++++--
.../camel-quarkus-banned-dependencies-spring.xml | 1 +
13 files changed, 357 insertions(+), 35 deletions(-)
diff --git a/extensions-jvm/hashicorp-vault/deployment/pom.xml
b/extensions-jvm/hashicorp-vault/deployment/pom.xml
index 9f991058d8..1c85eaac5f 100644
--- a/extensions-jvm/hashicorp-vault/deployment/pom.xml
+++ b/extensions-jvm/hashicorp-vault/deployment/pom.xml
@@ -34,6 +34,10 @@
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-core-deployment</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-support-spring-deployment</artifactId>
+ </dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-hashicorp-vault</artifactId>
diff --git a/extensions-jvm/hashicorp-vault/runtime/pom.xml
b/extensions-jvm/hashicorp-vault/runtime/pom.xml
index e7b707dfd0..c2bb267cd6 100644
--- a/extensions-jvm/hashicorp-vault/runtime/pom.xml
+++ b/extensions-jvm/hashicorp-vault/runtime/pom.xml
@@ -39,6 +39,10 @@
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-core</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-support-spring</artifactId>
+ </dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-hashicorp-vault</artifactId>
diff --git a/integration-tests-jvm/hashicorp-vault/pom.xml
b/integration-tests-jvm/hashicorp-vault/pom.xml
index b16a6f91ee..7faadfc360 100644
--- a/integration-tests-jvm/hashicorp-vault/pom.xml
+++ b/integration-tests-jvm/hashicorp-vault/pom.xml
@@ -31,6 +31,10 @@
<description>Integration tests for Camel Quarkus Hashicorp Vault
extension</description>
<dependencies>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-direct</artifactId>
+ </dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-hashicorp-vault</artifactId>
@@ -51,6 +55,22 @@
<artifactId>rest-assured</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.testcontainers</groupId>
+ <artifactId>testcontainers</artifactId>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-junit4-mock</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<profiles>
@@ -63,6 +83,19 @@
</activation>
<dependencies>
<!-- The following dependencies guarantee that this module is
built after them. You can update them by running `mvn process-resources
-Pformat -N` from the source tree root directory -->
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-direct-deployment</artifactId>
+ <version>${project.version}</version>
+ <type>pom</type>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>*</groupId>
+ <artifactId>*</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-hashicorp-vault-deployment</artifactId>
@@ -78,5 +111,16 @@
</dependency>
</dependencies>
</profile>
+ <profile>
+ <id>skip-testcontainers-tests</id>
+ <activation>
+ <property>
+ <name>skip-testcontainers-tests</name>
+ </property>
+ </activation>
+ <properties>
+ <skipTests>true</skipTests>
+ </properties>
+ </profile>
</profiles>
</project>
diff --git
a/integration-tests-jvm/hashicorp-vault/src/main/java/org/apache/camel/quarkus/component/hashicorp/vault/it/HashicorpVaultResource.java
b/integration-tests-jvm/hashicorp-vault/src/main/java/org/apache/camel/quarkus/component/hashicorp/vault/it/HashicorpVaultResource.java
index 9aab60e2d1..9af43911b8 100644
---
a/integration-tests-jvm/hashicorp-vault/src/main/java/org/apache/camel/quarkus/component/hashicorp/vault/it/HashicorpVaultResource.java
+++
b/integration-tests-jvm/hashicorp-vault/src/main/java/org/apache/camel/quarkus/component/hashicorp/vault/it/HashicorpVaultResource.java
@@ -16,35 +16,75 @@
*/
package org.apache.camel.quarkus.component.hashicorp.vault.it;
+import java.net.URI;
+import java.util.List;
+import java.util.Map;
+
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
+import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.GET;
+import jakarta.ws.rs.POST;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.QueryParam;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
-import org.apache.camel.CamelContext;
-import org.jboss.logging.Logger;
+import org.apache.camel.ProducerTemplate;
@Path("/hashicorp-vault")
@ApplicationScoped
public class HashicorpVaultResource {
+ @Inject
+ ProducerTemplate producerTemplate;
- private static final Logger LOG =
Logger.getLogger(HashicorpVaultResource.class);
+ @Path("/secret")
+ @POST
+ public Response createSecret(@QueryParam("key") String key,
@QueryParam("value") String value) throws Exception {
+ producerTemplate.sendBody("direct:createSecret", Map.of(key, value));
+ return Response.created(new URI("https://camel.apache.org/")).build();
+ }
- private static final String COMPONENT_HASHICORP_VAULT = "hashicorp-vault";
- @Inject
- CamelContext context;
+ @SuppressWarnings("unchecked")
+ @Path("/secret")
+ @GET
+ @Produces(MediaType.TEXT_PLAIN)
+ public Response getSecret(@QueryParam("key") String key) {
+ try {
+ Map<String, Map<String, String>> map =
producerTemplate.requestBody("direct:getSecret", null, Map.class);
+ if (map.containsKey("data")) {
+ Map<String, String> data = map.get("data");
+ if (data.containsKey(key)) {
+ return Response.ok(data.get(key)).build();
+ }
+ }
+ return Response.status(404).build();
+ } catch (Exception e) {
+ return Response.status(404).build();
+ }
+ }
- @Path("/load/component/hashicorp-vault")
+ @Path("/secret/placeholder")
@GET
@Produces(MediaType.TEXT_PLAIN)
- public Response loadComponentHashicorpVault() throws Exception {
- /* This is an autogenerated test */
- if (context.getComponent(COMPONENT_HASHICORP_VAULT) != null) {
- return Response.ok().build();
+ public String getSecretFromPropertyPlaceholder() {
+ return producerTemplate.requestBody("direct:propertyPlaceholder",
null, String.class);
+ }
+
+ @Path("/secret")
+ @DELETE
+ public void deleteSecret() {
+ producerTemplate.sendBody("direct:deleteSecret", null);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Path("/secret/list/all")
+ @GET
+ public String listSecrets() {
+ List<String> secrets =
producerTemplate.requestBody("direct:listSecrets", null, List.class);
+ if (secrets.size() == 1) {
+ return secrets.get(0);
}
- LOG.warnf("Could not load [%s] from the Camel context",
COMPONENT_HASHICORP_VAULT);
- return Response.status(500, COMPONENT_HASHICORP_VAULT + " could not be
loaded from the Camel context").build();
+ throw new IllegalStateException("Expected a list containing 1 secret,
but found " + secrets.size());
}
}
diff --git
a/integration-tests-jvm/hashicorp-vault/src/main/java/org/apache/camel/quarkus/component/hashicorp/vault/it/HashicorpVaultRoutes.java
b/integration-tests-jvm/hashicorp-vault/src/main/java/org/apache/camel/quarkus/component/hashicorp/vault/it/HashicorpVaultRoutes.java
new file mode 100644
index 0000000000..cd9ca33bb7
--- /dev/null
+++
b/integration-tests-jvm/hashicorp-vault/src/main/java/org/apache/camel/quarkus/component/hashicorp/vault/it/HashicorpVaultRoutes.java
@@ -0,0 +1,72 @@
+/*
+ * 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.hashicorp.vault.it;
+
+import jakarta.enterprise.context.ApplicationScoped;
+import org.apache.camel.Exchange;
+import org.apache.camel.Message;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.hashicorp.vault.HashicorpVaultConstants;
+import org.apache.camel.spi.PropertiesComponent;
+import org.eclipse.microprofile.config.inject.ConfigProperty;
+
+@ApplicationScoped
+public class HashicorpVaultRoutes extends RouteBuilder {
+ public static final String TEST_SECRET_NAME = "my-secret";
+ public static final String TEST_SECRET_PATH = "camel-quarkus-secret";
+
+ @ConfigProperty(name = "camel.vault.hashicorp.host")
+ String host;
+
+ @ConfigProperty(name = "camel.vault.hashicorp.port")
+ int port;
+
+ @ConfigProperty(name = "camel.vault.hashicorp.token")
+ String token;
+
+ @Override
+ public void configure() throws Exception {
+ from("direct:createSecret")
+
.toF("hashicorp-vault:secret?operation=createSecret&scheme=http&host=%s&port=%d&token=%s&secretPath=%s",
host,
+ port, token, TEST_SECRET_PATH);
+
+ from("direct:getSecret")
+
.setHeader(HashicorpVaultConstants.SECRET_PATH).constant(TEST_SECRET_PATH)
+
.toF("hashicorp-vault:secret?operation=getSecret&scheme=http&host=%s&port=%d&token=%s",
host, port, token);
+
+ from("direct:deleteSecret")
+
.toF("hashicorp-vault:secret?operation=deleteSecret&scheme=http&host=%s&port=%d&token=%s&secretPath=%s",
host,
+ port, token, TEST_SECRET_PATH);
+
+ from("direct:listSecrets")
+
.toF("hashicorp-vault:secret?operation=listSecrets&scheme=http&host=%s&port=%d&token=%s&secretPath=%s",
host,
+ port, token, TEST_SECRET_PATH);
+
+ from("direct:propertyPlaceholder")
+ .process(new Processor() {
+ @Override
+ public void process(Exchange exchange) throws Exception {
+ Message message = exchange.getMessage();
+ PropertiesComponent component =
exchange.getContext().getPropertiesComponent();
+ component.resolveProperty("hashicorp:secret:" +
TEST_SECRET_PATH).ifPresent(value -> {
+ message.setBody(value.replaceAll("[{}]",
"").split("=")[1]);
+ });
+ }
+ });
+ }
+}
diff --git
a/integration-tests-jvm/hashicorp-vault/src/test/java/org/apache/camel/quarkus/component/hashicorp/vault/it/HashicorpVaultTest.java
b/integration-tests-jvm/hashicorp-vault/src/test/java/org/apache/camel/quarkus/component/hashicorp/vault/it/HashicorpVaultTest.java
index b5dad59f91..a8e34b96bb 100644
---
a/integration-tests-jvm/hashicorp-vault/src/test/java/org/apache/camel/quarkus/component/hashicorp/vault/it/HashicorpVaultTest.java
+++
b/integration-tests-jvm/hashicorp-vault/src/test/java/org/apache/camel/quarkus/component/hashicorp/vault/it/HashicorpVaultTest.java
@@ -16,19 +16,57 @@
*/
package org.apache.camel.quarkus.component.hashicorp.vault.it;
+import io.quarkus.test.common.WithTestResource;
import io.quarkus.test.junit.QuarkusTest;
import io.restassured.RestAssured;
import org.junit.jupiter.api.Test;
+import static
org.apache.camel.quarkus.component.hashicorp.vault.it.HashicorpVaultRoutes.TEST_SECRET_NAME;
+import static
org.apache.camel.quarkus.component.hashicorp.vault.it.HashicorpVaultRoutes.TEST_SECRET_PATH;
+import static org.hamcrest.Matchers.is;
+
@QuarkusTest
+@WithTestResource(HashicorpVaultTestResource.class)
class HashicorpVaultTest {
-
@Test
- public void loadComponentHashicorpVault() {
- /* A simple autogenerated test */
- RestAssured.get("/hashicorp-vault/load/component/hashicorp-vault")
+ void secretCRUD() {
+ String secretValue = "2s3cr3t";
+
+ RestAssured.given()
+ .queryParam("key", TEST_SECRET_NAME)
+ .queryParam("value", secretValue)
+ .post("/hashicorp-vault/secret")
.then()
- .statusCode(200);
- }
+ .statusCode(201);
+
+ RestAssured.given()
+ .queryParam("key", TEST_SECRET_NAME)
+ .get("/hashicorp-vault/secret")
+ .then()
+ .statusCode(200)
+ .body(is(secretValue));
+
+ RestAssured.given()
+ .get("/hashicorp-vault/secret/placeholder")
+ .then()
+ .statusCode(200)
+ .body(is(secretValue));
+
+ RestAssured.given()
+ .get("/hashicorp-vault/secret/list/all")
+ .then()
+ .statusCode(200)
+ .body(is(TEST_SECRET_PATH));
+ RestAssured.given()
+ .delete("/hashicorp-vault/secret")
+ .then()
+ .statusCode(204);
+
+ RestAssured.given()
+ .queryParam("key", TEST_SECRET_NAME)
+ .get("/hashicorp-vault/secret")
+ .then()
+ .statusCode(404);
+ }
}
diff --git
a/integration-tests-jvm/hashicorp-vault/src/test/java/org/apache/camel/quarkus/component/hashicorp/vault/it/HashicorpVaultTestResource.java
b/integration-tests-jvm/hashicorp-vault/src/test/java/org/apache/camel/quarkus/component/hashicorp/vault/it/HashicorpVaultTestResource.java
new file mode 100644
index 0000000000..8eb74e89c9
--- /dev/null
+++
b/integration-tests-jvm/hashicorp-vault/src/test/java/org/apache/camel/quarkus/component/hashicorp/vault/it/HashicorpVaultTestResource.java
@@ -0,0 +1,58 @@
+/*
+ * 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.hashicorp.vault.it;
+
+import java.util.Map;
+import java.util.UUID;
+
+import io.quarkus.test.common.QuarkusTestResourceLifecycleManager;
+import org.eclipse.microprofile.config.ConfigProvider;
+import org.testcontainers.containers.GenericContainer;
+import org.testcontainers.containers.wait.strategy.Wait;
+import org.testcontainers.utility.DockerImageName;
+
+public class HashicorpVaultTestResource implements
QuarkusTestResourceLifecycleManager {
+ private static final String DOCKER_IMAGE_NAME =
ConfigProvider.getConfig().getValue("hashicorp-vault.container.image",
+ String.class);
+ private static final String VAULT_TOKEN = UUID.randomUUID().toString();
+ private static final int VAULT_PORT = 8200;
+ private GenericContainer<?> container;
+
+ @Override
+ public Map<String, String> start() {
+ container = new
GenericContainer<>(DockerImageName.parse(DOCKER_IMAGE_NAME));
+ container.withEnv("VAULT_DEV_ROOT_TOKEN_ID", VAULT_TOKEN);
+ container.addExposedPort(VAULT_PORT);
+ container.waitingFor(Wait.forListeningPort());
+
container.waitingFor(Wait.forLogMessage(".*Development.*mode.*should.*", 1));
+
+ container.start();
+
+ return Map.of(
+ "camel.vault.hashicorp.token", VAULT_TOKEN,
+ "camel.vault.hashicorp.host", container.getHost(),
+ "camel.vault.hashicorp.port",
String.valueOf(container.getMappedPort(VAULT_PORT)),
+ "camel.vault.hashicorp.scheme", "http");
+ }
+
+ @Override
+ public void stop() {
+ if (container != null) {
+ container.stop();
+ }
+ }
+}
diff --git a/pom.xml b/pom.xml
index 80af65b223..e6a3ba8cdd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -238,6 +238,7 @@
<google-cloud-sdk.container.image>gcr.io/google.com/cloudsdktool/cloud-sdk:441.0.0-emulators</google-cloud-sdk.container.image>
<google-storage.container.image>docker.io/fsouza/fake-gcs-server:1.47.3</google-storage.container.image>
<greenmail.container.image>docker.io/greenmail/standalone:2.0.0</greenmail.container.image>
+
<hashicorp-vault.container.image>docker.io/hashicorp/vault:1.17</hashicorp-vault.container.image>
<ibm-mq.container.image>icr.io/ibm-messaging/mq:9.3.2.1-r1</ibm-mq.container.image>
<influxdb.container.image>docker.io/influxdb:1.8.10</influxdb.container.image>
<kafka.container.image>quay.io/strimzi-test-container/test-container:latest-kafka-3.2.1</kafka.container.image>
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index f164441d36..85a300366c 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -1401,10 +1401,6 @@
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</exclusion>
- <exclusion>
- <groupId>org.springframework</groupId>
- <artifactId>spring-web</artifactId>
- </exclusion>
</exclusions>
</dependency>
<dependency>
@@ -7483,6 +7479,25 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-web</artifactId>
+ <version>${spring.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-beans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-core</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
diff --git a/poms/bom/src/main/generated/flattened-full-pom.xml
b/poms/bom/src/main/generated/flattened-full-pom.xml
index f7a31aaaba..8d21f3c88f 100644
--- a/poms/bom/src/main/generated/flattened-full-pom.xml
+++ b/poms/bom/src/main/generated/flattened-full-pom.xml
@@ -1339,10 +1339,6 @@
<groupId>org.springframework</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
<artifactId>spring-core</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
</exclusion>
- <exclusion>
- <groupId>org.springframework</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
- <artifactId>spring-web</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
- </exclusion>
</exclusions>
</dependency>
<dependency>
@@ -7404,6 +7400,25 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>org.springframework</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>spring-web</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <version>6.1.10</version><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <exclusions>
+ <exclusion>
+ <groupId>org.springframework</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>spring-beans</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>spring-context</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>spring-core</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </exclusion>
+ </exclusions>
+ </dependency>
<dependency>
<groupId>org.springframework.data</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
<artifactId>spring-data-redis</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
diff --git a/poms/bom/src/main/generated/flattened-reduced-pom.xml
b/poms/bom/src/main/generated/flattened-reduced-pom.xml
index 94fa4706e7..b775bfe69e 100644
--- a/poms/bom/src/main/generated/flattened-reduced-pom.xml
+++ b/poms/bom/src/main/generated/flattened-reduced-pom.xml
@@ -1339,10 +1339,6 @@
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</exclusion>
- <exclusion>
- <groupId>org.springframework</groupId>
- <artifactId>spring-web</artifactId>
- </exclusion>
</exclusions>
</dependency>
<dependency>
@@ -7308,6 +7304,25 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-web</artifactId>
+ <version>6.1.10</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-beans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-core</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
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 424cb89d00..99deafc909 100644
--- a/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml
+++ b/poms/bom/src/main/generated/flattened-reduced-verbose-pom.xml
@@ -1339,10 +1339,6 @@
<groupId>org.springframework</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
<artifactId>spring-core</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
</exclusion>
- <exclusion>
- <groupId>org.springframework</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
- <artifactId>spring-web</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
- </exclusion>
</exclusions>
</dependency>
<dependency>
@@ -7308,6 +7304,25 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>org.springframework</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>spring-web</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <version>6.1.10</version><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <exclusions>
+ <exclusion>
+ <groupId>org.springframework</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>spring-beans</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>spring-context</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ <artifactId>spring-core</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
+ </exclusion>
+ </exclusions>
+ </dependency>
<dependency>
<groupId>org.springframework.data</groupId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
<artifactId>spring-data-redis</artifactId><!--
org.apache.camel.quarkus:camel-quarkus-bom:${project.version} -->
diff --git
a/tooling/enforcer-rules/camel-quarkus-banned-dependencies-spring.xml
b/tooling/enforcer-rules/camel-quarkus-banned-dependencies-spring.xml
index 597f965d80..a67bf6ee8d 100644
--- a/tooling/enforcer-rules/camel-quarkus-banned-dependencies-spring.xml
+++ b/tooling/enforcer-rules/camel-quarkus-banned-dependencies-spring.xml
@@ -82,6 +82,7 @@
<include>org.springframework.data:spring-data-redis</include><!-- required by
camel-spring-redis -->
<include>org.springframework.retry:spring-retry</include>
<include>org.springframework.vault:spring-vault-core</include><!-- required by
camel-hashicorp-vault -->
+ <include>org.springframework:spring-web</include><!-- required
by camel-hashicorp-vault -->
<!-- Also note that the following Spring artifacts are
available (shaded)
via camel-quarkus-support-spring so they should be kept
banned
and camel-quarkus-support-spring should be used instead: