You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Marco Carletti (Jira)" <ji...@apache.org> on 2026/04/29 07:53:00 UTC
[jira] [Updated] (CAMEL-23378) Block String to InputStream conversion in SpringTypeConverter
[ https://issues.apache.org/jira/browse/CAMEL-23378?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Marco Carletti updated CAMEL-23378:
-----------------------------------
Description:
When a Camel Spring Boot route writes a String body to a file: endpoint with checksumFileAlgorithm enabled, the body is incorrectly converted to a FileInputStream by Spring's ObjectToObjectConverter, which treats the String content as a file path:
ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.io.FileInputStream] for value [some file content] Caused by: FileNotFoundException: some file content (No such file or directory)
This happens because the file component's checksum code path (FileOperations.java:321) calls exchange.getMessage().getBody(FileInputStream.class). On plain Camel this returns null (no matching converter) and falls through to the safe InputStream path. On Spring Boot, SpringTypeConverter delegates to Spring's GenericConversionService, which finds ObjectToObjectConverter. This converter sees the FileInputStream(String) constructor and calls new FileInputStream("some file content") — interpreting the message body as a file path instead of data.
was:
When a Camel Spring Boot route writes a String body to a file: endpoint with checksumFileAlgorithm enabled, the body is incorrectly converted to a FileInputStream by Spring's ObjectToObjectConverter, which treats the String content as
a file path:
ConversionFailedException: Failed to convert from type [java.lang.String]
to type [java.io.FileInputStream] for value [some file content]
Caused by: FileNotFoundException: some file content (No such file or directory)
This happens because the file component's checksum code path (FileOperations.java:321) calls exchange.getMessage().getBody(FileInputStream.class). On plain Camel this returns null (no matching converter) and falls through to the safe
InputStream path. On Spring Boot, SpringTypeConverter delegates to Spring's GenericConversionService, which finds ObjectToObjectConverter. This converter sees the FileInputStream(String) constructor and calls new FileInputStream("some
file content") — interpreting the message body as a file path instead of data.
> Block String to InputStream conversion in SpringTypeConverter
> -------------------------------------------------------------
>
> Key: CAMEL-23378
> URL: https://issues.apache.org/jira/browse/CAMEL-23378
> Project: Camel
> Issue Type: Bug
> Affects Versions: 4.18.2, 4.20.0
> Reporter: Marco Carletti
> Assignee: Marco Carletti
> Priority: Critical
>
> When a Camel Spring Boot route writes a String body to a file: endpoint with checksumFileAlgorithm enabled, the body is incorrectly converted to a FileInputStream by Spring's ObjectToObjectConverter, which treats the String content as a file path:
> ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.io.FileInputStream] for value [some file content] Caused by: FileNotFoundException: some file content (No such file or directory)
> This happens because the file component's checksum code path (FileOperations.java:321) calls exchange.getMessage().getBody(FileInputStream.class). On plain Camel this returns null (no matching converter) and falls through to the safe InputStream path. On Spring Boot, SpringTypeConverter delegates to Spring's GenericConversionService, which finds ObjectToObjectConverter. This converter sees the FileInputStream(String) constructor and calls new FileInputStream("some file content") — interpreting the message body as a file path instead of data.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)