This is an automated email from the ASF dual-hosted git repository.

jbonofre pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/karaf.git


The following commit(s) were added to refs/heads/master by this push:
     new 7f762f2  [KARAF-6124] Handle Windows permissions when POSIX not 
supported
     new 4dd5610  Merge pull request #744 from diamondq/KARAF-6124
7f762f2 is described below

commit 7f762f27480450ba0e1e2da1abe74ba0117bf6f1
Author: Mike Mansell <[email protected]>
AuthorDate: Tue Jan 29 18:53:25 2019 -0800

    [KARAF-6124] Handle Windows permissions when POSIX not supported
    
    Handle the UnsupportedOperationException that is thrown when attempting to 
use the Files.getPosixFilePermissions() under Windows (as POSIX is not 
supported) by using the File.setExecutable() instead in that scenario.
---
 .../core/internal/InstanceServiceImpl.java         | 24 ++++++++++++++--------
 1 file changed, 15 insertions(+), 9 deletions(-)

diff --git 
a/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java
 
b/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java
index 0a15e73..3ac2df3 100644
--- 
a/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java
+++ 
b/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java
@@ -1206,15 +1206,21 @@ public class InstanceServiceImpl implements 
InstanceService {
     }
 
     private void makeFileExecutable(File serviceFile) throws IOException {
-        Set<PosixFilePermission> permissions = new HashSet<>();
-        permissions.add(PosixFilePermission.OWNER_EXECUTE);
-        permissions.add(PosixFilePermission.GROUP_EXECUTE);
-        permissions.add(PosixFilePermission.OTHERS_EXECUTE);
-
-        // Get the existing permissions and add the executable permissions to 
them
-        Set<PosixFilePermission> filePermissions = 
Files.getPosixFilePermissions(serviceFile.toPath());
-        filePermissions.addAll(permissions);
-        Files.setPosixFilePermissions(serviceFile.toPath(), filePermissions);
+        try {
+            Set<PosixFilePermission> permissions = new HashSet<>();
+            permissions.add(PosixFilePermission.OWNER_EXECUTE);
+            permissions.add(PosixFilePermission.GROUP_EXECUTE);
+            permissions.add(PosixFilePermission.OTHERS_EXECUTE);
+
+            // Get the existing permissions and add the executable permissions 
to them
+            Set<PosixFilePermission> filePermissions = 
Files.getPosixFilePermissions(serviceFile.toPath());
+            filePermissions.addAll(permissions);
+            Files.setPosixFilePermissions(serviceFile.toPath(), 
filePermissions);
+        }
+        catch (UnsupportedOperationException ex)
+        {
+            serviceFile.setExecutable(true, false);
+        }
     }
 
     private void copy(File source, File destination) throws IOException {

Reply via email to