PolicySpi (Java Platform SE 8 )
Keywords: java.security.PolicySpi class
Date: 2026-04-17

compact1, compact2, compact3
java.security

## Class PolicySpi

- java.lang.Object
- - java.security.PolicySpi

-     public abstract class PolicySpi
      extends Object

  This class defines the Service Provider Interface (SPI) for the `Policy` class. All the abstract methods in this class must be implemented by each service provider who wishes to supply a Policy implementation.

  Subclass implementations of this abstract class must provide a public constructor that takes a `Policy.Parameters` object as an input parameter. This constructor also must throw an IllegalArgumentException if it does not understand the `Policy.Parameters` input.

  Since:
    1.6

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `PolicySpi()`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected PermissionCollection` | `engineGetPermissions(CodeSource codesource)` Return a PermissionCollection object containing the set of permissions granted to the specified CodeSource.
    `protected PermissionCollection` | `engineGetPermissions(ProtectionDomain domain)` Return a PermissionCollection object containing the set of permissions granted to the specified ProtectionDomain.
    `protected abstract boolean` | `engineImplies(ProtectionDomain domain, Permission permission)` Check whether the policy has granted a Permission to a ProtectionDomain.
    `protected void` | `engineRefresh()` Refreshes/reloads the policy configuration.

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

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

- - ### Constructor Detail

    - #### PolicySpi

          public PolicySpi()

  - ### Method Detail

    - #### engineImplies

          protected abstract boolean engineImplies(ProtectionDomain domain,
                                                   Permission permission)

      Check whether the policy has granted a Permission to a ProtectionDomain.
      Parameters:
        `domain` - the ProtectionDomain to check.
        `permission` - check whether this permission is granted to the specified domain.
      Returns:
        boolean true if the permission is granted to the domain.

    - #### engineRefresh

          protected void engineRefresh()

      Refreshes/reloads the policy configuration. The behavior of this method depends on the implementation. For example, calling `refresh` on a file-based policy will cause the file to be re-read.

      The default implementation of this method does nothing. This method should be overridden if a refresh operation is supported by the policy implementation.

    - #### engineGetPermissions

          protected PermissionCollection engineGetPermissions(CodeSource codesource)

      Return a PermissionCollection object containing the set of permissions granted to the specified CodeSource.

      The default implementation of this method returns Policy.UNSUPPORTED_EMPTY_COLLECTION object. This method can be overridden if the policy implementation can return a set of permissions granted to a CodeSource.

      Parameters:
        `codesource` - the CodeSource to which the returned PermissionCollection has been granted.
      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.

    - #### engineGetPermissions

          protected PermissionCollection engineGetPermissions(ProtectionDomain domain)

      Return a PermissionCollection object containing the set of permissions granted to the specified ProtectionDomain.

      The default implementation of this method returns Policy.UNSUPPORTED_EMPTY_COLLECTION object. This method can be overridden if the policy implementation can return a set of permissions granted to a ProtectionDomain.

      Parameters:
        `domain` - the ProtectionDomain to which the returned PermissionCollection has been granted.
      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.

Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2026, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.