001: /*
002: * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/util/ResourceSet.java,v 1.2 2001/04/25 20:30:37 craigmcc Exp $
003: * $Revision: 1.2 $
004: * $Date: 2001/04/25 20:30:37 $
005: *
006: * ====================================================================
007: *
008: * The Apache Software License, Version 1.1
009: *
010: * Copyright (c) 1999 The Apache Software Foundation. All rights
011: * reserved.
012: *
013: * Redistribution and use in source and binary forms, with or without
014: * modification, are permitted provided that the following conditions
015: * are met:
016: *
017: * 1. Redistributions of source code must retain the above copyright
018: * notice, this list of conditions and the following disclaimer.
019: *
020: * 2. Redistributions in binary form must reproduce the above copyright
021: * notice, this list of conditions and the following disclaimer in
022: * the documentation and/or other materials provided with the
023: * distribution.
024: *
025: * 3. The end-user documentation included with the redistribution, if
026: * any, must include the following acknowlegement:
027: * "This product includes software developed by the
028: * Apache Software Foundation (http://www.apache.org/)."
029: * Alternately, this acknowlegement may appear in the software itself,
030: * if and wherever such third-party acknowlegements normally appear.
031: *
032: * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
033: * Foundation" must not be used to endorse or promote products derived
034: * from this software without prior written permission. For written
035: * permission, please contact apache@apache.org.
036: *
037: * 5. Products derived from this software may not be called "Apache"
038: * nor may "Apache" appear in their names without prior written
039: * permission of the Apache Group.
040: *
041: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
042: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
043: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
044: * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
045: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
046: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
047: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
048: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
049: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
050: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
051: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
052: * SUCH DAMAGE.
053: * ====================================================================
054: *
055: * This software consists of voluntary contributions made by many
056: * individuals on behalf of the Apache Software Foundation. For more
057: * information on the Apache Software Foundation, please see
058: * <http://www.apache.org/>.
059: *
060: * [Additional notices, if required by prior licensing conditions]
061: *
062: */
063:
064: package org.apache.catalina.util;
065:
066: import java.util.Collection;
067: import java.util.HashSet;
068: import java.util.Set;
069:
070: /**
071: * Extended implementation of <strong>HashSet</strong> that includes a
072: * <code>locked</code> property. This class can be used to safely expose
073: * resource path sets to user classes without having to clone them in order
074: * to avoid modifications. When first created, a <code>ResourceMap</code>
075: * is not locked.
076: *
077: * @author Craig R. McClanahan
078: * @version $Revision: 1.2 $ $Date: 2001/04/25 20:30:37 $
079: */
080:
081: public final class ResourceSet extends HashSet {
082:
083: // ----------------------------------------------------------- Constructors
084:
085: /**
086: * Construct a new, empty set with the default initial capacity and
087: * load factor.
088: */
089: public ResourceSet() {
090:
091: super ();
092:
093: }
094:
095: /**
096: * Construct a new, empty set with the specified initial capacity and
097: * default load factor.
098: *
099: * @param initialCapacity The initial capacity of this set
100: */
101: public ResourceSet(int initialCapacity) {
102:
103: super (initialCapacity);
104:
105: }
106:
107: /**
108: * Construct a new, empty set with the specified initial capacity and
109: * load factor.
110: *
111: * @param initialCapacity The initial capacity of this set
112: * @param loadFactor The load factor of this set
113: */
114: public ResourceSet(int initialCapacity, float loadFactor) {
115:
116: super (initialCapacity, loadFactor);
117:
118: }
119:
120: /**
121: * Construct a new set with the same contents as the existing collection.
122: *
123: * @param coll The collection whose contents we should copy
124: */
125: public ResourceSet(Collection coll) {
126:
127: super (coll);
128:
129: }
130:
131: // ------------------------------------------------------------- Properties
132:
133: /**
134: * The current lock state of this parameter map.
135: */
136: private boolean locked = false;
137:
138: /**
139: * Return the locked state of this parameter map.
140: */
141: public boolean isLocked() {
142:
143: return (this .locked);
144:
145: }
146:
147: /**
148: * Set the locked state of this parameter map.
149: *
150: * @param locked The new locked state
151: */
152: public void setLocked(boolean locked) {
153:
154: this .locked = locked;
155:
156: }
157:
158: /**
159: * The string manager for this package.
160: */
161: private static final StringManager sm = StringManager
162: .getManager("org.apache.catalina.util");
163:
164: // --------------------------------------------------------- Public Methods
165:
166: /**
167: * Add the specified element to this set if it is not already present.
168: * Return <code>true</code> if the element was added.
169: *
170: * @param o The object to be added
171: *
172: * @exception IllegalStateException if this ResourceSet is locked
173: */
174: public boolean add(Object o) {
175:
176: if (locked)
177: throw new IllegalStateException(sm
178: .getString("resourceSet.locked"));
179: return (super .add(o));
180:
181: }
182:
183: /**
184: * Remove all of the elements from this set.
185: *
186: * @exception IllegalStateException if this ResourceSet is locked
187: */
188: public void clear() {
189:
190: if (locked)
191: throw new IllegalStateException(sm
192: .getString("resourceSet.locked"));
193: super .clear();
194:
195: }
196:
197: /**
198: * Remove the given element from this set if it is present.
199: * Return <code>true</code> if the element was removed.
200: *
201: * @param o The object to be removed
202: *
203: * @exception IllegalStateException if this ResourceSet is locked
204: */
205: public boolean remove(Object o) {
206:
207: if (locked)
208: throw new IllegalStateException(sm
209: .getString("resourceSet.locked"));
210: return (super.remove(o));
211:
212: }
213:
214: }
|