You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2026/07/24 07:28:29 UTC
(camel) branch camel-4.14.x updated: CAMEL-24249: camel-aws2 - fix copy-pasted validation messages in MSK/MQ/STS producers (#25070)
This is an automated email from the ASF dual-hosted git repository.
oscerd pushed a commit to branch camel-4.14.x
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-4.14.x by this push:
new 49b03716b4d6 CAMEL-24249: camel-aws2 - fix copy-pasted validation messages in MSK/MQ/STS producers (#25070)
49b03716b4d6 is described below
commit 49b03716b4d6063e1f5902825dae2014c156f36c
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Fri Jul 24 09:28:22 2026 +0200
CAMEL-24249: camel-aws2 - fix copy-pasted validation messages in MSK/MQ/STS producers (#25070)
Several producers threw an IllegalArgumentException whose message named the
wrong parameter, having been copy-pasted from a neighbouring check:
- MSK2Producer.createCluster: the missing broker-nodes-number check reported
"Kafka Version must be specified".
- MQ2Producer: MISSING_BROKER_NAME ("Broker Name must be specified") was thrown
for the broker *id* checks in delete/reboot/update/describe and for the
configurationId check in updateBroker; only createBroker takes a name. Added
MISSING_BROKER_ID and MISSING_CONFIGURATION_ID and used them for the id checks.
- STS2Producer.getFederationToken: the missing federated-name check said
"for assumeRole operation".
Each check now names the parameter it guards. Added tests asserting the
corrected messages in MSKProducerTest, MQProducerTest and STS2ProducerTest.
(cherry picked from commit 715a41f22da5daffd6ad1dac2e5cfef332feb787)
Signed-off-by: Andrea Cosentino <an...@gmail.com>
Co-authored-by: Claude Opus 4.8 <no...@anthropic.com>
---
components/camel-aws/camel-aws2-mq/pom.xml | 5 +++++
.../org/apache/camel/component/aws2/mq/MQ2Producer.java | 12 +++++++-----
.../apache/camel/component/aws2/mq/MQProducerTest.java | 17 +++++++++++++++++
components/camel-aws/camel-aws2-msk/pom.xml | 5 +++++
.../apache/camel/component/aws2/msk/MSK2Producer.java | 2 +-
.../camel/component/aws2/msk/MSKProducerTest.java | 14 ++++++++++++++
components/camel-aws/camel-aws2-sts/pom.xml | 5 +++++
.../apache/camel/component/aws2/sts/STS2Producer.java | 2 +-
.../camel/component/aws2/sts/STS2ProducerTest.java | 8 ++++++++
9 files changed, 63 insertions(+), 7 deletions(-)
diff --git a/components/camel-aws/camel-aws2-mq/pom.xml b/components/camel-aws/camel-aws2-mq/pom.xml
index bd3fa236420f..3347e5630766 100644
--- a/components/camel-aws/camel-aws2-mq/pom.xml
+++ b/components/camel-aws/camel-aws2-mq/pom.xml
@@ -73,5 +73,10 @@
<type>test-jar</type>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.assertj</groupId>
+ <artifactId>assertj-core</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
diff --git a/components/camel-aws/camel-aws2-mq/src/main/java/org/apache/camel/component/aws2/mq/MQ2Producer.java b/components/camel-aws/camel-aws2-mq/src/main/java/org/apache/camel/component/aws2/mq/MQ2Producer.java
index 21f26bea667f..bc4874e14716 100644
--- a/components/camel-aws/camel-aws2-mq/src/main/java/org/apache/camel/component/aws2/mq/MQ2Producer.java
+++ b/components/camel-aws/camel-aws2-mq/src/main/java/org/apache/camel/component/aws2/mq/MQ2Producer.java
@@ -56,6 +56,8 @@ public class MQ2Producer extends DefaultProducer {
private static final Logger LOG = LoggerFactory.getLogger(MQ2Producer.class);
public static final String MISSING_BROKER_NAME = "Broker Name must be specified";
+ public static final String MISSING_BROKER_ID = "Broker Id must be specified";
+ public static final String MISSING_CONFIGURATION_ID = "Configuration Id must be specified";
private transient String mqProducerToString;
private HealthCheck producerHealthCheck;
@@ -247,7 +249,7 @@ public class MQ2Producer extends DefaultProducer {
brokerId = exchange.getIn().getHeader(MQ2Constants.BROKER_ID, String.class);
builder.brokerId(brokerId);
} else {
- throw new IllegalArgumentException(MISSING_BROKER_NAME);
+ throw new IllegalArgumentException(MISSING_BROKER_ID);
}
DeleteBrokerResponse result;
try {
@@ -282,7 +284,7 @@ public class MQ2Producer extends DefaultProducer {
brokerId = exchange.getIn().getHeader(MQ2Constants.BROKER_ID, String.class);
builder.brokerId(brokerId);
} else {
- throw new IllegalArgumentException(MISSING_BROKER_NAME);
+ throw new IllegalArgumentException(MISSING_BROKER_ID);
}
RebootBrokerResponse result;
try {
@@ -318,13 +320,13 @@ public class MQ2Producer extends DefaultProducer {
brokerId = exchange.getIn().getHeader(MQ2Constants.BROKER_ID, String.class);
builder.brokerId(brokerId);
} else {
- throw new IllegalArgumentException(MISSING_BROKER_NAME);
+ throw new IllegalArgumentException(MISSING_BROKER_ID);
}
if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(MQ2Constants.CONFIGURATION_ID))) {
configurationId = exchange.getIn().getHeader(MQ2Constants.CONFIGURATION_ID, ConfigurationId.class);
builder.configuration(configurationId);
} else {
- throw new IllegalArgumentException(MISSING_BROKER_NAME);
+ throw new IllegalArgumentException(MISSING_CONFIGURATION_ID);
}
UpdateBrokerResponse result;
try {
@@ -359,7 +361,7 @@ public class MQ2Producer extends DefaultProducer {
brokerId = exchange.getIn().getHeader(MQ2Constants.BROKER_ID, String.class);
builder.brokerId(brokerId);
} else {
- throw new IllegalArgumentException(MISSING_BROKER_NAME);
+ throw new IllegalArgumentException(MISSING_BROKER_ID);
}
DescribeBrokerResponse result;
try {
diff --git a/components/camel-aws/camel-aws2-mq/src/test/java/org/apache/camel/component/aws2/mq/MQProducerTest.java b/components/camel-aws/camel-aws2-mq/src/test/java/org/apache/camel/component/aws2/mq/MQProducerTest.java
index 6d5055d5b7ee..b861f8e1166f 100644
--- a/components/camel-aws/camel-aws2-mq/src/test/java/org/apache/camel/component/aws2/mq/MQProducerTest.java
+++ b/components/camel-aws/camel-aws2-mq/src/test/java/org/apache/camel/component/aws2/mq/MQProducerTest.java
@@ -39,6 +39,7 @@ import software.amazon.awssdk.services.mq.model.ListBrokersResponse;
import software.amazon.awssdk.services.mq.model.UpdateBrokerResponse;
import software.amazon.awssdk.services.mq.model.User;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class MQProducerTest extends CamelTestSupport {
@@ -172,6 +173,22 @@ public class MQProducerTest extends CamelTestSupport {
assertEquals("1", resultGet.brokerId());
}
+ @Test
+ void mqUpdateBrokerWithoutBrokerIdReportsThatParameter() {
+ assertThatThrownBy(() -> template.requestBody("direct:updateBroker", "body"))
+ .hasRootCauseInstanceOf(IllegalArgumentException.class)
+ .hasRootCauseMessage("Broker Id must be specified");
+ }
+
+ @Test
+ void mqUpdateBrokerWithoutConfigurationIdReportsThatParameter() {
+ // the broker id IS supplied, so the error must name the missing configuration id
+ assertThatThrownBy(() -> template.requestBodyAndHeader("direct:updateBroker", "body",
+ MQ2Constants.BROKER_ID, "1"))
+ .hasRootCauseInstanceOf(IllegalArgumentException.class)
+ .hasRootCauseMessage("Configuration Id must be specified");
+ }
+
@Test
public void mqDescribeBrokerTest() throws Exception {
diff --git a/components/camel-aws/camel-aws2-msk/pom.xml b/components/camel-aws/camel-aws2-msk/pom.xml
index 62f9fec58f28..4171dc71b144 100644
--- a/components/camel-aws/camel-aws2-msk/pom.xml
+++ b/components/camel-aws/camel-aws2-msk/pom.xml
@@ -75,5 +75,10 @@
<artifactId>camel-test-spring-junit5</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.assertj</groupId>
+ <artifactId>assertj-core</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
diff --git a/components/camel-aws/camel-aws2-msk/src/main/java/org/apache/camel/component/aws2/msk/MSK2Producer.java b/components/camel-aws/camel-aws2-msk/src/main/java/org/apache/camel/component/aws2/msk/MSK2Producer.java
index df261491a5b9..b29fbd0427d1 100644
--- a/components/camel-aws/camel-aws2-msk/src/main/java/org/apache/camel/component/aws2/msk/MSK2Producer.java
+++ b/components/camel-aws/camel-aws2-msk/src/main/java/org/apache/camel/component/aws2/msk/MSK2Producer.java
@@ -164,7 +164,7 @@ public class MSK2Producer extends DefaultProducer {
Integer nodesNumber = exchange.getIn().getHeader(MSK2Constants.BROKER_NODES_NUMBER, Integer.class);
builder.numberOfBrokerNodes(nodesNumber);
} else {
- throw new IllegalArgumentException("Kafka Version must be specified");
+ throw new IllegalArgumentException("Number of Broker Nodes must be specified");
}
if (ObjectHelper.isNotEmpty(exchange.getIn().getHeader(MSK2Constants.BROKER_NODES_GROUP_INFO))) {
BrokerNodeGroupInfo brokerNodesGroupInfo
diff --git a/components/camel-aws/camel-aws2-msk/src/test/java/org/apache/camel/component/aws2/msk/MSKProducerTest.java b/components/camel-aws/camel-aws2-msk/src/test/java/org/apache/camel/component/aws2/msk/MSKProducerTest.java
index 678c397ee9c1..c7fd871a8fdf 100644
--- a/components/camel-aws/camel-aws2-msk/src/test/java/org/apache/camel/component/aws2/msk/MSKProducerTest.java
+++ b/components/camel-aws/camel-aws2-msk/src/test/java/org/apache/camel/component/aws2/msk/MSKProducerTest.java
@@ -16,6 +16,8 @@
*/
package org.apache.camel.component.aws2.msk;
+import java.util.Map;
+
import org.apache.camel.BindToRegistry;
import org.apache.camel.EndpointInject;
import org.apache.camel.Exchange;
@@ -32,6 +34,7 @@ import software.amazon.awssdk.services.kafka.model.DescribeClusterResponse;
import software.amazon.awssdk.services.kafka.model.ListClustersRequest;
import software.amazon.awssdk.services.kafka.model.ListClustersResponse;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class MSKProducerTest extends CamelTestSupport {
@@ -99,6 +102,17 @@ public class MSKProducerTest extends CamelTestSupport {
assertEquals(ClusterState.CREATING.name(), resultGet.state().toString());
}
+ @Test
+ void mskCreateClusterWithoutBrokerNodesNumberReportsThatParameter() {
+ // the Kafka version IS supplied, so the error must name the missing broker-nodes count
+ assertThatThrownBy(() -> template.requestBodyAndHeaders("direct:createCluster", "body",
+ Map.of(
+ MSK2Constants.CLUSTER_NAME, "test-kafka",
+ MSK2Constants.CLUSTER_KAFKA_VERSION, "2.1.1")))
+ .hasRootCauseInstanceOf(IllegalArgumentException.class)
+ .hasRootCauseMessage("Number of Broker Nodes must be specified");
+ }
+
@Test
public void mskDeleteClusterTest() throws Exception {
diff --git a/components/camel-aws/camel-aws2-sts/pom.xml b/components/camel-aws/camel-aws2-sts/pom.xml
index f142957351cc..b2202b03d47e 100644
--- a/components/camel-aws/camel-aws2-sts/pom.xml
+++ b/components/camel-aws/camel-aws2-sts/pom.xml
@@ -71,5 +71,10 @@
<type>test-jar</type>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.assertj</groupId>
+ <artifactId>assertj-core</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
diff --git a/components/camel-aws/camel-aws2-sts/src/main/java/org/apache/camel/component/aws2/sts/STS2Producer.java b/components/camel-aws/camel-aws2-sts/src/main/java/org/apache/camel/component/aws2/sts/STS2Producer.java
index 478c9e6e6cdd..6719bd255634 100644
--- a/components/camel-aws/camel-aws2-sts/src/main/java/org/apache/camel/component/aws2/sts/STS2Producer.java
+++ b/components/camel-aws/camel-aws2-sts/src/main/java/org/apache/camel/component/aws2/sts/STS2Producer.java
@@ -187,7 +187,7 @@ public class STS2Producer extends DefaultProducer {
String federatedName = exchange.getIn().getHeader(STS2Constants.FEDERATED_NAME, String.class);
builder.name(federatedName);
} else {
- throw new IllegalArgumentException("Federated name needs to be specified for assumeRole operation");
+ throw new IllegalArgumentException("Federated name needs to be specified for getFederationToken operation");
}
try {
result = stsClient.getFederationToken(builder.build());
diff --git a/components/camel-aws/camel-aws2-sts/src/test/java/org/apache/camel/component/aws2/sts/STS2ProducerTest.java b/components/camel-aws/camel-aws2-sts/src/test/java/org/apache/camel/component/aws2/sts/STS2ProducerTest.java
index 916db7eda268..c45b98af4cde 100644
--- a/components/camel-aws/camel-aws2-sts/src/test/java/org/apache/camel/component/aws2/sts/STS2ProducerTest.java
+++ b/components/camel-aws/camel-aws2-sts/src/test/java/org/apache/camel/component/aws2/sts/STS2ProducerTest.java
@@ -28,6 +28,7 @@ import software.amazon.awssdk.services.sts.model.AssumeRoleResponse;
import software.amazon.awssdk.services.sts.model.GetFederationTokenResponse;
import software.amazon.awssdk.services.sts.model.GetSessionTokenResponse;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class STS2ProducerTest extends CamelTestSupport {
@@ -92,6 +93,13 @@ public class STS2ProducerTest extends CamelTestSupport {
assertEquals("xxx", resultGet.credentials().accessKeyId());
}
+ @Test
+ void stsGetFederationTokenWithoutFederatedNameReportsTheCorrectOperation() {
+ assertThatThrownBy(() -> template.requestBody("direct:getFederationToken", "body"))
+ .hasRootCauseInstanceOf(IllegalArgumentException.class)
+ .hasRootCauseMessage("Federated name needs to be specified for getFederationToken operation");
+ }
+
@Override
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {