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

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static java.util.Set<java.nio.file.attribute.PosixFilePermission>` | `getPermissions​(Resource r, boolean readFromLinkTarget, java.util.function.Function<java.nio.file.Path,​java.util.Set<java.nio.file.attribute.PosixFilePermission>> posixNotSupportedFallback)` | Reads 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 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)` | Reads 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, boolean actOnLinkTarget, java.util.function.Consumer<java.nio.file.Path> posixNotSupportedCallback)` | Sets permissions on a `Resource` - doesn't do anything for unsupported resource types.
    `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 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`

      When applied to a `FileProvider` providing a symbolic link or Windows junction, the permission of the link target are set, not the permssions of the link itself.

      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

    - #### setPermissions

          public static void setPermissions​(Resource r,
                                            java.util.Set<java.nio.file.attribute.PosixFilePermission> permissions,
                                            boolean actOnLinkTarget,
                                            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
        `actOnLinkTarget` - whether to set the permissions on a symbolic link or Windows junction itself instead of the link's target. Only applies to resources that are `FileProvider`s.
        `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
      Since:
        Ant 1.10.16

    - #### 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

      Reads 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`

      When applied to a `FileProvider` providing a symbolic link or Windows junction, the permission of the link target are read, not the permssions of the link itself.

      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

    - #### getPermissions

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

      Reads 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
        `readFromLinkTarget` - whether to read the permissions of a symbolic link or Windows junction itself instead of the link's target. Only applies to resources that are `FileProvider`s.
        `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