001: /*
002: * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/UserDatabase.java,v 1.3 2002/02/03 00:56:57 craigmcc Exp $
003: * $Revision: 1.3 $
004: * $Date: 2002/02/03 00:56:57 $
005: *
006: * ====================================================================
007: * The Apache Software License, Version 1.1
008: *
009: * Copyright (c) 2002 The Apache Software Foundation. All rights
010: * reserved.
011: *
012: * Redistribution and use in source and binary forms, with or without
013: * modification, are permitted provided that the following conditions
014: * are met:
015: *
016: * 1. Redistributions of source code must retain the above copyright
017: * notice, this list of conditions and the following disclaimer.
018: *
019: * 2. Redistributions in binary form must reproduce the above copyright
020: * notice, this list of conditions and the following disclaimer in
021: * the documentation and/or other materials provided with the
022: * distribution.
023: *
024: * 3. The end-user documentation included with the redistribution, if
025: * any, must include the following acknowlegement:
026: * "This product includes software developed by the
027: * Apache Software Foundation (http://www.apache.org/)."
028: * Alternately, this acknowlegement may appear in the software itself,
029: * if and wherever such third-party acknowlegements normally appear.
030: *
031: * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
032: * Foundation" must not be used to endorse or promote products derived
033: * from this software without prior written permission. For written
034: * permission, please contact apache@apache.org.
035: *
036: * 5. Products derived from this software may not be called "Apache"
037: * nor may "Apache" appear in their names without prior written
038: * permission of the Apache Group.
039: *
040: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
041: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
042: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
043: * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
044: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
045: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
046: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
047: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
048: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
049: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
050: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
051: * SUCH DAMAGE.
052: * ====================================================================
053: *
054: * This software consists of voluntary contributions made by many
055: * individuals on behalf of the Apache Software Foundation. For more
056: * information on the Apache Software Foundation, please see
057: * <http://www.apache.org/>.
058: *
059: * [Additional notices, if required by prior licensing conditions]
060: *
061: */
062:
063: package org.apache.catalina;
064:
065: import java.util.Iterator;
066:
067: /**
068: * <p>Abstract representation of a database of {@link User}s and
069: * {@link Group}s that can be maintained by an application,
070: * along with definitions of corresponding {@link Role}s, and
071: * referenced by a {@link Realm} for authentication and access control.</p>
072: *
073: * @author Craig R. McClanahan
074: * @version $Revision: 1.3 $ $Date: 2002/02/03 00:56:57 $
075: * @since 4.1
076: */
077:
078: public interface UserDatabase {
079:
080: // ------------------------------------------------------------- Properties
081:
082: /**
083: * Return the set of {@link Group}s defined in this user database.
084: */
085: public Iterator getGroups();
086:
087: /**
088: * Return the unique global identifier of this user database.
089: */
090: public String getId();
091:
092: /**
093: * Return the set of {@link Role}s defined in this user database.
094: */
095: public Iterator getRoles();
096:
097: /**
098: * Return the set of {@link User}s defined in this user database.
099: */
100: public Iterator getUsers();
101:
102: // --------------------------------------------------------- Public Methods
103:
104: /**
105: * Finalize access to this user database.
106: *
107: * @exception Exception if any exception is thrown during closing
108: */
109: public void close() throws Exception;
110:
111: /**
112: * Create and return a new {@link Group} defined in this user database.
113: *
114: * @param groupname The group name of the new group (must be unique)
115: * @param description The description of this group
116: */
117: public Group createGroup(String groupname, String description);
118:
119: /**
120: * Create and return a new {@link Role} defined in this user database.
121: *
122: * @param rolename The role name of the new role (must be unique)
123: * @param description The description of this role
124: */
125: public Role createRole(String rolename, String description);
126:
127: /**
128: * Create and return a new {@link User} defined in this user database.
129: *
130: * @param username The logon username of the new user (must be unique)
131: * @param password The logon password of the new user
132: * @param fullName The full name of the new user
133: */
134: public User createUser(String username, String password,
135: String fullName);
136:
137: /**
138: * Return the {@link Group} with the specified group name, if any;
139: * otherwise return <code>null</code>.
140: *
141: * @param groupname Name of the group to return
142: */
143: public Group findGroup(String groupname);
144:
145: /**
146: * Return the {@link Role} with the specified role name, if any;
147: * otherwise return <code>null</code>.
148: *
149: * @param rolename Name of the role to return
150: */
151: public Role findRole(String rolename);
152:
153: /**
154: * Return the {@link User} with the specified user name, if any;
155: * otherwise return <code>null</code>.
156: *
157: * @param username Name of the user to return
158: */
159: public User findUser(String username);
160:
161: /**
162: * Initialize access to this user database.
163: *
164: * @exception Exception if any exception is thrown during opening
165: */
166: public void open() throws Exception;
167:
168: /**
169: * Remove the specified {@link Group} from this user database.
170: *
171: * @param group The group to be removed
172: */
173: public void removeGroup(Group group);
174:
175: /**
176: * Remove the specified {@link Role} from this user database.
177: *
178: * @param role The role to be removed
179: */
180: public void removeRole(Role role);
181:
182: /**
183: * Remove the specified {@link User} from this user database.
184: *
185: * @param user The user to be removed
186: */
187: public void removeUser(User user);
188:
189: /**
190: * Save any updated information to the persistent storage location for
191: * this user database.
192: *
193: * @exception Exception if any exception is thrown during saving
194: */
195: public void save() throws Exception;
196:
197: }
|