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:46 UTC
(camel) branch main updated: CAMEL-24249: camel-aws2 - fix copy-pasted validation messages in MSK/MQ/STS producers (#25060)
This is an automated email from the ASF dual-hosted git repository.
oscerd pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 0bb541f31c86 CAMEL-24249: camel-aws2 - fix copy-pasted validation messages in MSK/MQ/STS producers (#25060)
0bb541f31c86 is described below
commit 0bb541f31c86121f987361475a610bb7738f1e8c
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Fri Jul 24 09:28:40 2026 +0200
CAMEL-24249: camel-aws2 - fix copy-pasted validation messages in MSK/MQ/STS producers (#25060)
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.
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 b695c51f68b1..e4334f60360a 100644
--- a/components/camel-aws/camel-aws2-mq/pom.xml
+++ b/components/camel-aws/camel-aws2-mq/pom.xml
@@ -76,5 +76,10 @@
<version>${project.version}</version>
<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 a4a6fa103073..539616e6f77b 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;
@@ -257,7 +259,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 {
@@ -292,7 +294,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 {
@@ -328,13 +330,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 {
@@ -369,7 +371,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 091eb9fe7c20..35bc41f86f5b 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 8fd7af9f44d5..3a3ded4de93a 100644
--- a/components/camel-aws/camel-aws2-msk/pom.xml
+++ b/components/camel-aws/camel-aws2-msk/pom.xml
@@ -78,5 +78,10 @@
<artifactId>camel-test-spring-junit6</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 84edeb597ff3..c100cbe5184d 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
@@ -176,7 +176,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 3e9b1b4b8021..7c1e1b1b437f 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 41f2a4d6a710..96b138110d63 100644
--- a/components/camel-aws/camel-aws2-sts/pom.xml
+++ b/components/camel-aws/camel-aws2-sts/pom.xml
@@ -74,5 +74,10 @@
<version>${project.version}</version>
<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 b6c288a71f9e..1a9d0c5a9a5b 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
@@ -199,7 +199,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 8565e3cf7bd1..c520f5d73035 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() {