package ch.akuhn.values; import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Set; public class MapValue<K, V> extends ReferenceValue<Map<K, V>> implements Map<K, V> { public MapValue() { this(new HashMap<K, V>()); } protected MapValue(Map<K, V> map) { this.value = map; } @Override public void clear() { if (value.isEmpty()) return; value.clear(); changed(); } @Override public boolean containsKey(Object key) { return value.containsKey(key); } @Override public boolean containsValue(Object value) { return this.value.containsValue(value); } @Override public Set<java.util.Map.Entry<K, V>> entrySet() { return value.entrySet(); } @Override public V get(Object key) { return value.get(key); } @Override public boolean isEmpty() { return value.isEmpty(); } @Override public Set<K> keySet() { return value.keySet(); } @Override public V put(K key, V value) { V oldValue = this.value.put(key, value); changed(); return oldValue; } @Override public void putAll(Map<? extends K, ? extends V> map) { value.putAll(map); changed(); } @Override public V remove(Object key) { V removed = value.remove(key); changed(); return removed; } @Override public int size() { return value.size(); } @Override public Collection<V> values() { return value.values(); } }