Andrea Cosentino created CAMEL-24249:
----------------------------------------
Summary: camel-aws2 MSK/MQ/STS producers throw copy-pasted
IllegalArgumentException messages naming the wrong parameter
Key: CAMEL-24249
URL: https://issues.apache.org/jira/browse/CAMEL-24249
Project: Camel
Issue Type: Bug
Components: camel-aws
Reporter: Andrea Cosentino
h3. Problem
Several AWS v2 producers validate required headers and throw
{{IllegalArgumentException}} with a message that was copy-pasted from a
neighbouring check and never updated, so the message names the wrong parameter.
A user who forgets a required header is told to supply a *different* one.
h4. camel-aws2-msk -- MSK2Producer.createCluster
The number-of-broker-nodes check reuses the Kafka-version message:
{code:java}
if
(ObjectHelper.isNotEmpty(exchange.getIn().getHeader(MSK2Constants.BROKER_NODES_NUMBER)))
{
Integer nodesNumber =
exchange.getIn().getHeader(MSK2Constants.BROKER_NODES_NUMBER, Integer.class);
builder.numberOfBrokerNodes(nodesNumber);
} else {
throw new IllegalArgumentException("Kafka Version must be specified"); //
should be the broker-nodes-number message
}
{code}
h4. camel-aws2-mq -- MQ2Producer
{{MISSING_BROKER_NAME = "Broker Name must be specified"}} is correct only for
{{createBroker}} (which takes a broker *name*). It is also thrown for the
broker *id* checks in {{deleteBroker}}, {{rebootBroker}}, {{updateBroker}} and
{{describeBroker}}, and for the {{configurationId}} check in {{updateBroker}}
-- all of which take an id, not a name:
{code:java}
// updateBroker
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); // configurationId
is missing, not the broker name
}
{code}
h4. camel-aws2-sts -- STS2Producer.getFederationToken
The federated-name check carries the {{assumeRole}} operation name:
{code:java}
throw new IllegalArgumentException("Federated name needs to be specified for
assumeRole operation");
{code}
The enclosing operation is {{getFederationToken}}.
h3. Impact
No functional misbehaviour, but the diagnostics actively mislead. Someone
calling {{createCluster}} without a broker-node count is told "Kafka Version
must be specified" even though they supplied the Kafka version; someone calling
{{updateBroker}} without a configuration id is told to specify a broker name.
h3. Proposed fix
Give each check a message that names the parameter it guards: a
broker-nodes-number message for MSK; dedicated {{MISSING_BROKER_ID}} /
{{MISSING_CONFIGURATION_ID}} constants for the MQ id checks (keeping
{{MISSING_BROKER_NAME}} for {{createBroker}}); and {{getFederationToken}} in
the STS message.
h3. Affected versions
All three producers carry these strings verbatim on {{main}}, {{camel-4.18.x}}
and {{camel-4.14.x}}.
----
_Reported by Claude Code on behalf of acosentino, from an automated audit of
the camel-aws components._
--
This message was sent by Atlassian Jira
(v8.20.10#820010)