# Class Policy

java.lang.Object
java.security.Policy

@Deprecated(since="17", forRemoval=true) public abstract class Policy extends Object
Deprecated, for removal: This API element is subject to removal in a future version.
This class was only useful in conjunction with the Security Manager, which is no longer supported. Installing a system-wide `Policy` object is no longer supported. The setPolicy method has been changed to always throw `UnsupportedOperationException`. The getPolicy method has been changed to always return a `Policy` object that grants no permissions. There is no replacement for the Security Manager or this class.
A `Policy` object was responsible for determining whether code executing in the Java runtime environment had permission to perform a security-sensitive operation. This feature no longer exists.

Since:
  1.2

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static interface`
  `Policy.Parameters`
  Deprecated, for removal: This API element is subject to removal in a future version.
  This class was only useful in conjunction with the Security Manager, which is no longer supported.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final PermissionCollection`
  `UNSUPPORTED_EMPTY_COLLECTION`
  Deprecated, for removal: This API element is subject to removal in a future version.
  A read-only empty PermissionCollection instance.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Policy()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Constructor for subclasses to call.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static Policy`
  `getInstance(String type, Policy.Parameters params)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Returns a Policy object of the specified type.
  `static Policy`
  `getInstance(String type, Policy.Parameters params, String provider)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Returns a `Policy` object of the specified type.
  `static Policy`
  `getInstance(String type, Policy.Parameters params, Provider provider)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Returns a `Policy` object of the specified type.
  `Policy.Parameters`
  `getParameters()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Return `Policy` parameters.
  `PermissionCollection`
  `getPermissions(CodeSource codesource)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Return a PermissionCollection object containing the set of permissions granted to the specified CodeSource.
  `PermissionCollection`
  `getPermissions(ProtectionDomain domain)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Return a PermissionCollection object containing the set of permissions granted to the specified ProtectionDomain.
  `static Policy`
  `getPolicy()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Returns a `Policy` object that grants no permissions.
  `Provider`
  `getProvider()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Return the `Provider` of this policy.
  `String`
  `getType()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Return the type of this `Policy`.
  `boolean`
  `implies(ProtectionDomain domain, Permission permission)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Evaluates the permissions granted to the ProtectionDomain and tests whether the permission is granted.
  `void`
  `refresh()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Refreshes/reloads the policy configuration.
  `static void`
  `setPolicy(Policy p)`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Throws `UnsupportedOperationException`.

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  Creates and returns a copy of this object.
  `boolean`
  `equals(Object obj)`
  Indicates whether some other object is "equal to" this one.
  `protected void`
  `finalize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Finalization is deprecated and subject to removal in a future release.
  `final Class<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `int`
  `hashCode()`
  Returns a hash code value for this object.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `String`
  `toString()`
  Returns a string representation of the object.
  `final void`
  `wait()`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
  `final void`
  `wait(long timeoutMillis)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  `final void`
  `wait(long timeoutMillis, int nanos)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

- ## Field Details

  - ### UNSUPPORTED_EMPTY_COLLECTION

    public static final PermissionCollection UNSUPPORTED_EMPTY_COLLECTION
    Deprecated, for removal: This API element is subject to removal in a future version.
    A read-only empty PermissionCollection instance.
    Since:
      1.6

- ## Constructor Details

  - ### Policy

    public Policy()
    Deprecated, for removal: This API element is subject to removal in a future version.
    Constructor for subclasses to call.

- ## Method Details

  - ### getPolicy

    public static Policy getPolicy()
    Deprecated, for removal: This API element is subject to removal in a future version.
    Returns a `Policy` object that grants no permissions. Specifically:
    - The `getParameters` method returns `null`.
    - The `getPermissions(CodeSource)` and `getPermissions(ProtectionDomain)` methods return a read-only empty `PermissionCollection`.
    - The `implies` method always returns `false`.
    API Note:
      This method originally returned the installed `Policy` object, or if no `Policy` object had been installed, a default `Policy` implementation. Installing a system-wide `Policy` object is no longer supported. This method always returns a default `Policy` object that grants no permissions. A `Policy` object was only useful in conjunction with the Security Manager, which is no longer supported. There is no replacement for this method.
    Returns:
      a `Policy` object that grants no permissions
    See Also:
      - `setPolicy(java.security.Policy)`

  - ### setPolicy

    public static void setPolicy(Policy p)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Throws `UnsupportedOperationException`. Setting a system-wide `Policy` object is not supported.
    API Note:
      This method originally installed the system-wide `Policy` object. Installing a system-wide `Policy` object is no longer supported. A `Policy` object was only useful in conjunction with the Security Manager, which is no longer supported. There is no replacement for this method.
    Parameters:
      `p` - ignored
    Throws:
      `UnsupportedOperationException` - always
    See Also:
      - `getPolicy()`

  - ### getInstance

    public static Policy getInstance(String type, Policy.Parameters params) throws NoSuchAlgorithmException
    Deprecated, for removal: This API element is subject to removal in a future version.
    Returns a Policy object of the specified type.

    This method traverses the list of registered security providers, starting with the most preferred provider. A new `Policy` object encapsulating the `PolicySpi` implementation from the first provider that supports the specified type is returned.

    Note that the list of registered providers may be retrieved via the `Security.getProviders()` method.

    Implementation Note:
      The JDK Reference Implementation additionally uses the `jdk.security.provider.preferred` `Security` property to determine the preferred provider order for the specified algorithm. This may be different than the order of providers returned by `Security.getProviders()`.
    Parameters:
      `type` - the specified Policy type
      `params` - parameters for the `Policy`, which may be `null`.
    Returns:
      the new `Policy` object
    Throws:
      `IllegalArgumentException` - if the specified parameters are not understood by the `PolicySpi` implementation from the selected `Provider`
      `NoSuchAlgorithmException` - if no `Provider` supports a `PolicySpi` implementation for the specified type
      `NullPointerException` - if `type` is `null`
    Since:
      1.6
    See Also:
      - `Provider`

  - ### getInstance

    public static Policy getInstance(String type, Policy.Parameters params, String provider) throws NoSuchProviderException, NoSuchAlgorithmException
    Deprecated, for removal: This API element is subject to removal in a future version.
    Returns a `Policy` object of the specified type.

    A new `Policy` object encapsulating the `PolicySpi` implementation from the specified provider is returned. The specified provider must be registered in the provider list.

    Note that the list of registered providers may be retrieved via the `Security.getProviders()` method.

    Parameters:
      `type` - the specified Policy type
      `params` - parameters for the `Policy`, which may be `null`.
      `provider` - the provider.
    Returns:
      the new `Policy` object
    Throws:
      `IllegalArgumentException` - if the specified provider is `null` or empty, or if the specified parameters are not understood by the `PolicySpi` implementation from the specified provider
      `NoSuchAlgorithmException` - if the specified provider does not support a `PolicySpi` implementation for the specified type
      `NoSuchProviderException` - if the specified provider is not registered in the security provider list
      `NullPointerException` - if `type` is `null`
    Since:
      1.6
    See Also:
      - `Provider`

  - ### getInstance

    public static Policy getInstance(String type, Policy.Parameters params, Provider provider) throws NoSuchAlgorithmException
    Deprecated, for removal: This API element is subject to removal in a future version.
    Returns a `Policy` object of the specified type.

    A new `Policy` object encapsulating the `PolicySpi` implementation from the specified provider is returned. Note that the specified provider does not have to be registered in the provider list.

    Parameters:
      `type` - the specified Policy type
      `params` - parameters for the `Policy`, which may be `null`.
      `provider` - the `Provider`.
    Returns:
      the new `Policy` object
    Throws:
      `IllegalArgumentException` - if the specified `Provider` is `null`, or if the specified parameters are not understood by the `PolicySpi` implementation from the specified `Provider`
      `NoSuchAlgorithmException` - if the specified `Provider` does not support a `PolicySpi` implementation for the specified type
      `NullPointerException` - if `type` is `null`
    Since:
      1.6
    See Also:
      - `Provider`

  - ### getProvider

    public Provider getProvider()
    Deprecated, for removal: This API element is subject to removal in a future version.
    Return the `Provider` of this policy.

    This `Policy` instance will only have a provider if it was obtained via a call to `Policy.getInstance`. Otherwise this method returns `null`.

    Returns:
      the `Provider` of this policy, or `null`.
    Since:
      1.6

  - ### getType

    public String getType()
    Deprecated, for removal: This API element is subject to removal in a future version.
    Return the type of this `Policy`.

    This `Policy` instance will only have a type if it was obtained via a call to `Policy.getInstance`. Otherwise this method returns `null`.

    Returns:
      the type of this `Policy`, or `null`.
    Since:
      1.6

  - ### getParameters

    public Policy.Parameters getParameters()
    Deprecated, for removal: This API element is subject to removal in a future version.
    Return `Policy` parameters.

    This `Policy` instance will only have parameters if it was obtained via a call to `Policy.getInstance`. Otherwise this method returns `null`.

    Returns:
      `Policy` parameters, or `null`.
    Since:
      1.6

  - ### getPermissions

    public PermissionCollection getPermissions(CodeSource codesource)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Return a PermissionCollection object containing the set of permissions granted to the specified CodeSource.

    The default implementation of this method ignores the CodeSource and returns Policy.UNSUPPORTED_EMPTY_COLLECTION.

    Parameters:
      `codesource` - ignored
    Returns:
      a set of permissions granted to the specified CodeSource. If this operation is supported, the returned set of permissions must be a new mutable instance and it must support heterogeneous Permission types. If this operation is not supported, Policy.UNSUPPORTED_EMPTY_COLLECTION is returned.

  - ### getPermissions

    public PermissionCollection getPermissions(ProtectionDomain domain)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Return a PermissionCollection object containing the set of permissions granted to the specified ProtectionDomain.

    The default implementation of this method ignores the ProtectionDomain and returns Policy.UNSUPPORTED_EMPTY_COLLECTION.

    Parameters:
      `domain` - ignored
    Returns:
      a set of permissions granted to the specified ProtectionDomain. If this operation is supported, the returned set of permissions must be a new mutable instance and it must support heterogeneous Permission types. If this operation is not supported, Policy.UNSUPPORTED_EMPTY_COLLECTION is returned.
    Since:
      1.4

  - ### implies

    public boolean implies(ProtectionDomain domain, Permission permission)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Evaluates the permissions granted to the ProtectionDomain and tests whether the permission is granted.

    The default implementation of this method ignores the ProtectionDomain and Permission parameters and always returns false.

    Parameters:
      `domain` - ignored
      `permission` - ignored
    Returns:
      `false` always
    Since:
      1.4
    See Also:
      - `ProtectionDomain`

  - ### refresh

    public void refresh()
    Deprecated, for removal: This API element is subject to removal in a future version.
    Refreshes/reloads the policy configuration.

    The default implementation of this method does nothing.