Skip to content

Commit b295fb8

Browse files
lrkartembilan
authored andcommitted
GH-2569: Add ChainFileListFilter constructors
* Adding ChainFileListFilter constructors to behave like CompositeFileListFilter Fixes #2569 Adding constructors in `ChainFileListFilter` matching super, so this class behave like `CompositeFileListFilter` when using XML flow configuration. * Fix import error * Fix checkstyle * Fix checkstyle * Fix checkstyle * Fix author name case Remove unnecessary javadoc * Fix code smell squid:S1155 * Add a simple test case for initializing filters with constructor Fix code smell squid:S1192 * Add a simple test case for initializing filters with constructor Fix code smell squid:S1192 * Fix missing import
1 parent 2d54fe2 commit b295fb8

File tree

2 files changed

+28
-5
lines changed

2 files changed

+28
-5
lines changed

spring-integration-file/src/main/java/org/springframework/integration/file/filters/ChainFileListFilter.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import java.lang.reflect.Array;
2020
import java.util.Arrays;
21+
import java.util.Collection;
2122
import java.util.List;
2223

2324
import org.springframework.util.Assert;
@@ -31,18 +32,27 @@
3132
*
3233
* @author Artem Bilan
3334
* @author Gary Russell
35+
* @author Cengis Kocaurlu
3436
*
3537
* @since 4.3.7
3638
*
3739
*/
3840
public class ChainFileListFilter<F> extends CompositeFileListFilter<F> {
3941

42+
public ChainFileListFilter() {
43+
super();
44+
}
45+
46+
public ChainFileListFilter(Collection<? extends FileListFilter<F>> fileFilters) {
47+
super(fileFilters);
48+
}
49+
4050
@Override
4151
public List<F> filterFiles(F[] files) {
4252
Assert.notNull(files, "'files' should not be null");
4353
List<F> leftOver = Arrays.asList(files);
4454
for (FileListFilter<F> fileFilter : this.fileFilters) {
45-
if (leftOver.size() == 0) {
55+
if (leftOver.isEmpty()) {
4656
break;
4757
}
4858
@SuppressWarnings("unchecked")

spring-integration-file/src/test/java/org/springframework/integration/file/filters/ChainFileListFilterIntegrationTests.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,24 @@
2020

2121
import java.io.File;
2222
import java.io.IOException;
23+
import java.util.Arrays;
2324
import java.util.List;
2425

2526
import org.junit.Test;
2627

2728
/**
2829
* @author Aaron Grant
30+
* @author Cengis Kocaurlu
2931
*
3032
* @since 4.3.8
3133
*/
3234
public class ChainFileListFilterIntegrationTests {
3335

36+
private static final String PATTERN_ANY_TEXT_FILES = "*.txt";
37+
3438
private File[] noFiles = new File[0];
3539

36-
private File[] oneFile = new File[] { new MockOldFile("file.txt") };
40+
private File[] oneFile = new File[]{new MockOldFile("file.txt")};
3741

3842
@Test
3943
public void singleModifiedFilterNoFiles() throws IOException {
@@ -47,7 +51,7 @@ public void singleModifiedFilterNoFiles() throws IOException {
4751
@Test
4852
public void singlePatternFilter() throws IOException {
4953
try (ChainFileListFilter<File> chain = new ChainFileListFilter<>()) {
50-
chain.addFilter(new SimplePatternFileListFilter("*.txt"));
54+
chain.addFilter(new SimplePatternFileListFilter(PATTERN_ANY_TEXT_FILES));
5155
List<File> result = chain.filterFiles(oneFile);
5256
assertEquals(1, result.size());
5357
}
@@ -65,7 +69,7 @@ public void singleModifiedFilter() throws IOException {
6569
@Test
6670
public void patternThenModifiedFilters() throws IOException {
6771
try (ChainFileListFilter<File> chain = new ChainFileListFilter<>()) {
68-
chain.addFilter(new SimplePatternFileListFilter("*.txt"));
72+
chain.addFilter(new SimplePatternFileListFilter(PATTERN_ANY_TEXT_FILES));
6973
chain.addFilter(new LastModifiedFileListFilter());
7074
List<File> result = chain.filterFiles(oneFile);
7175
assertEquals(1, result.size());
@@ -76,7 +80,16 @@ public void patternThenModifiedFilters() throws IOException {
7680
public void modifiedThenPatternFilters() throws IOException {
7781
try (ChainFileListFilter<File> chain = new ChainFileListFilter<>()) {
7882
chain.addFilter(new LastModifiedFileListFilter());
79-
chain.addFilter(new SimplePatternFileListFilter("*.txt"));
83+
chain.addFilter(new SimplePatternFileListFilter(PATTERN_ANY_TEXT_FILES));
84+
List<File> result = chain.filterFiles(oneFile);
85+
assertEquals(1, result.size());
86+
}
87+
}
88+
89+
//https://github.com/spring-projects/spring-integration/issues/2569
90+
@Test
91+
public void initializeFilterByConstructor() throws IOException {
92+
try (ChainFileListFilter<File> chain = new ChainFileListFilter<>(Arrays.asList(new SimplePatternFileListFilter(PATTERN_ANY_TEXT_FILES)))) {
8093
List<File> result = chain.filterFiles(oneFile);
8194
assertEquals(1, result.size());
8295
}

0 commit comments

Comments
 (0)