Permissions (Apache Ant API)

Package org.apache.tools.ant.types

## Class Permissions

- java.lang.Object
- - org.apache.tools.ant.ProjectComponent
  - - org.apache.tools.ant.types.Permissions

- All Implemented Interfaces:
    `java.lang.Cloneable`

      public class Permissions
      extends ProjectComponent

  This class implements a security manager meant for usage by tasks that run inside the Ant VM. An examples are the Java Task and JUnitTask.

  The basic functionality is that nothing (except for a base set of permissions) is allowed, unless the permission is granted either explicitly or implicitly. If a permission is granted this can be overruled by explicitly revoking the permission. It is not permissible to add permissions (either granted or revoked) while the Security Manager is active (after calling setSecurityManager() but before calling restoreSecurityManager()).

  Note: This class isn't supported in Java 18 and higher where `SecurityManager` has been deprecated for removal.

  Since:
    Ant 1.6

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static class` | `Permissions.Permission` | Represents a permission.

  - ### Field Summary

    - ### Fields inherited from class org.apache.tools.ant.ProjectComponent

      `description, location, project`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `Permissions()` | Create a set of Permissions.
    `Permissions​(boolean delegateToOldSM)` | Create a set of permissions.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addConfiguredGrant​(Permissions.Permission perm)` | Adds a permission to be granted.
    `void` | `addConfiguredRevoke​(Permissions.Permission perm)` | Adds a permission to be revoked.
    `void` | `restoreSecurityManager()` | To be used by tasks that just finished executing the parts subject to these permissions.
    `void` | `setSecurityManager()` | To be used by tasks wishing to use this security model before executing the part to be subject to these Permissions.

    - ### Methods inherited from class org.apache.tools.ant.ProjectComponent

      `clone, getDescription, getLocation, getProject, log, log, setDescription, setLocation, setProject`

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

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

- - ### Constructor Detail

    - #### Permissions

          public Permissions()

      Create a set of Permissions. Equivalent to calling `new Permissions(false)`.

    - #### Permissions

          public Permissions​(boolean delegateToOldSM)

      Create a set of permissions.
      Parameters:
        `delegateToOldSM` - if `true` the old security manager will be used if the permission has not been explicitly granted or revoked in this instance.

  - ### Method Detail

    - #### addConfiguredGrant

          public void addConfiguredGrant​(Permissions.Permission perm)

      Adds a permission to be granted.
      Parameters:
        `perm` - The Permissions.Permission to be granted.

    - #### addConfiguredRevoke

          public void addConfiguredRevoke​(Permissions.Permission perm)

      Adds a permission to be revoked.
      Parameters:
        `perm` - The Permissions.Permission to be revoked

    - #### setSecurityManager

          public void setSecurityManager()
                                  throws BuildException

      To be used by tasks wishing to use this security model before executing the part to be subject to these Permissions. Note that setting the SecurityManager too early may prevent your part from starting, as for instance changing classloaders may be prohibited. The classloader for the new situation is supposed to be present.

      This method is no longer supported in Java 18 and higher versions and throws a `BuildException`. `MagicNames.WARN_SECURITY_MANAGER_USAGE` property can be set to `true` to log a warning message instead of throwing the exception.

      Throws:
        `BuildException` - on error

    - #### restoreSecurityManager

          public void restoreSecurityManager()
                                      throws BuildException

      To be used by tasks that just finished executing the parts subject to these permissions.

      This method is no longer supported in Java 18 and higher versions and throws a `BuildException`. `MagicNames.WARN_SECURITY_MANAGER_USAGE` property can be set to `true` to log a warning message instead of throwing the exception.

      Throws:
        `BuildException`