/* Wotonomy: OpenStep design patterns for pure Java applications. Copyright (C) 2000 Blacksmith, Inc. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, see http://www.gnu.org */ package net.wotonomy.foundation; import java.util.Enumeration; import java.util.Map; /** * A pure java implementation of NSMutableDictionary that implements Map for * greater java interoperability. * * @author michael@mpowers.net * @author $Author: cgruber $ * @version $Revision: 893 $ */ public class NSMutableDictionary extends NSDictionary { private static final long serialVersionUID = -150787274911739812L; /** * Default constructor produces an empty dictionary. */ public NSMutableDictionary() { super(); } /** * Default constructor produces an empty dictionary. */ public NSMutableDictionary(int initialSize) { super(initialSize); } /** * Produces a dictionary that contains one key referencing one value. */ public NSMutableDictionary(K key, V value) { super(key, value); } /** * Produces a dictionary containing the specified keys and values. An * IllegalArgumentException is thrown if the arrays are not of the same length. */ public NSMutableDictionary(K[] keys, V[] values) { super(values, keys); } /** * Produces a dictionary that is a copy of the specified map (or dictionary). */ public NSMutableDictionary(Map aMap) { super(aMap); } /** * Removes the key-value pair for the specified key. */ public void removeObjectForKey(K aKey) { remove(aKey); } /** * Copies all mappings from the specified dictionary to this dictionary, * replacing any mappings this map had for any keys in the specified map. */ public void addEntriesFromDictionary(Map aMap) { putAll(aMap); } /** * Removes all mappings from this dictionary. */ public void removeAllObjects() { clear(); } /** * Removes all keys in the specified array from this dictionary. */ public void removeObjectsForKeys(NSArray anArray) { Enumeration enumeration = anArray.objectEnumerator(); while (enumeration.hasMoreElements()) { removeObjectForKey(enumeration.nextElement()); } } /** * Clears all mappings in this dictionary and then adds all entries in the * specified dictionary. */ public void setDictionary(Map aMap) { removeAllObjects(); addEntriesFromDictionary(aMap); } /** * Sets the value for the specified key. If the key currently exists to the * dictionary, the old value is replaced with the specified value. An * IllegalArgumentException is thrown if either the key or value is null. */ public void setObjectForKey(V aValue, K aKey) { if ((aKey == null) || (aValue == null)) { throw new IllegalArgumentException("Cannot use null objects with an NSMutableDictionary."); } put(aKey, aValue); } } /* * $Log$ Revision 1.2 2006/02/16 13:15:00 cgruber Check in all sources in * eclipse-friendly maven-enabled packages. * * Revision 1.4 2005/05/11 15:21:53 cgruber Change enum to enumeration, since * enum is now a keyword as of Java 5.0 * * A few other comments in the code. * * Revision 1.3 2002/06/30 17:16:26 mpowers Added new constructor taking an int: * thanks cgruber. * * * Revision 1.2 2001/02/23 23:43:41 mpowers Removed ill-advised this. * * Revision 1.1.1.1 2000/12/21 15:47:34 mpowers Contributing wotonomy. * * Revision 1.3 2000/12/20 16:25:38 michael Added log to all files. * * */