[ 
https://issues.apache.org/jira/browse/CAMEL-25956?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18131135#comment-18131135
 ] 

Claus Ibsen commented on CAMEL-25956:
-------------------------------------

Fixed in PR https://github.com/apache/camel/pull/28372

_Claude Code on behalf of davsclaus_

> camel-google-pubsub - the producer sends any body other than text or bytes 
> through Java serialization, so a stream or a file fails and no body publishes 
> a serialized null
> --------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-25956
>                 URL: https://issues.apache.org/jira/browse/CAMEL-25956
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-google-pubsub
>    Affects Versions: 4.18.0, 4.22.0, 4.23.0
>            Reporter: Claus Ibsen
>            Assignee: Claus Ibsen
>            Priority: Major
>             Fix For: 4.24.0
>
>
> The google-pubsub producer sends a String as UTF-8 and a byte[] as it is, and 
> passes any other body to the serializer ({{GooglePubsubProducer}}, main 
> e6885df7894d, lines 98-106). The default serializer is Java serialization 
> ({{DefaultGooglePubsubSerializer.serialize}}, lines 29-34, set by 
> {{GooglePubsubEndpoint}} line 155), and the body is never converted first. So:
> * a stream fails with {{java.io.NotSerializableException: 
> org.apache.camel.converter.stream.ByteArrayInputStreamCache}}. With stream 
> caching on, as it is by default, that is the body of a route that starts with 
> an HTTP request or reads a stream;
> * the GenericFile of the file consumer fails with 
> {{java.io.NotSerializableException: 
> org.apache.camel.component.file.GenericFile}}, so 
> {{from("file:inbox").to("google-pubsub:project:topic")}} does not work;
> * a {{java.io.File}} is Serializable, so the message holds the serialized 
> File object, its path, and not the content of the file;
> * no body publishes 5 bytes, a serialized null ({{AC ED 00 05 70}});
> * a Map or a POJO is sent as Java-serialized bytes, which only a Java reader 
> with an ObjectInputStream can read.
> Checked on 4.24.0-SNAPSHOT against the Pub/Sub emulator ({{camel infra run 
> google pub-sub}}): text and bytes arrive as they were sent, a Map arrives as 
> 216 bytes that start with AC ED, and the other cases fail or arrive as 
> described. The documentation says "Everything else will be serialised into a 
> byte[] array" ({{google-pubsub-component.adoc}}).
> *Proposed change*: convert a body that is not a String or a byte[] to a 
> byte[] with the type converter, as other producers do, and use the serializer 
> only for a body that does not convert; fail when there is no body.
> _Claude Code on behalf of davsclaus_



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to