Package 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
Modifier and Type | Class | Description
--- | --- | ---
`static class` | `PermissionUtils.FileType` | The supported types of files, maps to the `isFoo` methods in `BasicFileAttributes`.

## Method Summary

Modifier and Type | Method | Description
--- | --- | ---

`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 permissions 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 Details

### modeFromPermissions

public static int modeFromPermissions​(java.util.Set<java.nio.file.attribute.PosixFilePermission> permissions, PermissionUtils.FileType type)
Translates a set of permissions 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:
  `r` - 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` - if something goes wrong

### 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:
  `r` - 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` - if something goes wrong