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.users;
019:
020: import java.util.Iterator;
021: import org.apache.catalina.Group;
022: import org.apache.catalina.Role;
023: import org.apache.catalina.User;
024:
025: /**
026: * <p>Convenience base class for {@link User} implementations.</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 abstract class AbstractUser implements User {
034:
035: // ----------------------------------------------------- Instance Variables
036:
037: /**
038: * The full name of this user.
039: */
040: protected String fullName = null;
041:
042: /**
043: * The logon password of this user.
044: */
045: protected String password = null;
046:
047: /**
048: * The logon username of this user.
049: */
050: protected String username = null;
051:
052: // ------------------------------------------------------------- Properties
053:
054: /**
055: * Return the full name of this user.
056: */
057: public String getFullName() {
058:
059: return (this .fullName);
060:
061: }
062:
063: /**
064: * Set the full name of this user.
065: *
066: * @param fullName The new full name
067: */
068: public void setFullName(String fullName) {
069:
070: this .fullName = fullName;
071:
072: }
073:
074: /**
075: * Return the set of {@link Group}s to which this user belongs.
076: */
077: public abstract Iterator getGroups();
078:
079: /**
080: * Return the logon password of this user, optionally prefixed with the
081: * identifier of an encoding scheme surrounded by curly braces, such as
082: * <code>{md5}xxxxx</code>.
083: */
084: public String getPassword() {
085:
086: return (this .password);
087:
088: }
089:
090: /**
091: * Set the logon password of this user, optionally prefixed with the
092: * identifier of an encoding scheme surrounded by curly braces, such as
093: * <code>{md5}xxxxx</code>.
094: *
095: * @param password The new logon password
096: */
097: public void setPassword(String password) {
098:
099: this .password = password;
100:
101: }
102:
103: /**
104: * Return the set of {@link Role}s assigned specifically to this user.
105: */
106: public abstract Iterator getRoles();
107:
108: /**
109: * Return the logon username of this user, which must be unique
110: * within the scope of a {@link org.apache.catalina.UserDatabase}.
111: */
112: public String getUsername() {
113:
114: return (this .username);
115:
116: }
117:
118: /**
119: * Set the logon username of this user, which must be unique within
120: * the scope of a {@link org.apache.catalina.UserDatabase}.
121: *
122: * @param username The new logon username
123: */
124: public void setUsername(String username) {
125:
126: this .username = username;
127:
128: }
129:
130: // --------------------------------------------------------- Public Methods
131:
132: /**
133: * Add a new {@link Group} to those this user belongs to.
134: *
135: * @param group The new group
136: */
137: public abstract void addGroup(Group group);
138:
139: /**
140: * Add a new {@link Role} to those assigned specifically to this user.
141: *
142: * @param role The new role
143: */
144: public abstract void addRole(Role role);
145:
146: /**
147: * Is this user in the specified {@link Group}?
148: *
149: * @param group The group to check
150: */
151: public abstract boolean isInGroup(Group group);
152:
153: /**
154: * Is this user specifically assigned the specified {@link Role}? This
155: * method does <strong>NOT</strong> check for roles inherited based on
156: * {@link Group} membership.
157: *
158: * @param role The role to check
159: */
160: public abstract boolean isInRole(Role role);
161:
162: /**
163: * Remove a {@link Group} from those this user belongs to.
164: *
165: * @param group The old group
166: */
167: public abstract void removeGroup(Group group);
168:
169: /**
170: * Remove all {@link Group}s from those this user belongs to.
171: */
172: public abstract void removeGroups();
173:
174: /**
175: * Remove a {@link Role} from those assigned to this user.
176: *
177: * @param role The old role
178: */
179: public abstract void removeRole(Role role);
180:
181: /**
182: * Remove all {@link Role}s from those assigned to this user.
183: */
184: public abstract void removeRoles();
185:
186: // ------------------------------------------------------ Principal Methods
187:
188: /**
189: * Make the principal name the same as the group name.
190: */
191: public String getName() {
192:
193: return (getUsername());
194:
195: }
196:
197: }
|