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:
Artem Bilan
2017-08-07 14:49:35 -04:00
committed by Gary Russell
parent 45a5cf48a9
commit daa927e7a4
4 changed files with 27 additions and 15 deletions

View File

@@ -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);

View File

@@ -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;
}

View File

@@ -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"

View File

@@ -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