diff --git a/spring-integration-file/src/main/java/org/springframework/integration/file/config/FileWritingMessageHandlerBeanDefinitionBuilder.java b/spring-integration-file/src/main/java/org/springframework/integration/file/config/FileWritingMessageHandlerBeanDefinitionBuilder.java index a609c2b496..01f46c30b5 100644 --- a/spring-integration-file/src/main/java/org/springframework/integration/file/config/FileWritingMessageHandlerBeanDefinitionBuilder.java +++ b/spring-integration-file/src/main/java/org/springframework/integration/file/config/FileWritingMessageHandlerBeanDefinitionBuilder.java @@ -75,6 +75,7 @@ abstract class FileWritingMessageHandlerBeanDefinitionBuilder { IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "flush-interval"); IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "flush-when-idle"); IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "flush-predicate"); + IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "preserve-timestamp"); String remoteFileNameGenerator = element.getAttribute("filename-generator"); String remoteFileNameGeneratorExpression = element.getAttribute("filename-generator-expression"); boolean hasRemoteFileNameGenerator = StringUtils.hasText(remoteFileNameGenerator); diff --git a/spring-integration-file/src/main/java/org/springframework/integration/file/config/FileWritingMessageHandlerFactoryBean.java b/spring-integration-file/src/main/java/org/springframework/integration/file/config/FileWritingMessageHandlerFactoryBean.java index 81fd1bc1c2..cc6f43f587 100644 --- a/spring-integration-file/src/main/java/org/springframework/integration/file/config/FileWritingMessageHandlerFactoryBean.java +++ b/spring-integration-file/src/main/java/org/springframework/integration/file/config/FileWritingMessageHandlerFactoryBean.java @@ -41,37 +41,39 @@ import org.springframework.integration.file.support.FileExistsMode; public class FileWritingMessageHandlerFactoryBean extends AbstractSimpleMessageHandlerFactoryBean { - private volatile File directory; + private File directory; - private volatile Expression directoryExpression; + private Expression directoryExpression; - private volatile String charset; + private String charset; - private volatile FileNameGenerator fileNameGenerator; + private FileNameGenerator fileNameGenerator; - private volatile Boolean deleteSourceFiles; + private Boolean deleteSourceFiles; - private volatile Boolean autoCreateDirectory; + private Boolean autoCreateDirectory; - private volatile Boolean requiresReply; + private Boolean requiresReply; - private volatile Long sendTimeout; + private Long sendTimeout; - private volatile String temporaryFileSuffix; + private String temporaryFileSuffix; - private volatile FileExistsMode fileExistsMode; + private FileExistsMode fileExistsMode; - private volatile boolean expectReply = true; + private boolean expectReply = true; private Integer bufferSize; - private volatile Boolean appendNewLine; + private Boolean appendNewLine; - private volatile Long flushInterval; + private Long flushInterval; - private volatile Boolean flushWhenIdle; + private Boolean flushWhenIdle; - private volatile MessageFlushPredicate flushPredicate; + private MessageFlushPredicate flushPredicate; + + private Boolean preserveTimestamp; public void setFileExistsMode(String fileExistsModeAsString) { this.fileExistsMode = FileExistsMode.getForString(fileExistsModeAsString); @@ -137,6 +139,10 @@ public class FileWritingMessageHandlerFactoryBean this.flushPredicate = flushPredicate; } + public void setPreserveTimestamp(Boolean preserveTimestamp) { + this.preserveTimestamp = preserveTimestamp; + } + @Override protected FileWritingMessageHandler createHandler() { @@ -195,6 +201,9 @@ public class FileWritingMessageHandlerFactoryBean if (this.flushPredicate != null) { handler.setFlushPredicate(this.flushPredicate); } + if (this.preserveTimestamp != null) { + handler.setPreserveTimestamp(this.preserveTimestamp); + } return handler; } diff --git a/spring-integration-file/src/test/java/org/springframework/integration/file/config/FileOutboundChannelAdapterParserTests-context.xml b/spring-integration-file/src/test/java/org/springframework/integration/file/config/FileOutboundChannelAdapterParserTests-context.xml index 4a5839b473..cda8f5310e 100644 --- a/spring-integration-file/src/test/java/org/springframework/integration/file/config/FileOutboundChannelAdapterParserTests-context.xml +++ b/spring-integration-file/src/test/java/org/springframework/integration/file/config/FileOutboundChannelAdapterParserTests-context.xml @@ -17,6 +17,7 @@ channel="testChannel" directory="${java.io.tmpdir}" temporary-file-suffix=".foo" + preserve-timestamp="true" filename-generator-expression="'foo.txt'"/>