Claus Ibsen created CAMEL-26076:
-----------------------------------
Summary: camel-aws2-rekognition - no operation fails with a
NullPointerException, and a DetectionAttributes header of Strings fails
Key: CAMEL-26076
URL: https://issues.apache.org/jira/browse/CAMEL-26076
Project: Camel
Issue Type: Bug
Components: camel-aws2
Affects Versions: 4.18.0, 4.22.0, 4.23.0
Reporter: Claus Ibsen
Fix For: 4.24.0
Found while adding the catalog body types of aws2-rekognition (CAMEL-24961).
h4. 1. No operation fails with a NullPointerException
The operation option is required, which nothing checks when the route runs, and
has no default; with no {{CamelAwsRekognitionOperation}} header, {{switch
(determineOperation(exchange))}} ({{Rekognition2Producer}}, main ed3d719b379c,
line 121) fails with a NullPointerException. Checked on 4.24.0-SNAPSHOT with
{{camel run}} against the AWS emulator of {{camel infra run aws}}.
*Proposed change*: fail with a message that says to set the operation option or
header.
h4. 2. A DetectionAttributes header of Strings fails with a ClassCastException
The catalog says {{CamelAwsRekognitionDetectionAttributes}} is a
{{Collection<String>}} ({{Rekognition2Constants}}, lines 119-120), but
indexFaces passes it to {{detectionAttributes(Collection<Attribute>)}} (lines
883-886), so Strings fail in the AWS SDK. Checked on 4.24.0-SNAPSHOT with
{{camel run}} against the AWS emulator of {{camel infra run aws}}: {{['ALL']}}
gives {{ClassCastException: class java.lang.String cannot be cast to class
...Attribute}}. {{CamelAwsRekognitionFacialAttributes}} is passed the same way
(lines 533-535), and its javaType reads
{{List<oftware.amazon.awssdk.services.rekognition.model.Attribute>}} (line 59).
*Proposed change*: accept Strings, with {{detectionAttributesWithStrings}} and
{{attributesWithStrings}}, and fix the javaType.
h4. 3. The docs
* The operation option is described as "It can be listFunctions, getFunction,
createFunction, deleteFunction or invokeFunction"
({{Rekognition2Configuration}}, line 133), the operations of Lambda.
* {{CamelAwsRekognitionClientRequestToken}} is described as "The ID of the
User" ({{Rekognition2Constants}}, line 40).
* The page does not say where the image comes from: an {{Image}} of the AWS SDK
in the {{CamelAwsRekognitionImage}} header, or the source and target image
headers for compareFaces. A byte array in the header is not used:
{{InvalidParameterException: Image is a required field}} (checked against the
AWS emulator), as is an image in the body.
* The createCollection example sets no collection id.
h4. Also read in the code, not run
* {{Rekognition2ProducerTest}} sends compareFaces with
{{CamelAwsRekognitionImage}} and the target image (lines 68-69), not the source
image; the mock does not notice.
_Claude Code on behalf of davsclaus_
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)