[ https://issues.apache.org/jira/browse/CAMEL-11437?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16060621#comment-16060621 ]
ASF GitHub Bot commented on CAMEL-11437: ---------------------------------------- GitHub user onders86 opened a pull request: https://github.com/apache/camel/pull/1781 CAMEL-11437 - probeContentType and preMove attributes causes Exchange… ….FILE_CONTENT_TYPE to get dropped This is a very specific fix for the issue. Better solution would be passing endpoint where bindToExchange method call done on GenericFile. I guess the design may need such a change on GenericFile. because in populateHeaders method there are specific conditions tied to FileEndpoint properties which are not set when concrete instances of GenericFileProcessStrategy are created without the settings bound to endpoint like GenericFileRenameProcessStrategy, GenericDeleteProcessStrategy etc. (where probeContentType is lost) You can merge this pull request into a Git repository by running: $ git pull https://github.com/onders86/camel CAMEL-11437 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/camel/pull/1781.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #1781 ---- commit 351c6d01585b25967e5a0100a87de4b6d20a5a2e Author: onders86 <ondersez...@gmail.com> Date: 2017-06-23T09:17:22Z CAMEL-11437 - probeContentType and preMove attributes causes Exchange.FILE_CONTENT_TYPE to get dropped ---- > Bug using file endpoint probeContentType and preMove attributes together > causes Exchange.FILE_CONTENT_TYPE to get dropped. (2.19.0) > ------------------------------------------------------------------------------------------------------------------------------------ > > Key: CAMEL-11437 > URL: https://issues.apache.org/jira/browse/CAMEL-11437 > Project: Camel > Issue Type: Bug > Components: camel-core > Affects Versions: 2.19.0 > Reporter: David R. Hoffman > Assignee: onder sezgin > Priority: Minor > Fix For: 2.19.2, 2.20.0 > > > We have a route: > {quote} > from("file:inbox?probeContentType=true&preMove=inprogress/$\{file:name}&renameUsingCopy=true") > .transacted() > .bean(MimeTypeParser.class, "populateFileTypeHeaderFields") > .to("seda:somewhere") > {quote} > > The probeContentType executes before preMove & renameUsingCopy and correctly > sets the Exchange.FILE_CONTENT_TYPE header. > The problem happens during the preMove & renameUsingCopy part where > GenericFileExpressionRenamer calls the GenericFile method GenericFile<T> > copyFrom(GenericFile<T> source). > This "copy constructor" method does not copy the header > Exchange.FILE_CONTENT_TYPE, nor does it preserve the value of the GenericFile > probeContentType field. > The class GenericFileRenameProcessStrategy calls GenericFileExpressionRenamer > from the method begin() which in turn calls > GenericFile.bindToExchange(Exchange exchange). > GenericFile.bindToExchange() clears all "CamelFile*" headers and then calls > GenericFile.populateHeaders(GenericFileMessage<T> message) which would call > Files.probeContentType(Path path) if the GenericFile probeContentType field > weren't now false. > When our route gets to the MimeTypeParser bean the "CamelFileContentType" > header is lost, and that is what we are looking for. > One work-around is to put something like this between .transacted() and the > .bean(): > {quote} > .process(exchange -> \{ > Path path = exchange.getIn().getBody(File.class).toPath(); > exchange.getIn().setHeader(Exchange.FILE_CONTENT_TYPE, > Files.probeContentType(path)); > }) > {quote} -- This message was sent by Atlassian JIRA (v6.4.14#64029)