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 <[email protected]>
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 <[email protected]>
Co-authored-by: Claude Opus 4.8 <[email protected]>
---
.../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");
}
};
}