Sergey Zolotaryov created CAMEL-8586:
----------------------------------------
Summary: File component optimization required for file response
body
Key: CAMEL-8586
URL: https://issues.apache.org/jira/browse/CAMEL-8586
Project: Camel
Issue Type: Improvement
Components: camel-core
Affects Versions: 2.14.1
Reporter: Sergey Zolotaryov
I have a producer which makes files (writes data to a temp file) and sets it as
output message body. I was expecting Camel file component to just rename the
resulting file. But instead it copies the file leaving the temporary file
intact. Here's a snippet from the FileOperations class which raised my concern:
{code}
// we can optimize and use file based if no charset must be used,
and the input body is a file
File source = null;
boolean fileBased = false;
if (charset == null) {
// if no charset, then we can try using file directly
(optimized)
Object body = exchange.getIn().getBody();
if (body instanceof WrappedFile) {
body = ((WrappedFile<?>) body).getFile();
fileBased = true;
}
if (body instanceof File) {
source = (File) body;
}
}
if (fileBased) {
// okay we know the body is a file based
{code}
So the fileBased is only assumed if we are using a proprietary WrappedFile
body, whereas normal file is not considered a fileBased body. Am I missing
something?
We could just treat files the same way as WrappedFile, or have an endpoint
option to treat them as such, what do you think?
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)