Author: dkulp
Date: Wed Jul 13 15:12:06 2011
New Revision: 1146092

URL: http://svn.apache.org/viewvc?rev=1146092&view=rev
Log:
Merged revisions 1145887 via svnmerge from 
https://svn.apache.org/repos/asf/camel/trunk

........
  r1145887 | davsclaus | 2011-07-13 03:06:34 -0400 (Wed, 13 Jul 2011) | 1 line
  
  CAMEL-4215: camel-ftp will now honor stepwise option when deleting files. 
Thanks to dsmw for the patch.
........

Modified:
    camel/branches/camel-2.7.x/   (props changed)
    
camel/branches/camel-2.7.x/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpOperations.java

Propchange: camel/branches/camel-2.7.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jul 13 15:12:06 2011
@@ -1 +1 @@
-/camel/trunk:1083696,1083723-1083724,1084150,1085277,1085543,1085549,1085905,1085909,1086165,1086231,1087005,1087276,1087612,1087620,1087856,1088583,1088916-1088917,1089275,1089348,1090166,1090204,1090564,1090960-1090969,1091082,1091518,1091771,1091799,1092034,1092068,1092577,1092667,1093978,1093980,1093999,1094123,1094147,1094156,1095405,1095469,1095471,1095475-1095476,1096346,1096736,1097761,1097909,1097912,1097978,1098032,1098628,1098630,1099228,1099417,1100711,1100975,1102162,1102177,1102181,1104076,1124497,1127744,1127988,1128315,1128970,1131411,1132961,1134252,1134260,1134404,1134441,1134501,1134626,1134681,1134714-1134911,1135223,1135364,1136065,1136290,1137696,1138285,1139163,1139747,1139749,1140096-1140102,1141783,1142500,1142654,1142721,1143332,1143925,1144248,1144324,1145994,1146057
+/camel/trunk:1083696,1083723-1083724,1084150,1085277,1085543,1085549,1085905,1085909,1086165,1086231,1087005,1087276,1087612,1087620,1087856,1088583,1088916-1088917,1089275,1089348,1090166,1090204,1090564,1090960-1090969,1091082,1091518,1091771,1091799,1092034,1092068,1092577,1092667,1093978,1093980,1093999,1094123,1094147,1094156,1095405,1095469,1095471,1095475-1095476,1096346,1096736,1097761,1097909,1097912,1097978,1098032,1098628,1098630,1099228,1099417,1100711,1100975,1102162,1102177,1102181,1104076,1124497,1127744,1127988,1128315,1128970,1131411,1132961,1134252,1134260,1134404,1134441,1134501,1134626,1134681,1134714-1134911,1135223,1135364,1136065,1136290,1137696,1138285,1139163,1139747,1139749,1140096-1140102,1141783,1142500,1142654,1142721,1143332,1143925,1144248,1144324,1145887,1145994,1146057

Propchange: camel/branches/camel-2.7.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: 
camel/branches/camel-2.7.x/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpOperations.java
URL: 
http://svn.apache.org/viewvc/camel/branches/camel-2.7.x/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpOperations.java?rev=1146092&r1=1146091&r2=1146092&view=diff
==============================================================================
--- 
camel/branches/camel-2.7.x/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpOperations.java
 (original)
+++ 
camel/branches/camel-2.7.x/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpOperations.java
 Wed Jul 13 15:12:06 2011
@@ -48,7 +48,7 @@ import org.slf4j.LoggerFactory;
  * FTP remote file operations
  */
 public class FtpOperations implements RemoteFileOperations<FTPFile> {
-    
+
     protected final transient Logger log = LoggerFactory.getLogger(getClass());
     protected final FTPClient client;
     protected final FTPClientConfig clientConfig;
@@ -218,11 +218,39 @@ public class FtpOperations implements Re
         if (log.isDebugEnabled()) {
             log.debug("Deleting file: " + name);
         }
+
+        boolean result;
+        String target = name;
+        String currentDir = null;
+
         try {
-            return this.client.deleteFile(name);
+            if (endpoint.getConfiguration().isStepwise()) {
+                // remember current directory
+                currentDir = getCurrentDirectory();
+                target = FileUtil.stripPath(name);
+
+                try {
+                    changeCurrentDirectory(FileUtil.onlyPath(name));
+                } catch (GenericFileOperationFailedException e) {
+                    // we could not change directory, try to change back before
+                    changeCurrentDirectory(currentDir);
+                    throw e;
+                }
+            }
+
+            // delete the file
+            result = client.deleteFile(target);
+
+            // change back to previous directory
+            if (currentDir != null) {
+                changeCurrentDirectory(currentDir);
+            }
+
         } catch (IOException e) {
             throw new 
GenericFileOperationFailedException(client.getReplyCode(), 
client.getReplyString(), e.getMessage(), e);
         }
+
+        return result;
     }
 
     public boolean renameFile(String from, String to) throws 
GenericFileOperationFailedException {
@@ -330,7 +358,7 @@ public class FtpOperations implements Re
 
     @SuppressWarnings("unchecked")
     private boolean retrieveFileToFileInLocalWorkDirectory(String name, 
Exchange exchange) throws GenericFileOperationFailedException {
-        File temp;        
+        File temp;
         File local = new 
File(FileUtil.normalizePath(endpoint.getLocalWorkDirectory()));
         OutputStream os;
         try {
@@ -338,7 +366,7 @@ public class FtpOperations implements Re
             GenericFile<FTPFile> target = (GenericFile<FTPFile>) 
exchange.getProperty(FileComponent.FILE_EXCHANGE_FILE);
             ObjectHelper.notNull(target, "Exchange should have the " + 
FileComponent.FILE_EXCHANGE_FILE + " set");
             String relativeName = target.getRelativeFilePath();
-            
+
             temp = new File(local, relativeName + ".inprogress");
             local = new File(local, relativeName);
 
@@ -354,7 +382,7 @@ public class FtpOperations implements Re
             if (local.exists()) {
                 if (!FileUtil.deleteFile(local)) {
                     throw new GenericFileOperationFailedException("Cannot 
delete existing local work file: " + local);
-                }                
+                }
             }
 
             // create new temp local work file
@@ -368,7 +396,7 @@ public class FtpOperations implements Re
             // set header with the path to the local work file            
             exchange.getIn().setHeader(Exchange.FILE_LOCAL_WORK_PATH, 
local.getPath());
 
-        } catch (Exception e) {            
+        } catch (Exception e) {
             throw new GenericFileOperationFailedException("Cannot create new 
local work file: " + local);
         }
 
@@ -395,7 +423,7 @@ public class FtpOperations implements Re
             }
 
             result = client.retrieveFile(remoteName, os);
-            
+
             // change back to current directory
             if (endpoint.getConfiguration().isStepwise()) {
                 changeCurrentDirectory(currentDir);


Reply via email to