diff --git a/spring-integration-ftp/src/test/java/org/springframework/integration/ftp/outbound/FtpServerOutboundTests-context.xml b/spring-integration-ftp/src/test/java/org/springframework/integration/ftp/outbound/FtpServerOutboundTests-context.xml index 722f69d352..94564cb7b8 100644 --- a/spring-integration-ftp/src/test/java/org/springframework/integration/ftp/outbound/FtpServerOutboundTests-context.xml +++ b/spring-integration-ftp/src/test/java/org/springframework/integration/ftp/outbound/FtpServerOutboundTests-context.xml @@ -78,6 +78,7 @@ filename-pattern="*.txt" expression="payload" remote-directory="ftpTarget" + mput-filter="sortingFilter" reply-channel="output"/> @@ -90,6 +91,7 @@ filename-pattern="*.txt" expression="payload" remote-directory="ftpTarget" + mput-filter="sortingFilter" reply-channel="output"/> @@ -155,4 +157,7 @@ auto-create-directory="true" remote-file-separator="/" /> + + diff --git a/spring-integration-ftp/src/test/java/org/springframework/integration/ftp/outbound/FtpServerOutboundTests.java b/spring-integration-ftp/src/test/java/org/springframework/integration/ftp/outbound/FtpServerOutboundTests.java index 2b606e7884..d035bbde43 100644 --- a/spring-integration-ftp/src/test/java/org/springframework/integration/ftp/outbound/FtpServerOutboundTests.java +++ b/spring-integration-ftp/src/test/java/org/springframework/integration/ftp/outbound/FtpServerOutboundTests.java @@ -38,6 +38,7 @@ import java.io.IOException; import java.io.InputStream; import java.util.Arrays; import java.util.Calendar; +import java.util.Comparator; import java.util.List; import java.util.Set; import java.util.concurrent.BlockingQueue; @@ -57,6 +58,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.integration.channel.DirectChannel; import org.springframework.integration.file.FileHeaders; +import org.springframework.integration.file.filters.FileListFilter; import org.springframework.integration.file.remote.InputStreamCallback; import org.springframework.integration.file.remote.RemoteFileTemplate; import org.springframework.integration.file.remote.SessionCallback; @@ -533,4 +535,29 @@ public class FtpServerOutboundTests { assertEquals(6, files[0].getSize()); } + public static class SortingFileListFilter implements FileListFilter { + + @Override + public List filterFiles(File[] files) { + File[] sorted = Arrays.copyOf(files, files.length); + Arrays.sort(sorted, new Comparator() { + + @Override + public int compare(File o1, File o2) { + if (o1.isDirectory() && !o2.isDirectory()) { + return 1; + } + else if (!o1.isDirectory() && o2.isDirectory()) { + return -1; + } + else { + return o1.getName().compareTo(o2.getName()); + } + } + + }); + return Arrays.asList(sorted); + } + + } }