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