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 64d8ff90e8..26a4d00258 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 @@ -76,6 +76,7 @@ abstract class FileWritingMessageHandlerBeanDefinitionBuilder { IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "flush-when-idle"); IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "flush-predicate"); IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "chmod"); + 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 9375d90650..bad0e6f2a2 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,40 +41,42 @@ 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 String chmod; + private Boolean preserveTimestamp; + public void setFileExistsMode(String fileExistsModeAsString) { this.fileExistsMode = FileExistsMode.getForString(fileExistsModeAsString); } @@ -143,6 +145,10 @@ public class FileWritingMessageHandlerFactoryBean this.chmod = chmod; } + public void setPreserveTimestamp(Boolean preserveTimestamp) { + this.preserveTimestamp = preserveTimestamp; + } + @Override protected FileWritingMessageHandler createHandler() { @@ -204,6 +210,9 @@ public class FileWritingMessageHandlerFactoryBean if (this.chmod != null) { handler.setChmodOctal(this.chmod); } + 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 24dc7e24e1..8daccabbb4 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 @@ -18,6 +18,7 @@ directory="${java.io.tmpdir}" temporary-file-suffix=".foo" chmod="777" + preserve-timestamp="true" filename-generator-expression="'foo.txt'"/>