diff --git a/spring-integration-file/src/main/java/org/springframework/integration/file/DefaultDirectoryScanner.java b/spring-integration-file/src/main/java/org/springframework/integration/file/DefaultDirectoryScanner.java index 5cac889aba..ddb0a0e11c 100644 --- a/spring-integration-file/src/main/java/org/springframework/integration/file/DefaultDirectoryScanner.java +++ b/spring-integration-file/src/main/java/org/springframework/integration/file/DefaultDirectoryScanner.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2015 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,27 +17,30 @@ package org.springframework.integration.file; import java.io.File; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.springframework.messaging.MessagingException; 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.IgnoreHiddenFileListFilter; /** * Default directory scanner and base class for other directory scanners. * Manages the default interrelations between filtering, scanning and locking. * * @author Iwein Fuld + * @author Gunnar Hillert * @since 2.0 */ public class DefaultDirectoryScanner implements DirectoryScanner { - private volatile FileListFilter filter = new AcceptOnceFileListFilter(); + private volatile FileListFilter filter; private volatile FileLocker locker; - public void setFilter(FileListFilter filter) { this.filter = filter; } @@ -49,6 +52,20 @@ public class DefaultDirectoryScanner implements DirectoryScanner { this.locker = locker; } + /** + * Initializes {@link DefaultDirectoryScanner#filter} with a default list of + * {@link FileListFilter}s using a {@link CompositeFileListFilter}: + *
    + *
  • {@link IgnoreHiddenFileListFilter}
  • + *
  • {@link AcceptOnceFileListFilter}
  • + *
+ */ + public DefaultDirectoryScanner() { + final List> defaultFilters = new ArrayList>(2); + defaultFilters.add(new IgnoreHiddenFileListFilter()); + defaultFilters.add(new AcceptOnceFileListFilter()); + this.filter = new CompositeFileListFilter(defaultFilters); + } /** * {@inheritDoc} diff --git a/spring-integration-file/src/main/java/org/springframework/integration/file/config/FileInboundChannelAdapterParser.java b/spring-integration-file/src/main/java/org/springframework/integration/file/config/FileInboundChannelAdapterParser.java index 404a58dfa8..5897d08c0a 100644 --- a/spring-integration-file/src/main/java/org/springframework/integration/file/config/FileInboundChannelAdapterParser.java +++ b/spring-integration-file/src/main/java/org/springframework/integration/file/config/FileInboundChannelAdapterParser.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2015 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -35,6 +35,7 @@ import org.springframework.util.xml.DomUtils; * @author Iwein Fuld * @author Mark Fisher * @author Gary Russell + * @author Gunnar Hillert */ public class FileInboundChannelAdapterParser extends AbstractPollingInboundChannelAdapterParser { @@ -97,6 +98,7 @@ public class FileInboundChannelAdapterParser extends AbstractPollingInboundChann factoryBeanBuilder.addPropertyValue("filenameRegex", filenameRegex); } IntegrationNamespaceUtils.setValueIfAttributeDefined(factoryBeanBuilder, element, "prevent-duplicates"); + IntegrationNamespaceUtils.setValueIfAttributeDefined(factoryBeanBuilder, element, "ignore-hidden"); return BeanDefinitionReaderUtils.registerWithGeneratedName( factoryBeanBuilder.getBeanDefinition(), parserContext.getRegistry()); } diff --git a/spring-integration-file/src/main/java/org/springframework/integration/file/config/FileListFilterFactoryBean.java b/spring-integration-file/src/main/java/org/springframework/integration/file/config/FileListFilterFactoryBean.java index e113038232..65587acd28 100644 --- a/spring-integration-file/src/main/java/org/springframework/integration/file/config/FileListFilterFactoryBean.java +++ b/spring-integration-file/src/main/java/org/springframework/integration/file/config/FileListFilterFactoryBean.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2010 the original author or authors. + * Copyright 2002-2015 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,10 +21,17 @@ import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.FactoryBean; -import org.springframework.integration.file.filters.*; +import org.springframework.integration.file.filters.AcceptAllFileListFilter; +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.IgnoreHiddenFileListFilter; +import org.springframework.integration.file.filters.RegexPatternFileListFilter; +import org.springframework.integration.file.filters.SimplePatternFileListFilter; /** * @author Mark Fisher + * @author Gunnar Hillert * @since 1.0.3 */ public class FileListFilterFactoryBean implements FactoryBean> { @@ -37,11 +44,12 @@ public class FileListFilterFactoryBean implements FactoryBean filter) { this.filter = filter; } @@ -54,6 +62,16 @@ public class FileListFilterFactoryBean implements FactoryBean