GH-9684: Auto-create temporary remote directory

Fixes: #9684
Issue link: https://github.com/spring-projects/spring-integration/issues/9684

The `RemoteFileTemplate` is missing to create a temporary remote directory

* Fix `RemoteFileTemplate.sendFileToRemoteDirectory()` to create a `temporaryRemoteDirectory`
as well if it is different from already created `remoteDirectory`
* Add `SftpServerOutboundTests.autoCreateTemporaryDirectory()` to verify that `temporaryRemoteDirectory` is created and in-use
* Some other `SftpServerOutboundTests` refactoring for better code style

(cherry picked from commit a4b193fa64)
This commit is contained in:
Artem Bilan
2024-12-12 17:31:07 -05:00
committed by Spring Builds
parent d8fb02306f
commit 4bb46246df
3 changed files with 195 additions and 172 deletions

View File

@@ -570,10 +570,17 @@ public class RemoteFileTemplate<F> implements RemoteFileOperations<F>, Initializ
if (this.autoCreateDirectory) {
try {
RemoteFileUtils.makeDirectories(remoteDirectory, session, this.remoteFileSeparator, this.logger);
if (!temporaryRemoteDirectory.equals(remoteDirectory)) {
RemoteFileUtils.makeDirectories(temporaryRemoteDirectory, session, this.remoteFileSeparator,
this.logger);
}
}
catch (@SuppressWarnings("unused") IllegalStateException e) {
// Revert to old FTP behavior if recursive mkdir fails, for backwards compatibility
session.mkdir(remoteDirectory);
if (!temporaryRemoteDirectory.equals(remoteDirectory)) {
session.mkdir(temporaryRemoteDirectory);
}
}
}