camel-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <>
Subject [jira] [Commented] (CAMEL-11298) Using chmodDirectory with full paths makes file producer to created directories relative to source
Date Mon, 22 May 2017 14:49:04 GMT


ASF GitHub Bot commented on CAMEL-11298:

GitHub user Stabbz opened a pull request:

    CAMEL-11298: Fix, allowing usage of absolute and relative paths with chmodDirectory option

    Reused the absolute boolean flag to handle absolute paths when using chmodDirectory option.
Previously using absolute paths produced an exception.

You can merge this pull request into a Git repository by running:

    $ git pull chmod-dir-fix

Alternatively you can review and apply these changes as the patch at:

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #1707
commit 995ff7e1640fe285eb66c948d8f487c918991c26
Author: Damyan Damyanov <>
Date:   2017-05-22T11:41:34Z

    CAMEL-11298: Minor change to file constructor used in chmodDirectory. Should fix the issue.

commit b91e1d21e3e0b50e95e12b793610c956ce1e7950
Author: Damyan Damyanov <>
Date:   2017-05-22T14:43:49Z

    CAMEL-11298: Added additional logic to handle absolute and relative paths when using chmodDirectory.


> Using chmodDirectory with full paths makes file producer to created directories relative
to source
> --------------------------------------------------------------------------------------------------
>                 Key: CAMEL-11298
>                 URL:
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-core
>    Affects Versions: 2.18.2, 2.19.0
>         Environment: Arch Linux
>            Reporter: Damyan Damyanov
>             Fix For: 2.18.5, 2.19.1, 2.20.0
> Tried using the chmodDirectory property on a file producer that writes to full system
paths and noticed that with the chmodDirectory property the directories get created relative
to the source/project.
> Without using the property the files get properly created using the full path that is
given to them.
> I ran a debugger and found the source of the problem:
> Code is from org.apache.camel.component.file.FileOperations 
> in buildDirectory method
> at lines 97 - 118
> {code}
> if (permissions == null || permissions.isEmpty()) {
>             return dir.mkdirs();
>         }
>         // create directory one part of a time and set permissions
>         try {
>             String[] parts = dir.getPath().split("\\" + File.separatorChar);
>             File base = new File(".");
>             for (String part : parts) {
>                 File subDir = new File(base, part);
>                 if (!subDir.exists()) {
>                     if (subDir.mkdir()) {
>                         if (LOG.isTraceEnabled()) {
>                             LOG.trace("Setting chmod: {} on directory: {} ", PosixFilePermissions.toString(permissions),
>                         }
>                         Files.setPosixFilePermissions(subDir.toPath(), permissions);
>                     } else {
>                         return false;
>                     }
>                 }
>                 base = new File(base, subDir.getName());
>             }
>         }
> {code}
> Base File used to create all the folders and set their permissions is initialized with
new File("."), effectively this always creates the directories given to it, relative to the
source, and will not handle full system paths.
> Is there a reason I'm unaware of that this is implemented this way?
> I tested running folder creation code with new File("") as a base and it worked fine,
would that be enough to handle the issue if it indeed is an issue?
> I can do this my self by issuing a pull request, let me know.
> Thanks.

This message was sent by Atlassian JIRA

View raw message