/** * Author: Christoph Hillebold <c.hillebold@student.tugraz.at> */ package at.iaik.suraq.util; import java.io.Serializable; import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Set; public class ImmutableHashMap<E, V> implements Map<E, V>, Serializable { /** * */ private static final long serialVersionUID = 1L; protected final HashMap<E, V> internalMap; public ImmutableHashMap(Map<E, V> map) { internalMap = new HashMap<E, V>(map); } @Override @Deprecated public void clear() { throw new UnsupportedOperationException("clear on immutable map"); } @Override public boolean containsKey(Object key) { return internalMap.containsKey(key); } @Override public boolean containsValue(Object value) { return internalMap.containsValue(value); } @Override public Set<Entry<E, V>> entrySet() { return ImmutableSet.create((internalMap.entrySet())); } @Override public V get(Object key) { return internalMap.get(key); } @Override public boolean isEmpty() { return internalMap.isEmpty(); } @Override public Set<E> keySet() { return ImmutableSet.create(internalMap.keySet()); } @Override @Deprecated public V put(Object key, Object value) { throw new UnsupportedOperationException("put on immutable map"); } @Override @Deprecated public void putAll(@SuppressWarnings("rawtypes") Map m) { throw new UnsupportedOperationException("putAll on immutable map"); } @Override @Deprecated public V remove(Object key) { throw new UnsupportedOperationException("remove on immutable map"); } @Override public int size() { return internalMap.size(); } @Override public Collection<V> values() { return new ImmutableArrayList<V>(internalMap.values()); } }