initial commit of my work to make building filesystem based adapters more consistent, cleaner.

This commit is contained in:
Josh Long
2010-08-20 10:06:13 +00:00
parent 59e4b98d39
commit 25b5afa528
151 changed files with 3351 additions and 1767 deletions

View File

@@ -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);

View File

@@ -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>

View File

@@ -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();

View File

@@ -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>

View File

@@ -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

View File

@@ -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);
}
}

View File

@@ -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>

View File

@@ -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

View File

@@ -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");
}
}

View File

@@ -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"))

View File

@@ -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>

View File

@@ -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;
}
}
}

View 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>

View File

@@ -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 {

View File

@@ -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>()));
}
}
}

View 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>