001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017:
018: package org.apache.catalina;
019:
020: import java.util.Iterator;
021:
022: /**
023: * <p>Abstract representation of a database of {@link User}s and
024: * {@link Group}s that can be maintained by an application,
025: * along with definitions of corresponding {@link Role}s, and
026: * referenced by a {@link Realm} for authentication and access control.</p>
027: *
028: * @author Craig R. McClanahan
029: * @version $Revision: 467222 $ $Date: 2006-10-24 05:17:11 +0200 (mar., 24 oct. 2006) $
030: * @since 4.1
031: */
032:
033: public interface UserDatabase {
034:
035: // ------------------------------------------------------------- Properties
036:
037: /**
038: * Return the set of {@link Group}s defined in this user database.
039: */
040: public Iterator getGroups();
041:
042: /**
043: * Return the unique global identifier of this user database.
044: */
045: public String getId();
046:
047: /**
048: * Return the set of {@link Role}s defined in this user database.
049: */
050: public Iterator getRoles();
051:
052: /**
053: * Return the set of {@link User}s defined in this user database.
054: */
055: public Iterator getUsers();
056:
057: // --------------------------------------------------------- Public Methods
058:
059: /**
060: * Finalize access to this user database.
061: *
062: * @exception Exception if any exception is thrown during closing
063: */
064: public void close() throws Exception;
065:
066: /**
067: * Create and return a new {@link Group} defined in this user database.
068: *
069: * @param groupname The group name of the new group (must be unique)
070: * @param description The description of this group
071: */
072: public Group createGroup(String groupname, String description);
073:
074: /**
075: * Create and return a new {@link Role} defined in this user database.
076: *
077: * @param rolename The role name of the new role (must be unique)
078: * @param description The description of this role
079: */
080: public Role createRole(String rolename, String description);
081:
082: /**
083: * Create and return a new {@link User} defined in this user database.
084: *
085: * @param username The logon username of the new user (must be unique)
086: * @param password The logon password of the new user
087: * @param fullName The full name of the new user
088: */
089: public User createUser(String username, String password,
090: String fullName);
091:
092: /**
093: * Return the {@link Group} with the specified group name, if any;
094: * otherwise return <code>null</code>.
095: *
096: * @param groupname Name of the group to return
097: */
098: public Group findGroup(String groupname);
099:
100: /**
101: * Return the {@link Role} with the specified role name, if any;
102: * otherwise return <code>null</code>.
103: *
104: * @param rolename Name of the role to return
105: */
106: public Role findRole(String rolename);
107:
108: /**
109: * Return the {@link User} with the specified user name, if any;
110: * otherwise return <code>null</code>.
111: *
112: * @param username Name of the user to return
113: */
114: public User findUser(String username);
115:
116: /**
117: * Initialize access to this user database.
118: *
119: * @exception Exception if any exception is thrown during opening
120: */
121: public void open() throws Exception;
122:
123: /**
124: * Remove the specified {@link Group} from this user database.
125: *
126: * @param group The group to be removed
127: */
128: public void removeGroup(Group group);
129:
130: /**
131: * Remove the specified {@link Role} from this user database.
132: *
133: * @param role The role to be removed
134: */
135: public void removeRole(Role role);
136:
137: /**
138: * Remove the specified {@link User} from this user database.
139: *
140: * @param user The user to be removed
141: */
142: public void removeUser(User user);
143:
144: /**
145: * Save any updated information to the persistent storage location for
146: * this user database.
147: *
148: * @exception Exception if any exception is thrown during saving
149: */
150: public void save() throws Exception;
151:
152: }
|