GH-9294: Set permissions to target file on rename
* GH-9294: Set permissions to target file on rename
Fixes: #9294
When the `deleteSourceFiles` property of `FileWritingMessageHandler` is `true`, the `chmod` is not set on the target file.
* Fix `FileWritingMessageHandler.handleFileMessage()` logic to `setPermissions(resultFile)` after `move` operation
* * Set only `OWNER_READ` permission for file in unit test
(cherry picked from commit 3e71ea5521)
This commit is contained in:
committed by
Spring Builds
parent
89425f031b
commit
bd2cf773e2
@@ -629,6 +629,7 @@ public class FileWritingMessageHandler extends AbstractReplyProducingMessageHand
|
||||
|
||||
if (!FileExistsMode.APPEND.equals(this.fileExistsMode) && this.deleteSourceFiles) {
|
||||
rename(sourceFile, resultFile);
|
||||
setPermissions(resultFile);
|
||||
return resultFile;
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -36,6 +36,8 @@ import org.apache.commons.io.output.ByteArrayOutputStream;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.condition.DisabledOnOs;
|
||||
import org.junit.jupiter.api.condition.OS;
|
||||
import org.junit.jupiter.api.io.TempDir;
|
||||
|
||||
import org.springframework.beans.DirectFieldAccessor;
|
||||
@@ -301,6 +303,23 @@ public class FileWritingMessageHandlerTests {
|
||||
assertThat(sourceFile.exists()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisabledOnOs(OS.WINDOWS)
|
||||
public void deleteFilesWithChmod() throws Exception {
|
||||
QueueChannel output = new QueueChannel();
|
||||
handler.setDeleteSourceFiles(true);
|
||||
handler.setOutputChannel(output);
|
||||
handler.setChmod(0400);
|
||||
Message<?> message = MessageBuilder.withPayload(sourceFile).build();
|
||||
handler.handleMessage(message);
|
||||
Message<?> result = output.receive(0);
|
||||
assertFileContentIsMatching(result);
|
||||
File resultFile = messageToFile(result);
|
||||
Set<PosixFilePermission> posixFilePermissions = Files.getPosixFilePermissions(resultFile.toPath());
|
||||
assertThat(posixFilePermissions).containsOnly(PosixFilePermission.OWNER_READ);
|
||||
assertThat(sourceFile.exists()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void deleteSourceFileWithStringPayloadAndFileInstanceHeader() throws Exception {
|
||||
QueueChannel output = new QueueChannel();
|
||||
|
||||
Reference in New Issue
Block a user