org.apache.tools.ant.util

## Class PermissionUtils

- java.lang.Object
- - org.apache.tools.ant.util.PermissionUtils

    public class PermissionUtils
    extends java.lang.Object

Contains helper methods for dealing with `PosixFilePermission` or the traditional Unix mode representation of permissions.

Since:
  Ant 1.10.0

### Nested Class Summary

Nested Classes
`static class` `PermissionUtils.FileType` The supported types of files, maps to the `isFoo` methods in `BasicFileAttributes`.

### Method Summary

All Methods Static Methods Concrete Methods

`static java.util.Set<java.nio.file.attribute.PosixFilePermission>`

`getPermissions(Resource r, java.util.function.Function<java.nio.file.Path,java.util.Set<java.nio.file.attribute.PosixFilePermission>> posixNotSupportedFallback)`
Sets permissions of a `Resource` - returns an empty set for unsupported resource types or file systems that don't support PosixFilePermissions and no fallback has been provided..

`static int` `modeFromPermissions(java.util.Set<java.nio.file.attribute.PosixFilePermission> permissions, PermissionUtils.FileType type)` Translates a set of permissons into a Unix stat(2) `st_mode` result.
`static java.util.Set<java.nio.file.attribute.PosixFilePermission>` `permissionsFromMode(int mode)` Translates a Unix stat(2) `st_mode` compatible value into a set of permissions.
`static void` `setPermissions(Resource r, java.util.Set<java.nio.file.attribute.PosixFilePermission> permissions, java.util.function.Consumer<java.nio.file.Path> posixNotSupportedCallback)` Sets permissions on a `Resource` - doesn't do anything for unsupported resource types.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Method Detail

#### modeFromPermissions

    public static int modeFromPermissions(java.util.Set<java.nio.file.attribute.PosixFilePermission> permissions,
                                          PermissionUtils.FileType type)

Translates a set of permissons into a Unix stat(2) `st_mode` result.

Parameters:
  `permissions` - the permissions
  `type` - the file type
Returns:
  the "mode"

#### permissionsFromMode

    public static java.util.Set<java.nio.file.attribute.PosixFilePermission> permissionsFromMode(int mode)

Translates a Unix stat(2) `st_mode` compatible value into a set of permissions.

Parameters:
  `mode` - the "mode"
Returns:
  set of permissions

#### setPermissions

    public static void setPermissions(Resource r,
                                      java.util.Set<java.nio.file.attribute.PosixFilePermission> permissions,
                                      java.util.function.Consumer<java.nio.file.Path> posixNotSupportedCallback)
                               throws java.io.IOException

Sets permissions on a `Resource` - doesn't do anything for unsupported resource types.

Supported types are:

- any `FileProvider`
- `ArchiveResource`

Parameters:
  `resource` - the resource to set permissions for
  `permissions` - the permissions
  `posixNotSupportedCallback` - optional callback that is invoked for a file provider resource if the file-system holding the file doesn't support PosixFilePermissions. The Path corresponding to the file is passed to the callback.
Throws:
  `java.io.IOException`

#### getPermissions

    public static java.util.Set<java.nio.file.attribute.PosixFilePermission> getPermissions(Resource r,
                                                                                            java.util.function.Function<java.nio.file.Path,java.util.Set<java.nio.file.attribute.PosixFilePermission>> posixNotSupportedFallback)
                                                                                     throws java.io.IOException

Sets permissions of a `Resource` - returns an empty set for unsupported resource types or file systems that don't support PosixFilePermissions and no fallback has been provided..

Supported types are:

- any `FileProvider`
- `ArchiveResource`

Parameters:
  `resource` - the resource to read permissions from
  `posixNotSupportedFallback` - optional fallback function to provide permissions for file system that don't support PosixFilePermissions. The Path corresponding to the file is passed to the callback.
Returns:
  the permissions
Throws:
  `java.io.IOException`