Damyan Skalinov Damyanov created CAMEL-11298:
------------------------------------------------

             Summary: Using chmodDirectory with full paths makes file producer 
to created directories relative to source
                 Key: CAMEL-11298
                 URL: https://issues.apache.org/jira/browse/CAMEL-11298
             Project: Camel
          Issue Type: Bug
          Components: camel-core
    Affects Versions: 2.19.0, 2.18.2
         Environment: Arch Linux
            Reporter: Damyan Skalinov Damyanov


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), subDir);
                        }
                        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
(v6.3.15#6346)

Reply via email to