Claus Ibsen created CAMEL-26041:
-----------------------------------
Summary: camel-bean - the error of a call of equals on the body
says to unmarshal the body
Key: CAMEL-26041
URL: https://issues.apache.org/jira/browse/CAMEL-26041
Project: Camel
Issue Type: Bug
Components: camel-bean
Reporter: Claus Ibsen
Fix For: 4.24.0
Camel does not call the methods of java.lang.Object on a bean
({{BeanInfo.EXCLUDED_METHOD_NAMES}}: equals, hashCode, getClass, wait, notify
and the others), so {{${body.equals('x')}}} fails with a
{{MethodNotFoundException}} for any body. Since CAMEL-25749,
{{BeanExpression.invokeMethodIfPresent}} adds the body hint to the error of an
OGNL call on a body that is still the payload, so for a String body the error
says:
{noformat}
Failed to invoke method: equals('test-value-2') (the body is text (a String),
set by to at survey-s.camel.yaml:153: unmarshal it first with the data format
of the payload (such as unmarshal: json, unmarshal: jacksonXml or unmarshal:
csv) to read its fields) on the message body of type java.lang.String due to:
org.apache.camel.component.bean.MethodNotFoundException: Method with name:
equals('test-value-2') not found on bean: test-value-2 of type: java.lang.String
{noformat}
The body is not why it failed, and unmarshalling it does not help: the
comparison is {{${body} == 'test-value-2'}}.
Checked on 4.24.0-SNAPSHOT with {{camel run}}: a log of
{{same=${body.equals('test-value-2')}}} after an aws-secrets-manager getSecret,
found while adding the catalog body types of the AWS components (CAMEL-24961).
*Proposed change*: no body hint when the method is one Camel does not call; say
that instead, and for equals how to compare with the Simple operator.
_Claude Code on behalf of davsclaus_
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)