package org.apache.struts.beanaction.httpmap; import java.util.ArrayList; import java.util.Collection; import java.util.Enumeration; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; /** * <p/> * <p/> * Date: Mar 11, 2004 10:39:51 PM * * @author Clinton Begin */ public abstract class BaseHttpMap implements Map { public int size() { return keySet().size(); } public boolean isEmpty() { return keySet().size() == 0; } public boolean containsKey(Object key) { return keySet().contains(key); } public boolean containsValue(Object value) { return values().contains(value); } public Object get(Object key) { return getValue(key); } public Object put(Object key, Object value) { Object old = getValue(key); putValue(key, value); return old; } public Object remove(Object key) { Object old = getValue(key); removeValue(key); return old; } public void putAll(Map map) { Iterator i = map.keySet().iterator(); while (i.hasNext()) { Object key = i.next(); putValue(key, map.get(key)); } } public void clear() { Iterator i = keySet().iterator(); while (i.hasNext()) { removeValue(i.next()); } } public Set keySet() { Set keySet = new HashSet(); Enumeration names = getNames(); while (names.hasMoreElements()) { keySet.add(names.nextElement()); } return keySet; } public Collection values() { List list = new ArrayList(); Enumeration names = getNames(); while (names.hasMoreElements()) { list.add(getValue(names.nextElement())); } return list; } public Set entrySet() { return new HashSet(); } protected abstract Enumeration getNames(); protected abstract Object getValue(Object key); protected abstract void putValue(Object key, Object value); protected abstract void removeValue(Object key); }