[
https://issues.apache.org/jira/browse/CAMEL-4370?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen resolved CAMEL-4370.
--------------------------------
Resolution: Fixed
Fix Version/s: 2.9.0
2.8.1
Thanks for reporting.
> It's hardly possible to use all expression of the Simple language to create
> file names in the file component
> ------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-4370
> URL: https://issues.apache.org/jira/browse/CAMEL-4370
> Project: Camel
> Issue Type: Bug
> Components: camel-core
> Affects Versions: 2.7.1
> Reporter: Sergey Zhemzhitsky
> Assignee: Claus Ibsen
> Labels: camel-file
> Fix For: 2.8.1, 2.9.0
>
>
> Sometimes it can be necessary to use custom headers to create a file name.
> For example, I declare my file endpoint in the following manner:
> {code}
> <route id="fileReader">
> <from
> uri="file://rootFolder?move=.backup&moveFailed=.error/${header.CustomHeader}"
> />
> <to uri="file://out"/>
> </route>
> {code}
> The header "CustomHeader" cannot be read because of the following snippets of
> code in the org.apache.camel.component.file.GenericFile
> {code}
> /**
> * Bind this GenericFile to an Exchange
> */
> public void bindToExchange(Exchange exchange) {
> exchange.setProperty(FileComponent.FILE_EXCHANGE_FILE, this);
> GenericFileMessage<T> in = new GenericFileMessage<T>(this);
> exchange.setIn(in);
> populateHeaders(in);
> }
> /**
> * Populates the {@link GenericFileMessage} relevant headers
> *
> * @param message the message to populate with headers
> */
> public void populateHeaders(GenericFileMessage<T> message) {
> if (message != null) {
> message.setHeader(Exchange.FILE_NAME_ONLY, getFileNameOnly());
> message.setHeader(Exchange.FILE_NAME, getFileName());
> message.setHeader("CamelFileAbsolute", isAbsolute());
> message.setHeader("CamelFileAbsolutePath", getAbsoluteFilePath());
> if (isAbsolute()) {
> message.setHeader(Exchange.FILE_PATH, getAbsoluteFilePath());
> } else {
> // we must normalize path according to protocol if we build our
> own paths
> String path = normalizePathToProtocol(getEndpointPath() +
> File.separator + getRelativeFilePath());
> message.setHeader(Exchange.FILE_PATH, path);
> }
> message.setHeader("CamelFileRelativePath", getRelativeFilePath());
> message.setHeader(Exchange.FILE_PARENT, getParent());
> if (getFileLength() >= 0) {
> message.setHeader("CamelFileLength", getFileLength());
> }
> if (getLastModified() > 0) {
> message.setHeader(Exchange.FILE_LAST_MODIFIED, new
> Date(getLastModified()));
> }
> }
> }
> {code}
> As you can see a new "in" message is created and not all the headers from the
> original message are copied to it.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira