001: /*
002: * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/users/AbstractGroup.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: import org.apache.catalina.UserDatabase;
070:
071: /**
072: * <p>Convenience base class for {@link Group} implementations.</p>
073: *
074: * @author Craig R. McClanahan
075: * @version $Revision: 1.4 $ $Date: 2002/02/10 08:06:20 $
076: * @since 4.1
077: */
078:
079: public abstract class AbstractGroup implements Group {
080:
081: // ----------------------------------------------------- Instance Variables
082:
083: /**
084: * The description of this group.
085: */
086: protected String description = null;
087:
088: /**
089: * The group name of this group.
090: */
091: protected String groupname = null;
092:
093: // ------------------------------------------------------------- Properties
094:
095: /**
096: * Return the description of this group.
097: */
098: public String getDescription() {
099:
100: return (this .description);
101:
102: }
103:
104: /**
105: * Set the description of this group.
106: *
107: * @param description The new description
108: */
109: public void setDescription(String description) {
110:
111: this .description = description;
112:
113: }
114:
115: /**
116: * Return the group name of this group, which must be unique
117: * within the scope of a {@link UserDatabase}.
118: */
119: public String getGroupname() {
120:
121: return (this .groupname);
122:
123: }
124:
125: /**
126: * Set the group name of this group, which must be unique
127: * within the scope of a {@link UserDatabase}.
128: *
129: * @param groupname The new group name
130: */
131: public void setGroupname(String groupname) {
132:
133: this .groupname = groupname;
134:
135: }
136:
137: /**
138: * Return the set of {@link Role}s assigned specifically to this group.
139: */
140: public abstract Iterator getRoles();
141:
142: /**
143: * Return the {@link UserDatabase} within which this Group is defined.
144: */
145: public abstract UserDatabase getUserDatabase();
146:
147: /**
148: * Return the set of {@link User}s that are members of this group.
149: */
150: public abstract Iterator getUsers();
151:
152: // --------------------------------------------------------- Public Methods
153:
154: /**
155: * Add a new {@link Role} to those assigned specifically to this group.
156: *
157: * @param role The new role
158: */
159: public abstract void addRole(Role role);
160:
161: /**
162: * Is this group specifically assigned the specified {@link Role}?
163: *
164: * @param role The role to check
165: */
166: public abstract boolean isInRole(Role role);
167:
168: /**
169: * Remove a {@link Role} from those assigned to this group.
170: *
171: * @param role The old role
172: */
173: public abstract void removeRole(Role role);
174:
175: /**
176: * Remove all {@link Role}s from those assigned to this group.
177: */
178: public abstract void removeRoles();
179:
180: // ------------------------------------------------------ Principal Methods
181:
182: /**
183: * Make the principal name the same as the group name.
184: */
185: public String getName() {
186:
187: return (getGroupname());
188:
189: }
190:
191: }
|