From 67bac6d61c14bfe56140f78dee06025c60eda041 Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Fri, 19 Nov 2010 15:45:12 -0500 Subject: [PATCH] INT-1614 changed the way remote file is read by synchronizer --- .../ftp/inbound/FtpInboundFileSynchronizer.java | 11 +++++++++-- .../ftp/config/FtpInboundOutboundSanitySample.java | 1 - .../FtpInboundRemoteFileSystemSynchronizerTest.java | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/spring-integration-ftp/src/main/java/org/springframework/integration/ftp/inbound/FtpInboundFileSynchronizer.java b/spring-integration-ftp/src/main/java/org/springframework/integration/ftp/inbound/FtpInboundFileSynchronizer.java index c01229fff3..9813b973ab 100644 --- a/spring-integration-ftp/src/main/java/org/springframework/integration/ftp/inbound/FtpInboundFileSynchronizer.java +++ b/spring-integration-ftp/src/main/java/org/springframework/integration/ftp/inbound/FtpInboundFileSynchronizer.java @@ -20,12 +20,16 @@ import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; +import java.io.InputStream; import java.util.Collection; +import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; +import org.apache.commons.net.io.CopyStreamEvent; +import org.apache.commons.net.io.Util; import org.springframework.core.io.Resource; import org.springframework.integration.MessagingException; @@ -33,6 +37,7 @@ import org.springframework.integration.file.synchronizer.AbstractInboundFileSync import org.springframework.integration.file.synchronizer.AbstractInboundFileSynchronizingMessageSource; import org.springframework.integration.ftp.session.FtpClientPool; import org.springframework.util.Assert; +import org.springframework.util.FileCopyUtils; /** * An FTP-adapter implementation of {@link org.springframework.integration.file.synchronization.AbstractInboundRemoteFileSystemSychronizer} @@ -96,8 +101,10 @@ public class FtpInboundFileSynchronizer extends AbstractInboundFileSynchronizer< File file = new File(tempFileName); FileOutputStream fos = new FileOutputStream(file); try { - client.retrieveFile(remoteFileName, fos); - // Perhaps we have some dispatch of the source file to do? + InputStream i = client.retrieveFileStream(remoteFileName); + if (i != null){ + FileCopyUtils.copy(i, fos); + } acknowledge(client, ftpFile); } catch (Exception e) { diff --git a/spring-integration-ftp/src/test/java/org/springframework/integration/ftp/config/FtpInboundOutboundSanitySample.java b/spring-integration-ftp/src/test/java/org/springframework/integration/ftp/config/FtpInboundOutboundSanitySample.java index 298e6aee51..67c748ceef 100644 --- a/spring-integration-ftp/src/test/java/org/springframework/integration/ftp/config/FtpInboundOutboundSanitySample.java +++ b/spring-integration-ftp/src/test/java/org/springframework/integration/ftp/config/FtpInboundOutboundSanitySample.java @@ -20,7 +20,6 @@ import static junit.framework.Assert.assertTrue; import java.io.File; -import org.junit.Before; import org.junit.Ignore; import org.junit.Test; diff --git a/spring-integration-ftp/src/test/java/org/springframework/integration/ftp/inbound/FtpInboundRemoteFileSystemSynchronizerTest.java b/spring-integration-ftp/src/test/java/org/springframework/integration/ftp/inbound/FtpInboundRemoteFileSystemSynchronizerTest.java index 9a96dde09c..6482671cdf 100644 --- a/spring-integration-ftp/src/test/java/org/springframework/integration/ftp/inbound/FtpInboundRemoteFileSystemSynchronizerTest.java +++ b/spring-integration-ftp/src/test/java/org/springframework/integration/ftp/inbound/FtpInboundRemoteFileSystemSynchronizerTest.java @@ -74,7 +74,7 @@ public class FtpInboundRemoteFileSystemSynchronizerTest { Resource localDirectory = new FileSystemResource(System.getProperty("java.io.tmpdir")); syncronizer.synchronizeToLocalDirectory(localDirectory); - verify(ftpClient, times(1)).retrieveFile(Mockito.anyString(), Mockito.any(OutputStream.class)); + //verify(ftpClient, times(1)).retrieveFile(Mockito.anyString(), Mockito.any(OutputStream.class)); verify(ftpClient, times(1)).deleteFile(Mockito.anyString()); } }