Claus Ibsen created CAMEL-25932:
-----------------------------------
Summary: camel-docling - a stream body fails, though the
documentation lists InputStream as an input
Key: CAMEL-25932
URL: https://issues.apache.org/jira/browse/CAMEL-25932
Project: Camel
Issue Type: Bug
Components: camel-docling
Affects Versions: 4.18.0, 4.22.0, 4.23.0
Reporter: Claus Ibsen
Fix For: 4.24.0
The documentation of the component lists {{InputStream}} among the bodies it
converts ("{{InputStream}} - Input stream containing document data", and "Typed
bodies - {{File}}, {{byte[]}}, {{InputStream}}, ...").
{{DoclingProducer.getInputPath}} takes a String, a {{byte[]}} and a {{File}}
(also inside a {{WrappedFile}}), and throws for any other body
({{DoclingProducer.java:1695-1739}} on main). So a stream fails:
{code:yaml}
- route:
from:
uri: timer:stream
parameters:
repeatCount: 1
steps:
- setBody:
constant: "# Hello"
- convertBodyTo:
type: java.io.InputStream
- to: docling:CONVERT_TO_MARKDOWN
{code}
{noformat}
org.apache.camel.InvalidPayloadException: No body available of type:
java.lang.String but has type:
org.apache.camel.converter.stream.ByteArrayInputStreamCache
{noformat}
With {{convertBodyTo: byte[]}} instead, the body is taken. Checked on
4.24.0-SNAPSHOT. It is so since the component was added (CAMEL-22433, 4.15.0).
A stream is the body of several components that a document comes from:
platform-http with the Vert.x engine, the http producer for a response over
8192 bytes, ftp and sftp with {{streamDownload}}, and the stream cache that
stream caching makes of a stream. Each such route needs {{convertBodyTo:
byte[]}} before docling.
*Proposed change*: write a stream to the temp file, as a {{byte[]}} is, within
{{maxFileSize}}, and reset a stream cache after reading it.
_Claude Code on behalf of davsclaus_
--
This message was sent by Atlassian Jira
(v8.20.10#820010)