/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package java.security; /** * Represents the Service Provider Interface (SPI) for java.security.Policy * class. * * <p>If there is any class that wants to provide a Policy implementation, all * abstract methods in this SPI should be implemented. * * <p>The detailed implementations should offer a public constructor, in which a * Policy.Paramters implementation acts as an input parameter.If the * Policy.Paramters input cannot by understood by the constructor, an * IllegalArgumentException will be thrown. */ public abstract class PolicySpi { public PolicySpi() { // default constructor } /** * Answers if the policy has granted a Permission to a * ProtectionDomain. * * @param domain - * the domain to check. * @param permission - * check whether this permission is granted to the specified * domain. * @return - true if the permission is granted to the domain. * */ protected abstract boolean engineImplies(ProtectionDomain domain, Permission permission); /** * 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. * */ protected void engineRefresh() { // do nothing in default implementation } /** * Answers 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. * * @param codesource - * the CodeSource to which the returned PermissionCollection has * been granted. * @return 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. */ protected PermissionCollection engineGetPermissions(CodeSource codesource) { return Policy.UNSUPPORTED_EMPTY_COLLECTION; } /** * Answers 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. * * @param domain - * the ProtectionDomain to which the returned * PermissionCollection has been granted. * @return 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. */ protected PermissionCollection engineGetPermissions(ProtectionDomain domain) { return Policy.UNSUPPORTED_EMPTY_COLLECTION; } }