001: /*
002: JSPWiki - a JSP-based WikiWiki clone.
003:
004: Copyright (C) 2001-2007 Janne Jalkanen (Janne.Jalkanen@iki.fi)
005:
006: This program is free software; you can redistribute it and/or modify
007: it under the terms of the GNU Lesser General Public License as published by
008: the Free Software Foundation; either version 2.1 of the License, or
009: (at your option) any later version.
010:
011: This program is distributed in the hope that it will be useful,
012: but WITHOUT ANY WARRANTY; without even the implied warranty of
013: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
014: GNU Lesser General Public License for more details.
015:
016: You should have received a copy of the GNU Lesser General Public License
017: along with this program; if not, write to the Free Software
018: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
019: */
020: package com.ecyrd.jspwiki.auth.acl;
021:
022: import java.security.Permission;
023: import java.security.Principal;
024: import java.util.Enumeration;
025:
026: /**
027: * <p>
028: * Represents one entry in an Access Control List (ACL).
029: * </p>
030: * <p>
031: * An ACL can be thought of as a data structure with multiple ACL entry objects.
032: * Each ACL entry object contains a set of positive page permissions associated
033: * with a particular principal. (A principal represents an entity such as an
034: * individual user, group, or role). Each principal can have at most one ACL
035: * entry; that is, multiple ACL entries are not allowed for any principal.
036: * </p>
037: * <p>
038: * This interface is functionally equivalent to the java.security.acl.AclEntry
039: * interface, minus negative permissions.
040: * </p>
041: * @see Acl
042: * @author Janne Jalkanen
043: * @author Andrew Jaquith
044: * @since 2.3
045: */
046: public interface AclEntry {
047:
048: /**
049: * Adds the specified permission to this ACL entry. The permission
050: * <em>must</em> be of type
051: * {@link com.ecyrd.jspwiki.auth.permissions.PagePermission}. Note: An entry
052: * can have multiple permissions.
053: * @param permission the permission to be associated with the principal in
054: * this entry
055: * @return <code>true</code> if the permission was added,
056: * <code>false</code> if the permission was
057: * already part of this entry's permission set, and <code>false</code> if
058: * the permission is not of type PagePermission
059: */
060: public boolean addPermission(Permission permission);
061:
062: /**
063: * Checks if the specified permission is part of the permission set in this
064: * entry.
065: * @param permission the permission to be checked for.
066: * @return true if the permission is part of the permission set in this entry,
067: * false otherwise.
068: */
069: public boolean checkPermission(Permission permission);
070:
071: /**
072: * Returns the principal for which permissions are granted by this
073: * ACL entry. Returns null if there is no principal set for this entry yet.
074: * @return the principal associated with this entry.
075: */
076: public Principal getPrincipal();
077:
078: /**
079: * Returns an enumeration of the permissions in this ACL entry.
080: * @return an enumeration of the permissions
081: */
082: public Enumeration permissions();
083:
084: /**
085: * Removes the specified permission from this ACL entry.
086: * @param permission the permission to be removed from this entry.
087: * @return true if the permission is removed, false if the permission was not
088: * part of this entry's permission set.
089: */
090: public boolean removePermission(Permission permission);
091:
092: /**
093: * Specifies the principal for which permissions are granted or denied by
094: * this ACL entry. If a principal was already set for this ACL entry, false
095: * is returned, otherwise true is returned.
096: * @param user the principal to be set for this entry
097: * @return true if the principal is set, false if there was already a
098: * principal set for this entry
099: */
100: public boolean setPrincipal(Principal user);
101:
102: /**
103: * Returns a string representation of the contents of this ACL entry.
104: * @return a string representation of the contents.
105: */
106: public String toString();
107: }
|