001: /*
002: * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/users/AbstractUser.java,v 1.4 2002/02/10 08:06:20 craigmcc Exp $
003: * $Revision: 1.4 $
004: * $Date: 2002/02/10 08:06:20 $
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.users;
064:
065: import java.util.Iterator;
066: import org.apache.catalina.Group;
067: import org.apache.catalina.Role;
068: import org.apache.catalina.User;
069:
070: /**
071: * <p>Convenience base class for {@link User} implementations.</p>
072: *
073: * @author Craig R. McClanahan
074: * @version $Revision: 1.4 $ $Date: 2002/02/10 08:06:20 $
075: * @since 4.1
076: */
077:
078: public abstract class AbstractUser implements User {
079:
080: // ----------------------------------------------------- Instance Variables
081:
082: /**
083: * The full name of this user.
084: */
085: protected String fullName = null;
086:
087: /**
088: * The logon password of this user.
089: */
090: protected String password = null;
091:
092: /**
093: * The logon username of this user.
094: */
095: protected String username = null;
096:
097: // ------------------------------------------------------------- Properties
098:
099: /**
100: * Return the full name of this user.
101: */
102: public String getFullName() {
103:
104: return (this .fullName);
105:
106: }
107:
108: /**
109: * Set the full name of this user.
110: *
111: * @param fullName The new full name
112: */
113: public void setFullName(String fullName) {
114:
115: this .fullName = fullName;
116:
117: }
118:
119: /**
120: * Return the set of {@link Group}s to which this user belongs.
121: */
122: public abstract Iterator getGroups();
123:
124: /**
125: * Return the logon password of this user, optionally prefixed with the
126: * identifier of an encoding scheme surrounded by curly braces, such as
127: * <code>{md5}xxxxx</code>.
128: */
129: public String getPassword() {
130:
131: return (this .password);
132:
133: }
134:
135: /**
136: * Set the logon password of this user, optionally prefixed with the
137: * identifier of an encoding scheme surrounded by curly braces, such as
138: * <code>{md5}xxxxx</code>.
139: *
140: * @param password The new logon password
141: */
142: public void setPassword(String password) {
143:
144: this .password = password;
145:
146: }
147:
148: /**
149: * Return the set of {@link Role}s assigned specifically to this user.
150: */
151: public abstract Iterator getRoles();
152:
153: /**
154: * Return the logon username of this user, which must be unique
155: * within the scope of a {@link UserDatabase}.
156: */
157: public String getUsername() {
158:
159: return (this .username);
160:
161: }
162:
163: /**
164: * Set the logon username of this user, which must be unique within
165: * the scope of a {@link UserDatabase}.
166: *
167: * @param username The new logon username
168: */
169: public void setUsername(String username) {
170:
171: this .username = username;
172:
173: }
174:
175: // --------------------------------------------------------- Public Methods
176:
177: /**
178: * Add a new {@link Group} to those this user belongs to.
179: *
180: * @param group The new group
181: */
182: public abstract void addGroup(Group group);
183:
184: /**
185: * Add a new {@link Role} to those assigned specifically to this user.
186: *
187: * @param role The new role
188: */
189: public abstract void addRole(Role role);
190:
191: /**
192: * Is this user in the specified {@link Group}?
193: *
194: * @param group The group to check
195: */
196: public abstract boolean isInGroup(Group group);
197:
198: /**
199: * Is this user specifically assigned the specified {@link Role}? This
200: * method does <strong>NOT</strong> check for roles inherited based on
201: * {@link Group} membership.
202: *
203: * @param role The role to check
204: */
205: public abstract boolean isInRole(Role role);
206:
207: /**
208: * Remove a {@link Group} from those this user belongs to.
209: *
210: * @param group The old group
211: */
212: public abstract void removeGroup(Group group);
213:
214: /**
215: * Remove all {@link Group}s from those this user belongs to.
216: */
217: public abstract void removeGroups();
218:
219: /**
220: * Remove a {@link Role} from those assigned to this user.
221: *
222: * @param role The old role
223: */
224: public abstract void removeRole(Role role);
225:
226: /**
227: * Remove all {@link Role}s from those assigned to this user.
228: */
229: public abstract void removeRoles();
230:
231: // ------------------------------------------------------ Principal Methods
232:
233: /**
234: * Make the principal name the same as the group name.
235: */
236: public String getName() {
237:
238: return (getUsername());
239:
240: }
241:
242: }
|