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


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/3636e279
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/3636e279
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/3636e279

Branch: refs/heads/camel-2.19.x
Commit: 3636e279c23a46130c67a2405f33016b017de990
Parents: 5b21c74
Author: Damyan Damyanov <damyan.damya...@scalefocus.com>
Authored: Mon May 22 17:43:49 2017 +0300
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Tue May 23 11:34:10 2017 +0200

----------------------------------------------------------------------
 .../apache/camel/component/file/FileOperations.java | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/3636e279/camel-core/src/main/java/org/apache/camel/component/file/FileOperations.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/component/file/FileOperations.java 
b/camel-core/src/main/java/org/apache/camel/component/file/FileOperations.java
index 8a523d7..c660295 100644
--- 
a/camel-core/src/main/java/org/apache/camel/component/file/FileOperations.java
+++ 
b/camel-core/src/main/java/org/apache/camel/component/file/FileOperations.java
@@ -81,7 +81,7 @@ public class FileOperations implements 
GenericFileOperations<File> {
         return file.exists();
     }
 
-    protected boolean buildDirectory(File dir, Set<PosixFilePermission> 
permissions) {
+    protected boolean buildDirectory(File dir, Set<PosixFilePermission> 
permissions, boolean absolute) {
         if (dir.exists()) {
             return true;
         }
@@ -93,7 +93,15 @@ public class FileOperations implements 
GenericFileOperations<File> {
         // create directory one part of a time and set permissions
         try {
             String[] parts = dir.getPath().split("\\" + File.separatorChar);
-            File base = new File("");
+
+            File base;
+            // reusing absolute flag to handle relative and absolute paths
+            if (absolute) {
+                base = new File("");
+            } else {
+                base = new File(".");
+            }
+
             for (String part : parts) {
                 File subDir = new File(base, part);
                 if (!subDir.exists()) {
@@ -121,7 +129,7 @@ public class FileOperations implements 
GenericFileOperations<File> {
         // always create endpoint defined directory
         if (endpoint.isAutoCreate() && !endpoint.getFile().exists()) {
             LOG.trace("Building starting directory: {}", endpoint.getFile());
-            buildDirectory(endpoint.getFile(), 
endpoint.getDirectoryPermissions());
+            buildDirectory(endpoint.getFile(), 
endpoint.getDirectoryPermissions(), absolute);
         }
 
         if (ObjectHelper.isEmpty(directory)) {
@@ -158,7 +166,7 @@ public class FileOperations implements 
GenericFileOperations<File> {
                 return true;
             } else {
                 LOG.trace("Building directory: {}", path);
-                return buildDirectory(path, 
endpoint.getDirectoryPermissions());
+                return buildDirectory(path, 
endpoint.getDirectoryPermissions(), absolute);
             }
         }
     }

Reply via email to