From c36cdd13c83e1a38f0ea0942e2f1e6b196011db1 Mon Sep 17 00:00:00 2001 From: juanf <juanf@ethz.ch> Date: Thu, 25 May 2023 15:28:08 +0200 Subject: [PATCH] SSDM-13521: adding more methods to the Unix replacement library --- .../java/ch/systemsx/cisd/common/io/Posix.java | 18 ++++++++++++++++++ .../common/process/FileRenamingCallable.java | 14 ++++++++------ 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/lib-commonbase/source/java/ch/systemsx/cisd/common/io/Posix.java b/lib-commonbase/source/java/ch/systemsx/cisd/common/io/Posix.java index 80faddfb428..22e3ffd4a59 100644 --- a/lib-commonbase/source/java/ch/systemsx/cisd/common/io/Posix.java +++ b/lib-commonbase/source/java/ch/systemsx/cisd/common/io/Posix.java @@ -36,6 +36,24 @@ public final class Posix return true; } + public static Set<PosixFilePermission> getPermissions(String path) throws IOExceptionUnchecked { + try + { + return Files.getPosixFilePermissions(Path.of(path)); + } catch (IOException e) + { + throw new IOExceptionUnchecked(e); + } + } + + public static void setAccessMode(String path, Set<PosixFilePermission> permissions) throws IOExceptionUnchecked { + try { + Files.setPosixFilePermissions(Path.of(path), permissions); + } catch (IOException e) { + throw new IOExceptionUnchecked(e); + } + } + public static void setAccessMode(String path, short mode) throws IOExceptionUnchecked { if (mode != (short) 0777) { throw new IOExceptionUnchecked("Failure to set file permissions for '" + path + "', mode 777 is supported."); diff --git a/lib-commonbase/source/java/ch/systemsx/cisd/common/process/FileRenamingCallable.java b/lib-commonbase/source/java/ch/systemsx/cisd/common/process/FileRenamingCallable.java index 75eca0f8188..ceb3e81fa33 100644 --- a/lib-commonbase/source/java/ch/systemsx/cisd/common/process/FileRenamingCallable.java +++ b/lib-commonbase/source/java/ch/systemsx/cisd/common/process/FileRenamingCallable.java @@ -16,12 +16,14 @@ package ch.systemsx.cisd.common.process; import java.io.File; +import java.nio.file.attribute.PosixFilePermission; +import java.util.Set; import java.util.concurrent.Callable; +import ch.systemsx.cisd.common.io.Posix; import org.apache.log4j.Logger; import ch.systemsx.cisd.base.exceptions.IOExceptionUnchecked; -import ch.systemsx.cisd.base.unix.Unix; import ch.systemsx.cisd.common.logging.LogCategory; import ch.systemsx.cisd.common.logging.LogFactory; @@ -72,16 +74,16 @@ public final class FileRenamingCallable implements Callable<Boolean> boolean renamed = sourceFile.renameTo(destinationFile); if (renamed == false) { - if (Unix.isOperational()) + if (Posix.isOperational()) { try { // Try to set the permissions to "all can write" - final short permissions = - Unix.getFileInfo(sourceFile.getPath()).getPermissions(); - Unix.setAccessMode(sourceFile.getPath(), (short) 0777); + Set<PosixFilePermission> permissions = + Posix.getPermissions(sourceFile.getPath()); + Posix.setAccessMode(sourceFile.getPath(), (short) 0777); renamed = sourceFile.renameTo(destinationFile); - Unix.setAccessMode(destinationFile.getPath(), permissions); + Posix.setAccessMode(destinationFile.getPath(), permissions); } catch (IOExceptionUnchecked ex) { operationLog.warn(String.format( -- GitLab