1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership. 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License. You may obtain a copy of the License at 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage java.security.acl; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Principal; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Enumeration; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The <i>Access Control List Entry</i> interface definition. 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> 26f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * An {@code AclEntry} is a list of the {@link Permission}s that are 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * granted (<i>positive</i>) or denied (<i>negative</i>) to a {@link Principal}. 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic interface AclEntry extends Cloneable { 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Set the principal for this ACL entry. 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The principal for an ACL entry can only be set once. 352f9e468ed4985edfd5e351faf2089d91e561e41dElliott Hughes * 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param user 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the principal for this ACL entry. 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return {@code true} on success, {@code false} if there is a principal already set for 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this entry. 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean setPrincipal(Principal user); 42f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the principal of this ACL entry. 45f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the principal of this ACL entry, or null if none is set. 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Principal getPrincipal(); 49f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Sets this ACL entry to be <i>negative</i>. 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The permissions in this ACL entry will be denied to the principal 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * associated with this entry. 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <p> 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Note: An ACL entry is <i>positive</i> by default and can only become 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * <i>negative</i> by calling this method. 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project void setNegativePermissions(); 60f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns whether this ACL entry is <i>negative</i>. 63f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return {@code true} if this ACL entry is negative, {@code false} if it's positive. 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean isNegative(); 67f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Adds the specified permission to this ACL entry. 70f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param permission 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the permission to be added. 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return {@code true} if the specified permission is added, {@code false} if the 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * permission was already in this entry. 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean addPermission(Permission permission); 77f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Removes the specified permission from this ACL entry. 80f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param permission 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the permission to be removed. 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return {@code true} if the permission is removed, {@code false} if the permission was 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * not in this entry. 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean removePermission(Permission permission); 87f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Checks whether the specified permission is in this ACL entry. 90f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param permission 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the permission to check. 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return {@code true} if the permission is in this entry, otherwise {@code false}. 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean checkPermission(Permission permission); 96f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the list of permissions of this ACL entry. 99f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the list of permissions of this ACL entry, 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Enumeration<Permission> permissions(); 103f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the string representation of this ACL entry. 106f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the string representation of this ACL entry. 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String toString(); 110f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Clones this ACL entry instance. 113f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return a copy of this entry. 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Object clone(); 117f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 119