polishing
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2009 the original author or authors.
|
||||
* Copyright 2002-2010 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.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2009 the original author or authors.
|
||||
* Copyright 2002-2010 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.
|
||||
@@ -31,73 +31,72 @@ import org.springframework.util.xml.DomUtils;
|
||||
|
||||
/**
|
||||
* Parser for the <inbound-channel-adapter> element of the 'file' namespace.
|
||||
*
|
||||
*
|
||||
* @author Iwein Fuld
|
||||
* @author Mark Fisher
|
||||
*/
|
||||
public class FileInboundChannelAdapterParser extends AbstractPollingInboundChannelAdapterParser {
|
||||
|
||||
private static final String PACKAGE_NAME = "org.springframework.integration.file";
|
||||
private static final String PACKAGE_NAME = "org.springframework.integration.file";
|
||||
|
||||
|
||||
@Override
|
||||
protected BeanMetadataElement parseSource(Element element, ParserContext parserContext) {
|
||||
BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(
|
||||
PACKAGE_NAME + ".config.FileReadingMessageSourceFactoryBean");
|
||||
IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "comparator");
|
||||
IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "scanner");
|
||||
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "directory");
|
||||
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "auto-create-directory");
|
||||
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "queue-size");
|
||||
String filterBeanName = this.registerFilter(element, parserContext);
|
||||
String lockerBeanName = registerLocker(element, parserContext);
|
||||
if (lockerBeanName != null) {
|
||||
builder.addPropertyReference("locker", lockerBeanName);
|
||||
}
|
||||
builder.addPropertyReference("filter", filterBeanName);
|
||||
String beanName = BeanDefinitionReaderUtils.registerWithGeneratedName(builder.getBeanDefinition(), parserContext.getRegistry());
|
||||
return new RuntimeBeanReference(beanName);
|
||||
}
|
||||
@Override
|
||||
protected BeanMetadataElement parseSource(Element element, ParserContext parserContext) {
|
||||
BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(
|
||||
PACKAGE_NAME + ".config.FileReadingMessageSourceFactoryBean");
|
||||
IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "comparator");
|
||||
IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "scanner");
|
||||
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "directory");
|
||||
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "auto-create-directory");
|
||||
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "queue-size");
|
||||
String filterBeanName = this.registerFilter(element, parserContext);
|
||||
String lockerBeanName = registerLocker(element, parserContext);
|
||||
if (lockerBeanName != null) {
|
||||
builder.addPropertyReference("locker", lockerBeanName);
|
||||
}
|
||||
builder.addPropertyReference("filter", filterBeanName);
|
||||
String beanName = BeanDefinitionReaderUtils.registerWithGeneratedName(
|
||||
builder.getBeanDefinition(), parserContext.getRegistry());
|
||||
return new RuntimeBeanReference(beanName);
|
||||
}
|
||||
|
||||
private String registerLocker(Element element, ParserContext parserContext) {
|
||||
String lockerBeanName = null;
|
||||
Element nioLocker = DomUtils.getChildElementByTagName(element, "nio-locker");
|
||||
if (nioLocker != null) {
|
||||
BeanDefinitionBuilder builder = BeanDefinitionBuilder
|
||||
.genericBeanDefinition(PACKAGE_NAME + ".locking.NioFileLocker");
|
||||
lockerBeanName = BeanDefinitionReaderUtils.registerWithGeneratedName(builder.getBeanDefinition(),
|
||||
parserContext.getRegistry());
|
||||
} else {
|
||||
Element locker = DomUtils.getChildElementByTagName(element, "locker");
|
||||
if (locker != null) {
|
||||
lockerBeanName = locker.getAttribute("ref");
|
||||
}
|
||||
}
|
||||
return lockerBeanName;
|
||||
}
|
||||
private String registerLocker(Element element, ParserContext parserContext) {
|
||||
String lockerBeanName = null;
|
||||
Element nioLocker = DomUtils.getChildElementByTagName(element, "nio-locker");
|
||||
if (nioLocker != null) {
|
||||
BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(
|
||||
PACKAGE_NAME + ".locking.NioFileLocker");
|
||||
lockerBeanName = BeanDefinitionReaderUtils.registerWithGeneratedName(
|
||||
builder.getBeanDefinition(), parserContext.getRegistry());
|
||||
}
|
||||
else {
|
||||
Element locker = DomUtils.getChildElementByTagName(element, "locker");
|
||||
if (locker != null) {
|
||||
lockerBeanName = locker.getAttribute("ref");
|
||||
}
|
||||
}
|
||||
return lockerBeanName;
|
||||
}
|
||||
|
||||
private String registerFilter(Element element, ParserContext parserContext) {
|
||||
BeanDefinitionBuilder factoryBeanBuilder = BeanDefinitionBuilder.genericBeanDefinition(
|
||||
PACKAGE_NAME + ".config.FileListFilterFactoryBean");
|
||||
factoryBeanBuilder.setRole(BeanDefinition.ROLE_SUPPORT);
|
||||
String filter = element.getAttribute("filter");
|
||||
if (StringUtils.hasText(filter)) {
|
||||
factoryBeanBuilder.addPropertyReference("filterReference", filter);
|
||||
}
|
||||
String filenamePattern = element.getAttribute("filename-pattern");
|
||||
if (StringUtils.hasText(filenamePattern)) {
|
||||
if (StringUtils.hasText(filter)) {
|
||||
parserContext.getReaderContext().error(
|
||||
"At most one of 'filter' and 'filename-pattern' may be provided.", element);
|
||||
}
|
||||
factoryBeanBuilder.addPropertyValue("filenamePattern", filenamePattern);
|
||||
}
|
||||
String preventDuplicates = element.getAttribute("prevent-duplicates");
|
||||
if (StringUtils.hasText(preventDuplicates)) {
|
||||
factoryBeanBuilder.addPropertyValue("preventDuplicates", preventDuplicates);
|
||||
}
|
||||
return BeanDefinitionReaderUtils.registerWithGeneratedName(
|
||||
factoryBeanBuilder.getBeanDefinition(), parserContext.getRegistry());
|
||||
}
|
||||
private String registerFilter(Element element, ParserContext parserContext) {
|
||||
BeanDefinitionBuilder factoryBeanBuilder = BeanDefinitionBuilder.genericBeanDefinition(
|
||||
PACKAGE_NAME + ".config.FileListFilterFactoryBean");
|
||||
factoryBeanBuilder.setRole(BeanDefinition.ROLE_SUPPORT);
|
||||
String filter = element.getAttribute("filter");
|
||||
if (StringUtils.hasText(filter)) {
|
||||
factoryBeanBuilder.addPropertyReference("filterReference", filter);
|
||||
}
|
||||
String filenamePattern = element.getAttribute("filename-pattern");
|
||||
if (StringUtils.hasText(filenamePattern)) {
|
||||
if (StringUtils.hasText(filter)) {
|
||||
parserContext.getReaderContext().error(
|
||||
"At most one of 'filter' and 'filename-pattern' may be provided.", element);
|
||||
}
|
||||
factoryBeanBuilder.addPropertyValue("filenamePattern", filenamePattern);
|
||||
}
|
||||
IntegrationNamespaceUtils.setValueIfAttributeDefined(factoryBeanBuilder, element, "prevent-duplicates");
|
||||
return BeanDefinitionReaderUtils.registerWithGeneratedName(
|
||||
factoryBeanBuilder.getBeanDefinition(), parserContext.getRegistry());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.integration.file.config;
|
||||
|
||||
import org.springframework.beans.factory.FactoryBean;
|
||||
@@ -22,107 +23,111 @@ import org.springframework.integration.file.filters.SimplePatternFileListFilter;
|
||||
import java.io.File;
|
||||
import java.util.Collection;
|
||||
|
||||
|
||||
/**
|
||||
* @author Mark Fisher
|
||||
* @since 1.0.3
|
||||
*/
|
||||
public class FileListFilterFactoryBean implements FactoryBean<EntryListFilter<File>> {
|
||||
private volatile EntryListFilter<File> fileListFilter;
|
||||
private volatile EntryListFilter<File> filterReference;
|
||||
private volatile String filenamePattern;
|
||||
private volatile Boolean preventDuplicates;
|
||||
private final Object monitor = new Object();
|
||||
private volatile Collection<EntryListFilter<File>> filterReferences;
|
||||
private FileEntryNamer fileNamer = new FileEntryNamer();
|
||||
|
||||
public void setFilterReferences(Collection<EntryListFilter<File>> filterReferences) {
|
||||
this.filterReferences = filterReferences;
|
||||
}
|
||||
private volatile EntryListFilter<File> fileListFilter;
|
||||
|
||||
public void setFilterReference(EntryListFilter<File> filterReference) {
|
||||
this.filterReference = filterReference;
|
||||
}
|
||||
private volatile EntryListFilter<File> filterReference;
|
||||
|
||||
public void setFilenamePattern(String filenamePattern) {
|
||||
this.filenamePattern = filenamePattern;
|
||||
}
|
||||
private volatile String filenamePattern;
|
||||
|
||||
public void setPreventDuplicates(Boolean preventDuplicates) {
|
||||
this.preventDuplicates = preventDuplicates;
|
||||
}
|
||||
private volatile Boolean preventDuplicates;
|
||||
|
||||
public EntryListFilter<File> getObject() throws Exception {
|
||||
if (this.fileListFilter == null) {
|
||||
synchronized (this.monitor) {
|
||||
this.intializeFileListFilter();
|
||||
}
|
||||
}
|
||||
private final Object monitor = new Object();
|
||||
|
||||
return this.fileListFilter;
|
||||
}
|
||||
private volatile Collection<EntryListFilter<File>> filterReferences;
|
||||
|
||||
public Class<?> getObjectType() {
|
||||
return (this.fileListFilter != null) ? this.fileListFilter.getClass() : EntryListFilter.class;
|
||||
}
|
||||
|
||||
public boolean isSingleton() {
|
||||
return true;
|
||||
}
|
||||
public void setFilterReferences(Collection<EntryListFilter<File>> filterReferences) {
|
||||
this.filterReferences = filterReferences;
|
||||
}
|
||||
|
||||
private void intializeFileListFilter() {
|
||||
if (this.fileListFilter != null) {
|
||||
return;
|
||||
}
|
||||
public void setFilterReference(EntryListFilter<File> filterReference) {
|
||||
this.filterReference = filterReference;
|
||||
}
|
||||
|
||||
EntryListFilter<File> flf ;
|
||||
public void setFilenamePattern(String filenamePattern) {
|
||||
this.filenamePattern = filenamePattern;
|
||||
}
|
||||
|
||||
if ((this.filterReference != null) && (this.filenamePattern != null)) {
|
||||
throw new IllegalArgumentException("The 'filter' reference and " + "'filename-pattern' attributes are mutually exclusive.");
|
||||
}
|
||||
public void setPreventDuplicates(Boolean preventDuplicates) {
|
||||
this.preventDuplicates = preventDuplicates;
|
||||
}
|
||||
|
||||
if (this.filterReference != null) {
|
||||
if (Boolean.TRUE.equals(this.preventDuplicates)) {
|
||||
flf = this.createCompositeWithAcceptOnceFilter(this.filterReference);
|
||||
} else { // preventDuplicates is either FALSE or NULL
|
||||
flf = this.filterReference;
|
||||
}
|
||||
} else if (this.filenamePattern != null) {
|
||||
SimplePatternFileListFilter patternFilter = new SimplePatternFileListFilter(this.filenamePattern);
|
||||
public EntryListFilter<File> getObject() throws Exception {
|
||||
if (this.fileListFilter == null) {
|
||||
synchronized (this.monitor) {
|
||||
this.intializeFileListFilter();
|
||||
}
|
||||
}
|
||||
return this.fileListFilter;
|
||||
}
|
||||
|
||||
if (Boolean.FALSE.equals(this.preventDuplicates)) {
|
||||
flf = patternFilter;
|
||||
} else { // preventDuplicates is either TRUE or NULL
|
||||
flf = this.createCompositeWithAcceptOnceFilter(patternFilter);
|
||||
}
|
||||
} else if (Boolean.FALSE.equals(this.preventDuplicates)) {
|
||||
flf = new AcceptAllEntryListFilter<File>();
|
||||
} else { // preventDuplicates is either TRUE or NULL
|
||||
flf = new AcceptOnceEntryFileListFilter<File>();
|
||||
}
|
||||
public Class<?> getObjectType() {
|
||||
return (this.fileListFilter != null) ? this.fileListFilter.getClass() : EntryListFilter.class;
|
||||
}
|
||||
|
||||
// finally, it might be that they simply want a {@link CompositeEntryListFilter}
|
||||
if ((this.filterReferences != null) && (this.filterReferences.size() > 0)) {
|
||||
CompositeEntryListFilter<File> flfc = new CompositeEntryListFilter<File>();
|
||||
public boolean isSingleton() {
|
||||
return true;
|
||||
}
|
||||
|
||||
for (EntryListFilter<File> ff : filterReferences)
|
||||
flfc.addFilter(ff);
|
||||
private void intializeFileListFilter() {
|
||||
if (this.fileListFilter != null) {
|
||||
return;
|
||||
}
|
||||
EntryListFilter<File> filter;
|
||||
if ((this.filterReference != null) && (this.filenamePattern != null)) {
|
||||
throw new IllegalArgumentException("The 'filter' reference and "
|
||||
+ "'filename-pattern' attributes are mutually exclusive.");
|
||||
}
|
||||
|
||||
flf = flfc;
|
||||
}
|
||||
if (this.filterReference != null) {
|
||||
if (Boolean.TRUE.equals(this.preventDuplicates)) {
|
||||
filter = this.createCompositeWithAcceptOnceFilter(this.filterReference);
|
||||
}
|
||||
else { // preventDuplicates is either FALSE or NULL
|
||||
filter = this.filterReference;
|
||||
}
|
||||
}
|
||||
else if (this.filenamePattern != null) {
|
||||
SimplePatternFileListFilter patternFilter = new SimplePatternFileListFilter(this.filenamePattern);
|
||||
if (Boolean.FALSE.equals(this.preventDuplicates)) {
|
||||
filter = patternFilter;
|
||||
}
|
||||
else { // preventDuplicates is either TRUE or NULL
|
||||
filter = this.createCompositeWithAcceptOnceFilter(patternFilter);
|
||||
}
|
||||
}
|
||||
else if (Boolean.FALSE.equals(this.preventDuplicates)) {
|
||||
filter = new AcceptAllEntryListFilter<File>();
|
||||
}
|
||||
else { // preventDuplicates is either TRUE or NULL
|
||||
filter = new AcceptOnceEntryFileListFilter<File>();
|
||||
}
|
||||
|
||||
if (flf == null) {
|
||||
flf = new CompositeEntryListFilter<File>();
|
||||
}
|
||||
// finally, it might be that they simply want a {@link CompositeEntryListFilter}
|
||||
if ((this.filterReferences != null) && (this.filterReferences.size() > 0)) {
|
||||
CompositeEntryListFilter<File> compositeFilter = new CompositeEntryListFilter<File>();
|
||||
for (EntryListFilter<File> ff : filterReferences) {
|
||||
compositeFilter.addFilter(ff);
|
||||
}
|
||||
filter = compositeFilter;
|
||||
}
|
||||
if (filter == null) {
|
||||
filter = new CompositeEntryListFilter<File>();
|
||||
}
|
||||
this.fileListFilter = filter;
|
||||
}
|
||||
|
||||
this.fileListFilter = flf;
|
||||
}
|
||||
private CompositeEntryListFilter<File> createCompositeWithAcceptOnceFilter(EntryListFilter<File> otherFilter) {
|
||||
CompositeEntryListFilter<File> compositeFilter = new CompositeEntryListFilter<File>();
|
||||
compositeFilter.addFilter(new AcceptOnceEntryFileListFilter<File>());
|
||||
compositeFilter.addFilter(otherFilter);
|
||||
return compositeFilter;
|
||||
}
|
||||
|
||||
private CompositeEntryListFilter<File> createCompositeWithAcceptOnceFilter(EntryListFilter<File> otherFilter) {
|
||||
CompositeEntryListFilter<File> compositeFilter = new CompositeEntryListFilter<File>();
|
||||
compositeFilter.addFilter(new AcceptOnceEntryFileListFilter<File>());
|
||||
compositeFilter.addFilter(otherFilter);
|
||||
|
||||
return compositeFilter;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2009 the original author or authors.
|
||||
* Copyright 2002-2010 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.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2009 the original author or authors.
|
||||
* Copyright 2002-2010 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.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2009 the original author or authors.
|
||||
* Copyright 2002-2010 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.
|
||||
|
||||
@@ -13,10 +13,12 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.integration.file.config;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import org.springframework.beans.factory.FactoryBean;
|
||||
import org.springframework.integration.file.DirectoryScanner;
|
||||
import org.springframework.integration.file.FileReadingMessageSource;
|
||||
@@ -27,134 +29,129 @@ import org.springframework.integration.file.locking.AbstractFileLockerFilter;
|
||||
import java.io.File;
|
||||
import java.util.Comparator;
|
||||
|
||||
|
||||
/**
|
||||
* @author Mark Fisher
|
||||
* @author Iwein Fuld
|
||||
* @since 1.0.3
|
||||
*/
|
||||
public class FileReadingMessageSourceFactoryBean implements FactoryBean<FileReadingMessageSource> {
|
||||
private static Log logger = LogFactory.getLog(FileReadingMessageSourceFactoryBean.class);
|
||||
private volatile FileReadingMessageSource source;
|
||||
private volatile File directory;
|
||||
private volatile EntryListFilter<File> filter;
|
||||
private volatile AbstractFileLockerFilter locker;
|
||||
private volatile Comparator<File> comparator;
|
||||
private volatile DirectoryScanner scanner;
|
||||
private volatile Boolean scanEachPoll;
|
||||
private volatile Boolean autoCreateDirectory;
|
||||
private volatile Integer queueSize;
|
||||
private final Object initializationMonitor = new Object();
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public void setDirectory(File directory) {
|
||||
this.directory = directory;
|
||||
}
|
||||
private static Log logger = LogFactory.getLog(FileReadingMessageSourceFactoryBean.class);
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public void setComparator(Comparator<File> comparator) {
|
||||
this.comparator = comparator;
|
||||
}
|
||||
private volatile FileReadingMessageSource source;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public void setScanner(DirectoryScanner scanner) {
|
||||
this.scanner = scanner;
|
||||
}
|
||||
private volatile File directory;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public void setFilter(EntryListFilter<File> filter) {
|
||||
if (filter instanceof AbstractFileLockerFilter && (this.locker == null)) {
|
||||
this.setLocker((AbstractFileLockerFilter) filter);
|
||||
}
|
||||
private volatile EntryListFilter<File> filter;
|
||||
|
||||
this.filter = filter;
|
||||
}
|
||||
private volatile AbstractFileLockerFilter locker;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public void setScanEachPoll(Boolean scanEachPoll) {
|
||||
this.scanEachPoll = scanEachPoll;
|
||||
}
|
||||
private volatile Comparator<File> comparator;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public void setAutoCreateDirectory(Boolean autoCreateDirectory) {
|
||||
this.autoCreateDirectory = autoCreateDirectory;
|
||||
}
|
||||
private volatile DirectoryScanner scanner;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public void setQueueSize(Integer queueSize) {
|
||||
this.queueSize = queueSize;
|
||||
}
|
||||
private volatile Boolean scanEachPoll;
|
||||
|
||||
public void setLocker(AbstractFileLockerFilter locker) {
|
||||
this.locker = locker;
|
||||
}
|
||||
private volatile Boolean autoCreateDirectory;
|
||||
|
||||
public FileReadingMessageSource getObject() throws Exception {
|
||||
if (this.source == null) {
|
||||
initSource();
|
||||
}
|
||||
private volatile Integer queueSize;
|
||||
|
||||
return this.source;
|
||||
}
|
||||
private final Object initializationMonitor = new Object();
|
||||
|
||||
public Class<?> getObjectType() {
|
||||
return FileReadingMessageSource.class;
|
||||
}
|
||||
|
||||
public boolean isSingleton() {
|
||||
return true;
|
||||
}
|
||||
public void setDirectory(File directory) {
|
||||
this.directory = directory;
|
||||
}
|
||||
|
||||
private void initSource() {
|
||||
synchronized (this.initializationMonitor) {
|
||||
if (this.source != null) {
|
||||
return;
|
||||
}
|
||||
public void setComparator(Comparator<File> comparator) {
|
||||
this.comparator = comparator;
|
||||
}
|
||||
|
||||
boolean comparatorSet = this.comparator != null;
|
||||
boolean queueSizeSet = this.queueSize != null;
|
||||
public void setScanner(DirectoryScanner scanner) {
|
||||
this.scanner = scanner;
|
||||
}
|
||||
|
||||
if (comparatorSet) {
|
||||
if (queueSizeSet) {
|
||||
logger.warn("'comparator' and 'queueSize' are mutually exclusive. Ignoring 'queueSize'");
|
||||
}
|
||||
public void setFilter(EntryListFilter<File> filter) {
|
||||
if (filter instanceof AbstractFileLockerFilter && (this.locker == null)) {
|
||||
this.setLocker((AbstractFileLockerFilter) filter);
|
||||
}
|
||||
this.filter = filter;
|
||||
}
|
||||
|
||||
this.source = new FileReadingMessageSource(this.comparator);
|
||||
} else if (queueSizeSet) {
|
||||
this.source = new FileReadingMessageSource(queueSize);
|
||||
} else {
|
||||
this.source = new FileReadingMessageSource();
|
||||
}
|
||||
public void setScanEachPoll(Boolean scanEachPoll) {
|
||||
this.scanEachPoll = scanEachPoll;
|
||||
}
|
||||
|
||||
this.source.setDirectory(this.directory);
|
||||
public void setAutoCreateDirectory(Boolean autoCreateDirectory) {
|
||||
this.autoCreateDirectory = autoCreateDirectory;
|
||||
}
|
||||
|
||||
if (this.scanner != null) {
|
||||
this.source.setScanner(this.scanner);
|
||||
}
|
||||
public void setQueueSize(Integer queueSize) {
|
||||
this.queueSize = queueSize;
|
||||
}
|
||||
|
||||
if (this.filter != null) {
|
||||
if (this.locker == null) {
|
||||
this.source.setFilter(this.filter);
|
||||
} else {
|
||||
CompositeEntryListFilter<File> fileCompositeEntryListFilter = new CompositeEntryListFilter<File>();
|
||||
public void setLocker(AbstractFileLockerFilter locker) {
|
||||
this.locker = locker;
|
||||
}
|
||||
|
||||
public FileReadingMessageSource getObject() throws Exception {
|
||||
if (this.source == null) {
|
||||
initSource();
|
||||
}
|
||||
return this.source;
|
||||
}
|
||||
|
||||
public Class<?> getObjectType() {
|
||||
return FileReadingMessageSource.class;
|
||||
}
|
||||
|
||||
public boolean isSingleton() {
|
||||
return true;
|
||||
}
|
||||
|
||||
private void initSource() {
|
||||
synchronized (this.initializationMonitor) {
|
||||
if (this.source != null) {
|
||||
return;
|
||||
}
|
||||
boolean comparatorSet = this.comparator != null;
|
||||
boolean queueSizeSet = this.queueSize != null;
|
||||
if (comparatorSet) {
|
||||
if (queueSizeSet) {
|
||||
logger.warn("'comparator' and 'queueSize' are mutually exclusive. Ignoring 'queueSize'");
|
||||
}
|
||||
this.source = new FileReadingMessageSource(this.comparator);
|
||||
}
|
||||
else if (queueSizeSet) {
|
||||
this.source = new FileReadingMessageSource(queueSize);
|
||||
}
|
||||
else {
|
||||
this.source = new FileReadingMessageSource();
|
||||
}
|
||||
this.source.setDirectory(this.directory);
|
||||
if (this.scanner != null) {
|
||||
this.source.setScanner(this.scanner);
|
||||
}
|
||||
if (this.filter != null) {
|
||||
if (this.locker == null) {
|
||||
this.source.setFilter(this.filter);
|
||||
}
|
||||
else {
|
||||
CompositeEntryListFilter<File> fileCompositeEntryListFilter = new CompositeEntryListFilter<File>();
|
||||
fileCompositeEntryListFilter.addFilter(this.filter);
|
||||
fileCompositeEntryListFilter.addFilter(this.locker);
|
||||
this.source.setFilter(fileCompositeEntryListFilter);
|
||||
this.source.setLocker(locker);
|
||||
}
|
||||
}
|
||||
if (this.scanEachPoll != null) {
|
||||
this.source.setScanEachPoll(this.scanEachPoll);
|
||||
}
|
||||
if (this.autoCreateDirectory != null) {
|
||||
this.source.setAutoCreateDirectory(this.autoCreateDirectory);
|
||||
}
|
||||
this.source.afterPropertiesSet();
|
||||
}
|
||||
}
|
||||
|
||||
this.source.setFilter(fileCompositeEntryListFilter);
|
||||
this.source.setLocker(locker);
|
||||
}
|
||||
}
|
||||
|
||||
if (this.scanEachPoll != null) {
|
||||
this.source.setScanEachPoll(this.scanEachPoll);
|
||||
}
|
||||
|
||||
if (this.autoCreateDirectory != null) {
|
||||
this.source.setAutoCreateDirectory(this.autoCreateDirectory);
|
||||
}
|
||||
|
||||
this.source.afterPropertiesSet();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2008 the original author or authors.
|
||||
* Copyright 2002-2010 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.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2008 the original author or authors.
|
||||
* Copyright 2002-2010 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.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2009 the original author or authors.
|
||||
* Copyright 2002-2010 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.
|
||||
|
||||
@@ -32,8 +32,7 @@ import java.io.File;
|
||||
* @author Iwein Fuld
|
||||
* @since 1.0.3
|
||||
*/
|
||||
public class FileWritingMessageHandlerFactoryBean implements FactoryBean<FileWritingMessageHandler>,
|
||||
BeanFactoryAware {
|
||||
public class FileWritingMessageHandlerFactoryBean implements FactoryBean<FileWritingMessageHandler>, BeanFactoryAware {
|
||||
|
||||
private volatile FileWritingMessageHandler handler;
|
||||
|
||||
@@ -61,6 +60,7 @@ public class FileWritingMessageHandlerFactoryBean implements FactoryBean<FileWri
|
||||
|
||||
private final Object initializationMonitor = new Object();
|
||||
|
||||
|
||||
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
|
||||
this.beanFactory = beanFactory;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user