initial commit of my work to make building filesystem based adapters more consistent, cleaner.
This commit is contained in:
@@ -26,13 +26,15 @@ import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.springframework.integration.file.filters.CompositeFileListFilter;
|
||||
import org.springframework.integration.file.filters.FileListFilter;
|
||||
|
||||
/**
|
||||
* @author Iwein Fuld
|
||||
*/
|
||||
public class CompositeFileListFilterTests {
|
||||
|
||||
private FileListFilter fileFilterMock1 = mock(FileListFilter.class);
|
||||
private FileListFilter fileFilterMock1 = mock( FileListFilter.class);
|
||||
|
||||
private FileListFilter fileFilterMock2 = mock(FileListFilter.class);
|
||||
|
||||
@@ -51,7 +53,8 @@ public class CompositeFileListFilterTests {
|
||||
|
||||
@Test
|
||||
public void forwardedToAddedFilters() throws Exception {
|
||||
CompositeFileListFilter compositeFileFilter = new CompositeFileListFilter().addFilter(fileFilterMock1, fileFilterMock2);
|
||||
CompositeFileListFilter compositeFileFilter = new CompositeFileListFilter();
|
||||
compositeFileFilter.addFilter(fileFilterMock1, fileFilterMock2);
|
||||
List<File> returnedFiles = Arrays.asList(new File[] { fileMock });
|
||||
when(fileFilterMock1.filterFiles(isA(File[].class))).thenReturn(returnedFiles);
|
||||
when(fileFilterMock2.filterFiles(isA(File[].class))).thenReturn(returnedFiles);
|
||||
|
||||
@@ -1,28 +1,49 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:p="http://www.springframework.org/schema/p"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
||||
http://www.springframework.org/schema/beans/spring-beans.xsd">
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:p="http://www.springframework.org/schema/p" xmlns:util="http://www.springframework.org/schema/util"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
||||
http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd">
|
||||
|
||||
<!-- under test -->
|
||||
<bean id="pollableFileSource" class="org.springframework.integration.file.FileReadingMessageSource"
|
||||
p:directory="file:${java.io.tmpdir}/FileReadingMessageSourceIntegrationTests"
|
||||
p:filter-ref="compositeFilter"/>
|
||||
<!-- under test -->
|
||||
<bean id="pollableFileSource" class="org.springframework.integration.file.FileReadingMessageSource"
|
||||
p:directory="file:${java.io.tmpdir}/FileReadingMessageSourceIntegrationTests"
|
||||
p:filter-ref="compositeFilter"/>
|
||||
|
||||
<!-- customized filter -->
|
||||
<bean id="compositeFilter" class="org.springframework.integration.file.CompositeFileListFilter">
|
||||
<constructor-arg>
|
||||
<list>
|
||||
<bean class="org.springframework.integration.file.AcceptOnceFileListFilter" />
|
||||
<bean class="org.springframework.integration.file.TestFileListFilter" />
|
||||
<bean class="org.springframework.integration.file.PatternMatchingFileListFilter">
|
||||
<constructor-arg value="^test.*$"/>
|
||||
</bean>
|
||||
</list>
|
||||
</constructor-arg>
|
||||
</bean>
|
||||
<bean class="org.springframework.integration.file.entries.FileEntryNamer" id="entryNamer"/>
|
||||
|
||||
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" />
|
||||
<!-- customized filter -->
|
||||
<!--
|
||||
<bean id="compositeFilter" class="org.springframework.integration.file.entries.CompositeEntryListFilter">
|
||||
<constructor-arg>
|
||||
<list>
|
||||
<bean class="org.springframework.integration.file.entries.AcceptOnceEntryFileListFilter"/>
|
||||
<bean class="org.springframework.integration.file.TestFileListFilter"/>
|
||||
<bean class="org.springframework.integration.file.entries.PatternMatchingEntryListFilter">
|
||||
<constructor-arg ref="entryNamer"/>
|
||||
<constructor-arg value="^test.*$"/>
|
||||
</bean>
|
||||
</list>
|
||||
</constructor-arg>
|
||||
</bean>
|
||||
-->
|
||||
|
||||
</beans>
|
||||
|
||||
<bean class="org.springframework.integration.file.config.FileListFilterFactoryBean" id="compositeFilter">
|
||||
<property name="filterReferences">
|
||||
|
||||
<util:list>
|
||||
|
||||
<bean class="org.springframework.integration.file.config.FileListFilterFactoryBean" p:preventDuplicates="true"/>
|
||||
<bean class="org.springframework.integration.file.config.FileListFilterFactoryBean" p:preventDuplicates="false"/>
|
||||
<bean class="org.springframework.integration.file.config.FileListFilterFactoryBean" p:filenamePattern="^test.*$"/>
|
||||
|
||||
</util:list>
|
||||
|
||||
</property>
|
||||
|
||||
</bean>
|
||||
|
||||
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
|
||||
|
||||
</beans>
|
||||
|
||||
@@ -80,7 +80,8 @@ public class FileReadingMessageSourceIntegrationTests {
|
||||
@Test
|
||||
public void getFiles() throws Exception {
|
||||
Message<File> received1 = pollableFileSource.receive();
|
||||
assertNotNull("This should return the first message", received1);
|
||||
System.out.println( "getfiels() round 1");
|
||||
assertNotNull("This should return the first message", received1);
|
||||
pollableFileSource.onSend(received1);
|
||||
Message<File> received2 = pollableFileSource.receive();
|
||||
assertNotNull(received2);
|
||||
@@ -154,12 +155,13 @@ public class FileReadingMessageSourceIntegrationTests {
|
||||
/**
|
||||
* Convenience method to run part of a test concurrently in multiple threads
|
||||
*
|
||||
* @param numberOfThreads
|
||||
* @param todo the runnable that should be run by all the threads
|
||||
* @param numberOfThreads how many threads to spawn
|
||||
* @param runnable the runnable that should be run by all the threads
|
||||
* @param start the {@link java.util.concurrent.CountDownLatch} instance telling it when to assume everything works
|
||||
* @return a latch that will be counted down once all threads have run their
|
||||
* runnable.
|
||||
*/
|
||||
private CountDownLatch doConcurrently(int numberOfThreads, final Runnable todo, final CountDownLatch start) {
|
||||
private CountDownLatch doConcurrently(int numberOfThreads, final Runnable runnable, final CountDownLatch start) {
|
||||
final CountDownLatch started = new CountDownLatch(numberOfThreads);
|
||||
final CountDownLatch done = new CountDownLatch(numberOfThreads);
|
||||
for (int i = 0; i < numberOfThreads; i++) {
|
||||
@@ -174,7 +176,7 @@ public class FileReadingMessageSourceIntegrationTests {
|
||||
catch (InterruptedException e) {
|
||||
Thread.currentThread().interrupt();
|
||||
}
|
||||
todo.run();
|
||||
runnable.run();
|
||||
done.countDown();
|
||||
}
|
||||
}).start();
|
||||
|
||||
@@ -1,46 +1,48 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans xmlns:file="http://www.springframework.org/schema/integration/file"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:si="http://www.springframework.org/schema/integration"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:p="http://www.springframework.org/schema/p" xmlns:si="http://www.springframework.org/schema/integration" xmlns:util="http://www.springframework.org/schema/util"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
||||
http://www.springframework.org/schema/beans/spring-beans.xsd
|
||||
http://www.springframework.org/schema/integration
|
||||
http://www.springframework.org/schema/integration/spring-integration.xsd
|
||||
http://www.springframework.org/schema/integration/file
|
||||
http://www.springframework.org/schema/integration/file/spring-integration-file.xsd">
|
||||
http://www.springframework.org/schema/integration/file/spring-integration-file.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd">
|
||||
|
||||
<!-- under test -->
|
||||
<file:inbound-channel-adapter
|
||||
directory="#{inputDirectory.path}"
|
||||
channel="fileMessages" filter="compositeFilter"/>
|
||||
<!-- under test -->
|
||||
<file:inbound-channel-adapter
|
||||
directory="#{inputDirectory.path}"
|
||||
channel="fileMessages" filter="compositeFilter"/>
|
||||
|
||||
<bean id="temp" class="org.junit.rules.TemporaryFolder"
|
||||
init-method="create" destroy-method="delete"/>
|
||||
<bean id="temp" class="org.junit.rules.TemporaryFolder"
|
||||
init-method="create" destroy-method="delete"/>
|
||||
|
||||
<bean id="inputDirectory" class="java.io.File">
|
||||
<constructor-arg value="#{temp.newFolder('FileToChannelIntegrationTests').path}"/>
|
||||
</bean>
|
||||
<bean id="inputDirectory" class="java.io.File">
|
||||
<constructor-arg value="#{temp.newFolder('FileToChannelIntegrationTests').path}"/>
|
||||
</bean>
|
||||
|
||||
<si:channel id="fileMessages">
|
||||
<si:queue capacity="10" />
|
||||
</si:channel>
|
||||
<si:channel id="fileMessages">
|
||||
<si:queue capacity="10"/>
|
||||
</si:channel>
|
||||
|
||||
<!-- customized filter -->
|
||||
<bean id="compositeFilter"
|
||||
class="org.springframework.integration.file.CompositeFileListFilter">
|
||||
<constructor-arg>
|
||||
<list>
|
||||
<bean class="org.springframework.integration.file.AcceptOnceFileListFilter"/>
|
||||
<bean class="org.springframework.integration.file.TestFileListFilter"/>
|
||||
<bean class="org.springframework.integration.file.PatternMatchingFileListFilter">
|
||||
<constructor-arg value="^test.*$"/>
|
||||
</bean>
|
||||
</list>
|
||||
</constructor-arg>
|
||||
</bean>
|
||||
|
||||
<si:poller default="true" fixed-rate="10"/>
|
||||
<bean class="org.springframework.integration.file.config.FileListFilterFactoryBean" id="compositeFilter">
|
||||
<property name="filterReferences">
|
||||
|
||||
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
|
||||
<util:list>
|
||||
|
||||
</beans>
|
||||
<bean class="org.springframework.integration.file.config.FileListFilterFactoryBean" p:preventDuplicates="true"/>
|
||||
<bean class="org.springframework.integration.file.config.FileListFilterFactoryBean" p:preventDuplicates="false"/>
|
||||
<bean class="org.springframework.integration.file.config.FileListFilterFactoryBean" p:filenamePattern="^test.*$"/>
|
||||
|
||||
</util:list>
|
||||
|
||||
</property>
|
||||
|
||||
</bean>
|
||||
|
||||
<si:poller default="true" fixed-rate="10"/>
|
||||
|
||||
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
|
||||
|
||||
</beans>
|
||||
|
||||
@@ -27,6 +27,8 @@ import org.junit.Test;
|
||||
|
||||
import org.springframework.beans.factory.BeanCreationException;
|
||||
import org.springframework.context.support.ClassPathXmlApplicationContext;
|
||||
import org.springframework.integration.file.filters.FileListFilter;
|
||||
import org.springframework.integration.file.filters.PatternMatchingFileListFilter;
|
||||
|
||||
/**
|
||||
* @author Mark Fisher
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
package org.springframework.integration.file;
|
||||
|
||||
import org.springframework.integration.file.entries.EntryListFilter;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
@@ -23,10 +25,8 @@ import java.util.List;
|
||||
/**
|
||||
* @author Iwein Fuld
|
||||
*/
|
||||
public class TestFileListFilter implements FileListFilter {
|
||||
|
||||
public List<File> filterFiles(File[] files) {
|
||||
return Arrays.asList(files);
|
||||
}
|
||||
|
||||
public class TestFileListFilter implements EntryListFilter<File> {
|
||||
public List<File> filterEntries(File[] entries) {
|
||||
return Arrays.asList(entries);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,15 +20,19 @@
|
||||
</integration:poller>
|
||||
</inbound-channel-adapter>
|
||||
|
||||
<beans:bean id="filter" class="org.springframework.integration.file.CompositeFileListFilter">
|
||||
<beans:bean id="filter" class="org.springframework.integration.file.config.FileListFilterFactoryBean">
|
||||
|
||||
</beans:bean>
|
||||
<!--
|
||||
<beans:bean id="filter" class="org.springframework.integration.file.filters.CompositeFileListFilter">
|
||||
<beans:constructor-arg>
|
||||
<beans:list></beans:list>
|
||||
</beans:constructor-arg>
|
||||
</beans:bean>
|
||||
</beans:bean>-->
|
||||
|
||||
<beans:bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
|
||||
|
||||
<beans:bean id="testComparator"
|
||||
class="org.springframework.integration.file.config.FileInboundChannelAdapterParserTests$TestComparator"/>
|
||||
|
||||
</beans:beans>
|
||||
</beans:beans>
|
||||
|
||||
@@ -32,7 +32,9 @@ import org.springframework.beans.DirectFieldAccessor;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.integration.channel.AbstractMessageChannel;
|
||||
import org.springframework.integration.file.CompositeFileListFilter;
|
||||
import org.springframework.integration.file.entries.AcceptOnceEntryFileListFilter;
|
||||
import org.springframework.integration.file.entries.CompositeEntryListFilter;
|
||||
import org.springframework.integration.file.filters.CompositeFileListFilter;
|
||||
import org.springframework.integration.file.DefaultDirectoryScanner;
|
||||
import org.springframework.integration.file.FileReadingMessageSource;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
@@ -77,8 +79,9 @@ public class FileInboundChannelAdapterParserTests {
|
||||
public void filter() throws Exception {
|
||||
DefaultDirectoryScanner scanner = (DefaultDirectoryScanner) accessor.getPropertyValue("scanner");
|
||||
DirectFieldAccessor scannerAccessor = new DirectFieldAccessor(scanner);
|
||||
assertTrue("'filter' should be set",
|
||||
scannerAccessor.getPropertyValue("filter") instanceof CompositeFileListFilter);
|
||||
Object filter = scannerAccessor.getPropertyValue("filter");
|
||||
assertTrue("'filter' should be set",
|
||||
filter instanceof AcceptOnceEntryFileListFilter);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -34,11 +34,15 @@ import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.integration.channel.AbstractMessageChannel;
|
||||
import org.springframework.integration.endpoint.AbstractEndpoint;
|
||||
import org.springframework.integration.file.AcceptOnceFileListFilter;
|
||||
import org.springframework.integration.file.CompositeFileListFilter;
|
||||
import org.springframework.integration.file.FileListFilter;
|
||||
import org.springframework.integration.file.entries.AcceptOnceEntryFileListFilter;
|
||||
import org.springframework.integration.file.entries.CompositeEntryListFilter;
|
||||
import org.springframework.integration.file.entries.EntryListFilter;
|
||||
import org.springframework.integration.file.entries.PatternMatchingEntryListFilter;
|
||||
import org.springframework.integration.file.filters.AcceptOnceFileListFilter;
|
||||
import org.springframework.integration.file.filters.*;
|
||||
import org.springframework.integration.file.FileReadingMessageSource;
|
||||
import org.springframework.integration.file.PatternMatchingFileListFilter;
|
||||
import org.springframework.integration.file.filters.PatternMatchingFileListFilter;
|
||||
import org.springframework.integration.file.filters.FileListFilter;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
|
||||
@@ -88,7 +92,7 @@ public class FileInboundChannelAdapterWithPatternParserTests {
|
||||
@Test
|
||||
public void compositeFilterType() {
|
||||
DirectFieldAccessor scannerAccessor = new DirectFieldAccessor(accessor.getPropertyValue("scanner"));
|
||||
assertTrue(scannerAccessor.getPropertyValue("filter") instanceof CompositeFileListFilter);
|
||||
assertTrue(scannerAccessor.getPropertyValue("filter") instanceof CompositeEntryListFilter);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -106,11 +110,11 @@ public class FileInboundChannelAdapterWithPatternParserTests {
|
||||
public void acceptOnceFilter() {
|
||||
DirectFieldAccessor scannerAccessor = new DirectFieldAccessor(accessor.getPropertyValue("scanner"));
|
||||
|
||||
Set<FileListFilter> filters = (Set<FileListFilter>) new DirectFieldAccessor(
|
||||
Set<EntryListFilter<File>> filters = (Set<EntryListFilter<File>>) new DirectFieldAccessor(
|
||||
scannerAccessor.getPropertyValue("filter")).getPropertyValue("fileFilters");
|
||||
boolean hasAcceptOnceFilter = false;
|
||||
for (FileListFilter filter : filters) {
|
||||
if (filter instanceof AcceptOnceFileListFilter) {
|
||||
for (EntryListFilter<File> filter : filters) {
|
||||
if (filter instanceof AcceptOnceEntryFileListFilter) {
|
||||
hasAcceptOnceFilter = true;
|
||||
}
|
||||
}
|
||||
@@ -122,11 +126,11 @@ public class FileInboundChannelAdapterWithPatternParserTests {
|
||||
public void patternFilter() {
|
||||
DirectFieldAccessor scannerAccessor = new DirectFieldAccessor(accessor.getPropertyValue("scanner"));
|
||||
|
||||
Set<FileListFilter> filters = (Set<FileListFilter>) new DirectFieldAccessor(
|
||||
Set<EntryListFilter> filters = (Set<EntryListFilter>) new DirectFieldAccessor(
|
||||
scannerAccessor.getPropertyValue("filter")).getPropertyValue("fileFilters");
|
||||
Pattern pattern = null;
|
||||
for (FileListFilter filter : filters) {
|
||||
if (filter instanceof PatternMatchingFileListFilter) {
|
||||
for (EntryListFilter filter : filters) {
|
||||
if (filter instanceof PatternMatchingEntryListFilter) {
|
||||
pattern = (Pattern) new DirectFieldAccessor(filter).getPropertyValue("pattern");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,6 +23,14 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.integration.file.*;
|
||||
import org.springframework.integration.file.entries.AcceptOnceEntryFileListFilter;
|
||||
import org.springframework.integration.file.entries.CompositeEntryListFilter;
|
||||
import org.springframework.integration.file.entries.EntryListFilter;
|
||||
import org.springframework.integration.file.entries.PatternMatchingEntryListFilter;
|
||||
import org.springframework.integration.file.filters.AcceptOnceFileListFilter;
|
||||
import org.springframework.integration.file.filters.CompositeFileListFilter;
|
||||
import org.springframework.integration.file.filters.FileListFilter;
|
||||
import org.springframework.integration.file.filters.PatternMatchingFileListFilter;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
|
||||
@@ -50,95 +58,95 @@ public class FileInboundChannelAdapterWithPreventDuplicatesFlagTests {
|
||||
|
||||
@Test
|
||||
public void filterAndNull() {
|
||||
FileListFilter filter = this.extractFilter("filterAndNull");
|
||||
assertFalse(filter instanceof CompositeFileListFilter);
|
||||
EntryListFilter filter = this.extractFilter("filterAndNull");
|
||||
assertFalse(filter instanceof CompositeEntryListFilter);
|
||||
assertSame(testFilter, filter);
|
||||
}
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("unchecked")
|
||||
public void filterAndTrue() {
|
||||
FileListFilter filter = this.extractFilter("filterAndTrue");
|
||||
assertTrue(filter instanceof CompositeFileListFilter);
|
||||
EntryListFilter filter = this.extractFilter("filterAndTrue");
|
||||
assertTrue(filter instanceof CompositeEntryListFilter);
|
||||
Collection filters = (Collection) new DirectFieldAccessor(filter).getPropertyValue("fileFilters");
|
||||
assertTrue(filters.iterator().next() instanceof AcceptOnceFileListFilter);
|
||||
assertTrue(filters.iterator().next() instanceof AcceptOnceEntryFileListFilter);
|
||||
assertTrue(filters.contains(testFilter));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void filterAndFalse() throws Exception {
|
||||
FileListFilter filter = this.extractFilter("filterAndFalse");
|
||||
assertFalse(filter instanceof CompositeFileListFilter);
|
||||
EntryListFilter filter = this.extractFilter("filterAndFalse");
|
||||
assertFalse(filter instanceof CompositeEntryListFilter);
|
||||
assertSame(testFilter, filter);
|
||||
}
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("unchecked")
|
||||
public void patternAndNull() throws Exception {
|
||||
FileListFilter filter = this.extractFilter("patternAndNull");
|
||||
assertTrue(filter instanceof CompositeFileListFilter);
|
||||
EntryListFilter filter = this.extractFilter("patternAndNull");
|
||||
assertTrue(filter instanceof CompositeEntryListFilter);
|
||||
Collection filters = (Collection) new DirectFieldAccessor(filter).getPropertyValue("fileFilters");
|
||||
Iterator<FileListFilter> iterator = filters.iterator();
|
||||
assertTrue(iterator.next() instanceof AcceptOnceFileListFilter);
|
||||
assertTrue(iterator.next() instanceof PatternMatchingFileListFilter);
|
||||
assertTrue(iterator.next() instanceof AcceptOnceEntryFileListFilter);
|
||||
assertTrue(iterator.next() instanceof PatternMatchingEntryListFilter);
|
||||
}
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("unchecked")
|
||||
public void patternAndTrue() throws Exception {
|
||||
FileListFilter filter = this.extractFilter("patternAndTrue");
|
||||
assertTrue(filter instanceof CompositeFileListFilter);
|
||||
EntryListFilter filter = this.extractFilter("patternAndTrue");
|
||||
assertTrue(filter instanceof CompositeEntryListFilter);
|
||||
Collection filters = (Collection) new DirectFieldAccessor(filter).getPropertyValue("fileFilters");
|
||||
Iterator<FileListFilter> iterator = filters.iterator();
|
||||
assertTrue(iterator.next() instanceof AcceptOnceFileListFilter);
|
||||
assertTrue(iterator.next() instanceof PatternMatchingFileListFilter);
|
||||
assertTrue(iterator.next() instanceof AcceptOnceEntryFileListFilter);
|
||||
assertTrue(iterator.next() instanceof PatternMatchingEntryListFilter);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void patternAndFalse() throws Exception {
|
||||
FileListFilter filter = this.extractFilter("patternAndFalse");
|
||||
assertFalse(filter instanceof CompositeFileListFilter);
|
||||
assertTrue(filter instanceof PatternMatchingFileListFilter);
|
||||
EntryListFilter <File> filter = this.extractFilter("patternAndFalse");
|
||||
assertFalse(filter instanceof CompositeEntryListFilter);
|
||||
assertTrue(filter instanceof PatternMatchingEntryListFilter);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void defaultAndNull() throws Exception {
|
||||
FileListFilter filter = this.extractFilter("defaultAndNull");
|
||||
EntryListFilter <File>filter = this.extractFilter("defaultAndNull");
|
||||
assertNotNull(filter);
|
||||
assertFalse(filter instanceof CompositeFileListFilter);
|
||||
assertTrue(filter instanceof AcceptOnceFileListFilter);
|
||||
assertFalse(filter instanceof CompositeEntryListFilter);
|
||||
assertTrue(filter instanceof AcceptOnceEntryFileListFilter);
|
||||
File testFile = new File("test");
|
||||
File[] files = new File[]{testFile, testFile, testFile};
|
||||
List<File> result = filter.filterFiles(files);
|
||||
assertEquals(1, result.size());
|
||||
List<File> result = filter.filterEntries(files);
|
||||
assertEquals(1 , result.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void defaultAndTrue() throws Exception {
|
||||
FileListFilter filter = this.extractFilter("defaultAndTrue");
|
||||
assertFalse(filter instanceof CompositeFileListFilter);
|
||||
assertTrue(filter instanceof AcceptOnceFileListFilter);
|
||||
EntryListFilter filter = this.extractFilter("defaultAndTrue");
|
||||
assertFalse(filter instanceof CompositeEntryListFilter);
|
||||
assertTrue(filter instanceof AcceptOnceEntryFileListFilter);
|
||||
File testFile = new File("test");
|
||||
File[] files = new File[]{testFile, testFile, testFile};
|
||||
List<File> result = filter.filterFiles(files);
|
||||
List<File> result = filter.filterEntries(files);
|
||||
assertEquals(1, result.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void defaultAndFalse() throws Exception {
|
||||
FileListFilter filter = this.extractFilter("defaultAndFalse");
|
||||
EntryListFilter filter = this.extractFilter("defaultAndFalse");
|
||||
assertNotNull(filter);
|
||||
assertFalse(filter instanceof CompositeFileListFilter);
|
||||
assertFalse(filter instanceof AcceptOnceFileListFilter);
|
||||
assertFalse(filter instanceof CompositeEntryListFilter);
|
||||
assertFalse(filter instanceof AcceptOnceEntryFileListFilter);
|
||||
File testFile = new File("test");
|
||||
File[] files = new File[]{testFile, testFile, testFile};
|
||||
List<File> result = filter.filterFiles(files);
|
||||
List<File> result = filter.filterEntries(files);
|
||||
assertEquals(3, result.size());
|
||||
}
|
||||
|
||||
|
||||
private FileListFilter extractFilter(String beanName) {
|
||||
return (FileListFilter) new DirectFieldAccessor(
|
||||
private EntryListFilter<File> extractFilter(String beanName) {
|
||||
return (EntryListFilter<File>) new DirectFieldAccessor(
|
||||
new DirectFieldAccessor(
|
||||
new DirectFieldAccessor(context.getBean(beanName))
|
||||
.getPropertyValue("source"))
|
||||
|
||||
@@ -35,8 +35,9 @@
|
||||
<integration:interval-trigger interval="5000"/>
|
||||
</integration:poller>
|
||||
</inbound-channel-adapter>
|
||||
<beans:bean class="org.springframework.integration.file.config.FileListFilterFactoryBean" />
|
||||
|
||||
<beans:bean id="filter" class="org.springframework.integration.file.CompositeFileListFilter">
|
||||
<beans:bean id="filter" class="org.springframework.integration.file.entries.CompositeEntryListFilter">
|
||||
<beans:constructor-arg>
|
||||
<beans:list></beans:list>
|
||||
</beans:constructor-arg>
|
||||
@@ -47,4 +48,4 @@
|
||||
<beans:bean id="testComparator"
|
||||
class="org.springframework.integration.file.config.FileInboundChannelAdapterParserTests$TestComparator"/>
|
||||
|
||||
</beans:beans>
|
||||
</beans:beans>
|
||||
|
||||
@@ -18,7 +18,8 @@ package org.springframework.integration.file.config;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.DirectFieldAccessor;
|
||||
import org.springframework.integration.file.*;
|
||||
import org.springframework.integration.file.entries.*;
|
||||
import org.springframework.integration.file.filters.*;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Collection;
|
||||
@@ -45,7 +46,7 @@ public class FileListFilterFactoryBeanTests {
|
||||
FileListFilterFactoryBean factory = new FileListFilterFactoryBean();
|
||||
TestFilter testFilter = new TestFilter();
|
||||
factory.setFilterReference(testFilter);
|
||||
FileListFilter result = factory.getObject();
|
||||
EntryListFilter<File> result = factory.getObject();
|
||||
assertFalse(result instanceof CompositeFileListFilter);
|
||||
assertSame(testFilter, result);
|
||||
}
|
||||
@@ -57,10 +58,10 @@ public class FileListFilterFactoryBeanTests {
|
||||
TestFilter testFilter = new TestFilter();
|
||||
factory.setFilterReference(testFilter);
|
||||
factory.setPreventDuplicates(Boolean.TRUE);
|
||||
FileListFilter result = factory.getObject();
|
||||
assertTrue(result instanceof CompositeFileListFilter);
|
||||
EntryListFilter<File> result = factory.getObject();
|
||||
assertTrue(result instanceof CompositeEntryListFilter);
|
||||
Collection filters = (Collection) new DirectFieldAccessor(result).getPropertyValue("fileFilters");
|
||||
assertTrue(filters.iterator().next() instanceof AcceptOnceFileListFilter);
|
||||
assertTrue(filters.iterator().next() instanceof AcceptOnceEntryFileListFilter);
|
||||
assertTrue(filters.contains(testFilter));
|
||||
}
|
||||
|
||||
@@ -70,8 +71,8 @@ public class FileListFilterFactoryBeanTests {
|
||||
TestFilter testFilter = new TestFilter();
|
||||
factory.setFilterReference(testFilter);
|
||||
factory.setPreventDuplicates(Boolean.FALSE);
|
||||
FileListFilter result = factory.getObject();
|
||||
assertFalse(result instanceof CompositeFileListFilter);
|
||||
EntryListFilter<File> result = factory.getObject();
|
||||
assertFalse(result instanceof CompositeEntryListFilter);
|
||||
assertSame(testFilter, result);
|
||||
}
|
||||
|
||||
@@ -80,12 +81,12 @@ public class FileListFilterFactoryBeanTests {
|
||||
public void filenamePatternAndPreventDuplicatesNull() throws Exception {
|
||||
FileListFilterFactoryBean factory = new FileListFilterFactoryBean();
|
||||
factory.setFilenamePattern(Pattern.compile("foo"));
|
||||
FileListFilter result = factory.getObject();
|
||||
assertTrue(result instanceof CompositeFileListFilter);
|
||||
EntryListFilter<File> result = factory.getObject();
|
||||
assertTrue(result instanceof CompositeEntryListFilter);
|
||||
Collection filters = (Collection) new DirectFieldAccessor(result).getPropertyValue("fileFilters");
|
||||
Iterator<FileListFilter> iterator = filters.iterator();
|
||||
assertTrue(iterator.next() instanceof AcceptOnceFileListFilter);
|
||||
assertTrue(iterator.next() instanceof PatternMatchingFileListFilter);
|
||||
Iterator<EntryListFilter> iterator = filters.iterator();
|
||||
assertTrue(iterator.next() instanceof AcceptOnceEntryFileListFilter);
|
||||
assertTrue(iterator.next() instanceof PatternMatchingEntryListFilter);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -94,12 +95,12 @@ public class FileListFilterFactoryBeanTests {
|
||||
FileListFilterFactoryBean factory = new FileListFilterFactoryBean();
|
||||
factory.setFilenamePattern(Pattern.compile("foo"));
|
||||
factory.setPreventDuplicates(Boolean.TRUE);
|
||||
FileListFilter result = factory.getObject();
|
||||
assertTrue(result instanceof CompositeFileListFilter);
|
||||
EntryListFilter<File> result = factory.getObject();
|
||||
assertTrue(result instanceof CompositeEntryListFilter);
|
||||
Collection filters = (Collection) new DirectFieldAccessor(result).getPropertyValue("fileFilters");
|
||||
Iterator<FileListFilter> iterator = filters.iterator();
|
||||
assertTrue(iterator.next() instanceof AcceptOnceFileListFilter);
|
||||
assertTrue(iterator.next() instanceof PatternMatchingFileListFilter);
|
||||
Iterator<EntryListFilter> iterator = filters.iterator();
|
||||
assertTrue(iterator.next() instanceof AcceptOnceEntryFileListFilter);
|
||||
assertTrue(iterator.next() instanceof PatternMatchingEntryListFilter);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -107,18 +108,18 @@ public class FileListFilterFactoryBeanTests {
|
||||
FileListFilterFactoryBean factory = new FileListFilterFactoryBean();
|
||||
factory.setFilenamePattern(Pattern.compile("foo"));
|
||||
factory.setPreventDuplicates(Boolean.FALSE);
|
||||
FileListFilter result = factory.getObject();
|
||||
assertFalse(result instanceof CompositeFileListFilter);
|
||||
assertTrue(result instanceof PatternMatchingFileListFilter);
|
||||
EntryListFilter<File> result = factory.getObject();
|
||||
assertFalse(result instanceof CompositeEntryListFilter);;
|
||||
// CompositeEntryListFilter
|
||||
assertTrue(result instanceof PatternMatchingEntryListFilter ) ;
|
||||
}
|
||||
|
||||
|
||||
private static class TestFilter extends AbstractFileListFilter {
|
||||
|
||||
@Override
|
||||
protected boolean accept(File file) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
private static class TestFilter extends AbstractEntryListFilter<File> {
|
||||
@Override
|
||||
public boolean accept(File file) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
||||
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
|
||||
|
||||
<bean id="filter" class="org.springframework.integration.file.PatternMatchingFileListFilter">
|
||||
<bean id="filter" class="org.springframework.integration.file.filters.PatternMatchingFileListFilter">
|
||||
<constructor-arg value="[fo+\.[tx]{3}"/>
|
||||
</bean>
|
||||
|
||||
|
||||
@@ -22,7 +22,8 @@ import org.springframework.beans.DirectFieldAccessor;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.integration.endpoint.SourcePollingChannelAdapter;
|
||||
import org.springframework.integration.file.CompositeFileListFilter;
|
||||
import org.springframework.integration.file.entries.CompositeEntryListFilter;
|
||||
import org.springframework.integration.file.filters.CompositeFileListFilter;
|
||||
import org.springframework.integration.file.FileReadingMessageSource;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
@@ -64,7 +65,7 @@ public class FileLockingNamespaceTests {
|
||||
@Test
|
||||
public void shouldSetCustomLockerProperly() {
|
||||
assertThat(extractFromScanner("locker", customLockingSource), is(StubLocker.class));
|
||||
assertThat(extractFromScanner("filter", customLockingSource), is(CompositeFileListFilter.class));
|
||||
assertThat(extractFromScanner("filter", customLockingSource), is(CompositeEntryListFilter.class));
|
||||
}
|
||||
|
||||
private Object extractFromScanner(String propertyName, FileReadingMessageSource source) {
|
||||
@@ -74,7 +75,7 @@ public class FileLockingNamespaceTests {
|
||||
@Test
|
||||
public void shouldSetNioLockerProperly() {
|
||||
assertThat(extractFromScanner("locker", nioLockingSource), is(NioFileLocker.class));
|
||||
assertThat(extractFromScanner("filter", nioLockingSource), is(CompositeFileListFilter.class));
|
||||
assertThat(extractFromScanner("filter", nioLockingSource), is(CompositeEntryListFilter.class));
|
||||
}
|
||||
|
||||
public static class StubLocker extends AbstractFileLockerFilter {
|
||||
|
||||
@@ -18,7 +18,7 @@ package org.springframework.integration.file.locking;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.TemporaryFolder;
|
||||
import org.springframework.integration.file.FileListFilter;
|
||||
import org.springframework.integration.file.entries.EntryListFilter;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
@@ -49,20 +49,20 @@ public class NioFileLockerTests {
|
||||
NioFileLocker filter = new NioFileLocker();
|
||||
File testFile = new File(workdir, "test0");
|
||||
testFile.createNewFile();
|
||||
assertThat(filter.filterFiles(workdir.listFiles()).get(0), is(testFile));
|
||||
assertThat(filter.filterEntries(workdir.listFiles()).get(0), is(testFile));
|
||||
filter.lock(testFile);
|
||||
assertThat(filter.filterFiles(workdir.listFiles()).get(0), is(testFile));
|
||||
assertThat(filter.filterEntries(workdir.listFiles()).get(0), is(testFile));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void fileNotListedWhenLockedByOtherFilter() throws IOException {
|
||||
NioFileLocker filter1 = new NioFileLocker();
|
||||
FileListFilter filter2 = new NioFileLocker();
|
||||
EntryListFilter<File> filter2 = new NioFileLocker();
|
||||
File testFile = new File(workdir, "test1");
|
||||
testFile.createNewFile();
|
||||
assertThat(filter1.filterFiles(workdir.listFiles()).get(0), is(testFile));
|
||||
assertThat(filter1.filterEntries(workdir.listFiles()).get(0), is(testFile));
|
||||
filter1.lock(testFile);
|
||||
assertThat(filter2.filterFiles(workdir.listFiles()), is((List<File>)new ArrayList<File>()));
|
||||
assertThat(filter2.filterEntries(workdir.listFiles()), is((List<File>)new ArrayList<File>()));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
||||
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
|
||||
|
||||
<bean id="filter" class="org.springframework.integration.file.PatternMatchingFileListFilter">
|
||||
<bean id="filter" class="org.springframework.integration.file.filters.PatternMatchingFileListFilter">
|
||||
<constructor-arg value="fo+\.[tx]{3}"/>
|
||||
</bean>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user