Details
-
Bug
-
Status: Resolved
-
Minor
-
Resolution: Fixed
-
2.23.3, 2.22.5, 2.24.1, 3.0.0.M4
-
Unknown
Description
Hi,
I face a requirement to place temp files in a folder at the same hierarchy as the output folder like this:
- target/data/output/claus.txt
- target/data/temp/claus.tmp
Using a simple route definition like:
from("direct:a").to("file://target/data/output/?tempFileName=../temp/${file:name.noext}.tmp")
If the temp folder does not exist, the GenericFileProducer should auto-create it. However, it only does so correctly for the tempFileName path, if it is relativ "after" the endpoint path. If it is above/before the endpoint path the tempFileName path will be created as a child of the endpoint path instead:
- target/data/output/target/data/temp
This results in a NoSuchFileException when camel tries to write the temp file into the "correct" temp directory target/data/temp afterwards.
A very easy way to reproduce this is to use the 'parentFileUrl' instead of the 'fileUrl' in the createRouteBuilder method of FileProduceTempFileNameTest.java (https://github.com/apache/camel/blob/master/core/camel-core/src/test/java/org/apache/camel/component/file/FileProduceTempFileNameTest.java).