[
https://issues.apache.org/jira/browse/CAMEL-26300?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andrea Cosentino reassigned CAMEL-26300:
----------------------------------------
Assignee: Andrea Cosentino
> Data type transformers: bugs found by the runtime tests of their body types
> ---------------------------------------------------------------------------
>
> Key: CAMEL-26300
> URL: https://issues.apache.org/jira/browse/CAMEL-26300
> Project: Camel
> Issue Type: Bug
> Components: camel-ai, camel-aws2, camel-google, camel-jackson,
> camel-pinecone
> Reporter: Claus Ibsen
> Assignee: Andrea Cosentino
> Priority: Major
> Fix For: 4.24.0
>
>
> Runtime tests of the data type transformers (CAMEL-25928, the body types of
> the transformers, PR https://github.com/apache/camel/pull/28449) found these
> bugs. Each was shown by running the transformer in a unit test; the code is
> not changed by that PR, whose body types describe what the transformers do
> today.
> h3. camel-ai: pinecone
> * *pinecone:rag returns an empty List for a Pinecone query result*
> ({{PineconeReverseEmbeddingsDataTypeTransformer}}). A QUERY leaves a
> {{QueryResponseWithUnsignedIndices}}, but the transformer calls
> {{getBody(List.class)}}, which gives null for that object, so the result is
> silently an empty List. It only works when given
> {{response.getMatchesList()}}.
> * *pinecone:embeddings stores no text*
> ({{PineconeEmbeddingsDataTypeTransformer}}): the body is not read and no
> {{text_segment}} metadata is written, but pinecone:rag reads exactly that
> metadata, so an embeddings-then-rag round trip gives "" for every match.
> h3. camel-jackson
> * *application-json rejects a Map, a List, plain text, bytes or a stream*
> without a content class ({{JsonDataTypeTransformer}}): it writes with root
> type {{JsonNode}}, and Jackson refuses those types ("Incompatible types:
> declared root type JsonNode"). Only JSON text or a POJO works, while a Map is
> the obvious body to expect to work. Same in camel-jackson3.
> * *application-x-java-object, avro-x-java-object and protobuf-x-java-object
> throw a NullPointerException on a null body* when {{X-Content-Class}} is set:
> {{message.getBody().getClass()}} in {{JsonPojoDataTypeTransformer}}.
> * *jackson 2 avro-x-java-object and protobuf-x-java-object fail on a JsonNode
> body* with an unwrapped {{UnsupportedOperationException}}
> ("TreeTraversingParser does not support schema of type 'avro'/'protobuf'");
> camel-jackson3 handles it.
> * *camel-jackson3-avro and camel-jackson3-protobuf let JacksonException
> through unwrapped* (it is a RuntimeException, so their catch blocks miss it),
> where the jackson 2 transformers wrap errors in {{CamelExecutionException}}.
> * *avro-x-struct does not take JSON text, but protobuf-x-struct does*: Avro
> reads the text as Avro binary and fails.
> h3. camel-aws2
> * *aws2-sqs:application-cloudevents builds the CloudEvent source from the
> receipt handle* ({{aws.sqs.queue.<receiptHandle>}}), not the queue name
> ({{AWS2SQSCloudEventDataTypeTransformer}}).
> * *aws2-ddb:application-x-struct* says "Transforms DynamoDB record into a
> Json node" but leaves a JSON String, and fails with Gson's
> {{JsonIOException}} on a stream or a file body (Gson cannot reflect into
> java.io classes on Java 21) ({{Ddb2JsonStructDataTypeTransformer}}).
> h3. camel-google
> * *google-calendar-stream:application-cloudevents throws a
> NullPointerException on any body that is not a calendar Event*
> ({{GoogleCalendarStreamCloudEventDataTypeTransformer}} calls
> {{message.getBody(Event.class).getEventType()}}), where a clear error would
> be expected. The consumer always gives an Event, so this only shows when the
> transformer is used elsewhere.
> h3. camel-ai: milvus, neo4j, qdrant, pinecone, weaviate
> * *A bare NullPointerException when the embedding header
> (CamelLangChain4jEmbeddingsVector) is missing* in the embeddings
> transformers; pgvector gives a clear message. neo4j:rag also casts the "text"
> value to String, so a non-String value throws ClassCastException.
> _Claude Code on behalf of davsclaus_
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)