From 4258da8deaef6d55576a424ddfaf8d7aed7957a3 Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Tue, 23 Jul 2019 12:47:39 -0400 Subject: [PATCH] INT-3746: RemoteFileTemplate streaming backport Resolves https://jira.spring.io/browse/INT-3746 --- .../integration/file/remote/RemoteFileTemplate.java | 4 ++++ .../file/remote/RemoteFileTemplateTests.java | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/spring-integration-file/src/main/java/org/springframework/integration/file/remote/RemoteFileTemplate.java b/spring-integration-file/src/main/java/org/springframework/integration/file/remote/RemoteFileTemplate.java index 0baa3fa499..f2df9c0d9b 100644 --- a/spring-integration-file/src/main/java/org/springframework/integration/file/remote/RemoteFileTemplate.java +++ b/spring-integration-file/src/main/java/org/springframework/integration/file/remote/RemoteFileTemplate.java @@ -494,6 +494,10 @@ public class RemoteFileTemplate implements RemoteFileOperations, Initializ } dataInputStream = new ByteArrayInputStream(bytes); } + else if (payload instanceof InputStream) { + dataInputStream = (InputStream) payload; + name = "InputStream payload"; + } else { throw new IllegalArgumentException("Unsupported payload type. The only supported payloads are " + "java.io.File, java.lang.String, and byte[]"); diff --git a/spring-integration-file/src/test/java/org/springframework/integration/file/remote/RemoteFileTemplateTests.java b/spring-integration-file/src/test/java/org/springframework/integration/file/remote/RemoteFileTemplateTests.java index a94b420e20..c72406a0b8 100644 --- a/spring-integration-file/src/test/java/org/springframework/integration/file/remote/RemoteFileTemplateTests.java +++ b/spring-integration-file/src/test/java/org/springframework/integration/file/remote/RemoteFileTemplateTests.java @@ -23,7 +23,9 @@ import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import java.io.ByteArrayInputStream; import java.io.File; +import java.io.IOException; import java.io.InputStream; import org.hamcrest.Matchers; @@ -117,4 +119,12 @@ public class RemoteFileTemplateTests { verify(this.session).write(Mockito.any(InputStream.class), Mockito.anyString()); } + @Test + public void testStream() throws IOException { + ByteArrayInputStream stream = new ByteArrayInputStream("foo".getBytes()); + this.template.send(new GenericMessage(stream), + FileExistsMode.IGNORE); + verify(this.session).write(Mockito.eq(stream), Mockito.any()); + } + }