INT-4324: File Outbound: parse preserve-timestamp
JIRA: https://jira.spring.io/browse/INT-4324 The `preserve-timestamp` attribute for the `<int-file:outbound-channel-adapter>` has been missed for parsing in the `FileWritingMessageHandlerBeanDefinitionBuilder` and propagation in the `FileWritingMessageHandlerFactoryBean` **Cherry-pick to 4.3.x** Conflicts: spring-integration-file/src/main/java/org/springframework/integration/file/config/FileWritingMessageHandlerBeanDefinitionBuilder.java spring-integration-file/src/main/java/org/springframework/integration/file/config/FileWritingMessageHandlerFactoryBean.java spring-integration-file/src/test/java/org/springframework/integration/file/config/FileOutboundChannelAdapterParserTests-context.xml spring-integration-file/src/test/java/org/springframework/integration/file/config/FileOutboundChannelAdapterParserTests.java Resolved.
This commit is contained in:
committed by
Gary Russell
parent
45a5cf48a9
commit
daa927e7a4
@@ -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);
|
||||
|
||||
@@ -41,37 +41,39 @@ import org.springframework.integration.file.support.FileExistsMode;
|
||||
public class FileWritingMessageHandlerFactoryBean
|
||||
extends AbstractSimpleMessageHandlerFactoryBean<FileWritingMessageHandler> {
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
channel="testChannel"
|
||||
directory="${java.io.tmpdir}"
|
||||
temporary-file-suffix=".foo"
|
||||
preserve-timestamp="true"
|
||||
filename-generator-expression="'foo.txt'"/>
|
||||
|
||||
<file:outbound-channel-adapter id="adapterWithCustomNameGenerator"
|
||||
|
||||
@@ -140,6 +140,7 @@ public class FileOutboundChannelAdapterParserTests {
|
||||
assertEquals("'foo.txt'", expression.getExpressionString());
|
||||
assertEquals(Boolean.FALSE, handlerAccessor.getPropertyValue("deleteSourceFiles"));
|
||||
assertEquals(Boolean.TRUE, handlerAccessor.getPropertyValue("flushWhenIdle"));
|
||||
assertEquals(Boolean.TRUE, handlerAccessor.getPropertyValue("preserveTimestamp"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user