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/28 12:27:31 UTC
(camel) branch main updated: CAMEL-24280: camel-aws2-mq - throw when pojoRequest=true and the body is the wrong type (#25184)
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 3662cab1970f CAMEL-24280: camel-aws2-mq - throw when pojoRequest=true and the body is the wrong type (#25184)
3662cab1970f is described below
commit 3662cab1970fa88c9390810eae9d0cc82a37125b
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Tue Jul 28 14:27:23 2026 +0200
CAMEL-24280: camel-aws2-mq - throw when pojoRequest=true and the body is the wrong type (#25184)
Child of CAMEL-24261. MQ2Producer's listBrokers, createBroker, deleteBroker,
rebootBroker, updateBroker and describeBroker branches only acted when the body
was the matching request type under pojoRequest=true; any other body silently
fell through with no AWS call and no error. Add the missing else that throws
IllegalArgumentException naming the required type, consistent with CAMEL-23462.
Six tests send a wrong-typed body to pojoRequest=true routes and assert the
message; each was verified to fail (silent no-op) before the fix. The shared 4.22
upgrade-guide entry was added with CAMEL-24263.
Signed-off-by: Andrea Cosentino <an...@gmail.com>
Co-authored-by: Claude Opus 4.8 <no...@anthropic.com>
---
.../camel/component/aws2/mq/MQ2Producer.java | 18 ++++++++
.../camel/component/aws2/mq/MQProducerTest.java | 52 ++++++++++++++++++++++
2 files changed, 70 insertions(+)
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 539616e6f77b..6cf8be3f5689 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
@@ -133,6 +133,9 @@ public class MQ2Producer extends DefaultProducer {
message.setBody(result);
message.setHeader(MQ2Constants.NEXT_TOKEN, result.nextToken());
message.setHeader(MQ2Constants.IS_TRUNCATED, ObjectHelper.isNotEmpty(result.nextToken()));
+ } else {
+ throw new IllegalArgumentException(
+ "listBrokers operation requires ListBrokersRequest in POJO mode");
}
} else {
ListBrokersRequest.Builder builder = ListBrokersRequest.builder();
@@ -179,6 +182,9 @@ public class MQ2Producer extends DefaultProducer {
}
Message message = getMessageForResponse(exchange);
message.setBody(result);
+ } else {
+ throw new IllegalArgumentException(
+ "createBroker operation requires CreateBrokerRequest in POJO mode");
}
} else {
CreateBrokerRequest.Builder builder = CreateBrokerRequest.builder();
@@ -252,6 +258,9 @@ public class MQ2Producer extends DefaultProducer {
}
Message message = getMessageForResponse(exchange);
message.setBody(result);
+ } else {
+ throw new IllegalArgumentException(
+ "deleteBroker operation requires DeleteBrokerRequest in POJO mode");
}
} else {
DeleteBrokerRequest.Builder builder = DeleteBrokerRequest.builder();
@@ -287,6 +296,9 @@ public class MQ2Producer extends DefaultProducer {
}
Message message = getMessageForResponse(exchange);
message.setBody(result);
+ } else {
+ throw new IllegalArgumentException(
+ "rebootBroker operation requires RebootBrokerRequest in POJO mode");
}
} else {
RebootBrokerRequest.Builder builder = RebootBrokerRequest.builder();
@@ -323,6 +335,9 @@ public class MQ2Producer extends DefaultProducer {
}
Message message = getMessageForResponse(exchange);
message.setBody(result);
+ } else {
+ throw new IllegalArgumentException(
+ "updateBroker operation requires UpdateBrokerRequest in POJO mode");
}
} else {
UpdateBrokerRequest.Builder builder = UpdateBrokerRequest.builder();
@@ -364,6 +379,9 @@ public class MQ2Producer extends DefaultProducer {
}
Message message = getMessageForResponse(exchange);
message.setBody(result);
+ } else {
+ throw new IllegalArgumentException(
+ "describeBroker operation requires DescribeBrokerRequest in POJO mode");
}
} else {
DescribeBrokerRequest.Builder builder = DescribeBrokerRequest.builder();
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 35bc41f86f5b..6b7ac15d9be5 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
@@ -210,6 +210,48 @@ public class MQProducerTest extends CamelTestSupport {
assertEquals("1", resultGet.brokerId());
}
+ @Test
+ void listBrokersWithPojoRequestAndWrongBodyTypeThrows() {
+ assertThatThrownBy(() -> template.requestBody("direct:listBrokersPojo", "not a ListBrokersRequest"))
+ .hasRootCauseInstanceOf(IllegalArgumentException.class)
+ .hasRootCauseMessage("listBrokers operation requires ListBrokersRequest in POJO mode");
+ }
+
+ @Test
+ void createBrokerWithPojoRequestAndWrongBodyTypeThrows() {
+ assertThatThrownBy(() -> template.requestBody("direct:createBrokerPojo", "not a CreateBrokerRequest"))
+ .hasRootCauseInstanceOf(IllegalArgumentException.class)
+ .hasRootCauseMessage("createBroker operation requires CreateBrokerRequest in POJO mode");
+ }
+
+ @Test
+ void deleteBrokerWithPojoRequestAndWrongBodyTypeThrows() {
+ assertThatThrownBy(() -> template.requestBody("direct:deleteBrokerPojo", "not a DeleteBrokerRequest"))
+ .hasRootCauseInstanceOf(IllegalArgumentException.class)
+ .hasRootCauseMessage("deleteBroker operation requires DeleteBrokerRequest in POJO mode");
+ }
+
+ @Test
+ void rebootBrokerWithPojoRequestAndWrongBodyTypeThrows() {
+ assertThatThrownBy(() -> template.requestBody("direct:rebootBrokerPojo", "not a RebootBrokerRequest"))
+ .hasRootCauseInstanceOf(IllegalArgumentException.class)
+ .hasRootCauseMessage("rebootBroker operation requires RebootBrokerRequest in POJO mode");
+ }
+
+ @Test
+ void updateBrokerWithPojoRequestAndWrongBodyTypeThrows() {
+ assertThatThrownBy(() -> template.requestBody("direct:updateBrokerPojo", "not an UpdateBrokerRequest"))
+ .hasRootCauseInstanceOf(IllegalArgumentException.class)
+ .hasRootCauseMessage("updateBroker operation requires UpdateBrokerRequest in POJO mode");
+ }
+
+ @Test
+ void describeBrokerWithPojoRequestAndWrongBodyTypeThrows() {
+ assertThatThrownBy(() -> template.requestBody("direct:describeBrokerPojo", "not a DescribeBrokerRequest"))
+ .hasRootCauseInstanceOf(IllegalArgumentException.class)
+ .hasRootCauseMessage("describeBroker operation requires DescribeBrokerRequest in POJO mode");
+ }
+
@Override
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
@@ -230,6 +272,16 @@ public class MQProducerTest extends CamelTestSupport {
.to("mock:result");
from("direct:describeBroker").to("aws2-mq://test?amazonMqClient=#amazonMqClient&operation=describeBroker")
.to("mock:result");
+ from("direct:createBrokerPojo")
+ .to("aws2-mq://test?amazonMqClient=#amazonMqClient&operation=createBroker&pojoRequest=true");
+ from("direct:deleteBrokerPojo")
+ .to("aws2-mq://test?amazonMqClient=#amazonMqClient&operation=deleteBroker&pojoRequest=true");
+ from("direct:rebootBrokerPojo")
+ .to("aws2-mq://test?amazonMqClient=#amazonMqClient&operation=rebootBroker&pojoRequest=true");
+ from("direct:updateBrokerPojo")
+ .to("aws2-mq://test?amazonMqClient=#amazonMqClient&operation=updateBroker&pojoRequest=true");
+ from("direct:describeBrokerPojo")
+ .to("aws2-mq://test?amazonMqClient=#amazonMqClient&operation=describeBroker&pojoRequest=true");
}
};
}