You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2009/02/15 04:32:17 UTC

svn commit: r744606 - in /camel/trunk/components/camel-ftp/src: main/java/org/apache/camel/component/file/remote/FtpOperations.java test/java/org/apache/camel/component/file/remote/FtpConsumerLocalWorkDirectoryTest.java

Author: ningjiang
Date: Sun Feb 15 03:32:17 2009
New Revision: 744606

URL: http://svn.apache.org/viewvc?rev=744606&view=rev
Log:
CAMEL-1341 fixed the unit test error of FtpConsumerLocalWorkDirectoryTest

Modified:
    camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpOperations.java
    camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FtpConsumerLocalWorkDirectoryTest.java

Modified: camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpOperations.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpOperations.java?rev=744606&r1=744605&r2=744606&view=diff
==============================================================================
--- camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpOperations.java (original)
+++ camel/trunk/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpOperations.java Sun Feb 15 03:32:17 2009
@@ -30,6 +30,7 @@
 import org.apache.camel.component.file.GenericFileEndpoint;
 import org.apache.camel.component.file.GenericFileExchange;
 import org.apache.camel.component.file.GenericFileOperationFailedException;
+import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -194,8 +195,8 @@
     }
 
     private boolean retrieveFileToFileInLocalWorkDirectory(String name, GenericFileExchange<FTPFile> exchange) throws GenericFileOperationFailedException {
-        File temp;
-        File local = new File(endpoint.getLocalWorkDirectory());
+        File temp;        
+        File local = new File(FileUtil.normalizePath(endpoint.getLocalWorkDirectory()));
         OutputStream os;
         try {
             // use relative filename in local work directory
@@ -216,8 +217,9 @@
             if (local.exists()) {
                 if (!local.delete()) {
                     throw new RemoteFileOperationFailedException("Cannot delete existing local work file: " + local);
-                }
+                }                
             }
+           
 
             // create new temp local work file
             if (!temp.createNewFile()) {
@@ -227,10 +229,10 @@
             // store content as a file in the local work directory in the temp handle
             os = new FileOutputStream(temp);
 
-            // set header with the path to the local work file
+            // set header with the path to the local work file            
             exchange.getIn().setHeader("CamelFileLocalWorkPath", local.getPath());
 
-        } catch (Exception e) {
+        } catch (Exception e) {            
             throw new RemoteFileOperationFailedException("Cannot create new local work file: " + local);
         }
 
@@ -238,18 +240,21 @@
         try {
             GenericFile<FTPFile> target = exchange.getGenericFile();
             // store the java.io.File handle as the body
-            target.setBody(local);
+            target.setBody(local);            
             result = client.retrieveFile(name, os);
-
-            // rename temp to local after we have retrieved the data
-            if (!temp.renameTo(local)) {
-                throw new RemoteFileOperationFailedException("Cannot rename local work file from: " + temp + " to: " + local);
-            }
-        } catch (IOException e) {
+            
+        } catch (IOException e) {            
             throw new RemoteFileOperationFailedException(client.getReplyCode(), client.getReplyString(), e.getMessage(), e);
-        } finally {
+        }  finally {
+            // need to close the stream before rename it
             ObjectHelper.close(os, "retrieve: " + name, LOG);
+        }   
+            
+        // rename temp to local after we have retrieved the data
+        if (!temp.renameTo(local)) {                
+            throw new RemoteFileOperationFailedException("Cannot rename local work file from: " + temp + " to: " + local);
         }
+        
 
         return result;
     }

Modified: camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FtpConsumerLocalWorkDirectoryTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FtpConsumerLocalWorkDirectoryTest.java?rev=744606&r1=744605&r2=744606&view=diff
==============================================================================
--- camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FtpConsumerLocalWorkDirectoryTest.java (original)
+++ camel/trunk/components/camel-ftp/src/test/java/org/apache/camel/component/file/remote/FtpConsumerLocalWorkDirectoryTest.java Sun Feb 15 03:32:17 2009
@@ -26,6 +26,7 @@
 import org.apache.camel.component.file.NewFileComponent;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.converter.IOConverter;
+import org.apache.camel.util.FileUtil;
 
 /**
  * @version $Revision$
@@ -39,6 +40,7 @@
     @Override
     protected void setUp() throws Exception {
         deleteDirectory("target/lwd");
+        deleteDirectory("target/out");
         super.setUp();
         prepareFtpServer();
     }
@@ -82,8 +84,8 @@
                     public void process(Exchange exchange) throws Exception {
                         File body = exchange.getIn().getBody(File.class);
                         assertNotNull(body);
-                        assertTrue("Local work file should exists", body.exists());
-                        assertEquals("target/lwd/hello.txt", body.getPath());
+                        assertTrue("Local work file should exists", body.exists());                        
+                        assertEquals(FileUtil.normalizePath("target/lwd/hello.txt"), body.getPath());
                     }
                 }).to("file://target/out", "mock:result");
             }