MapDelegatingToMultiValueStorage.java
package io.undertow.server;
import java.util.Collection;
import java.util.Map;
import java.util.Set;
@Deprecated
class MapDelegatingToMultiValueStorage<K, V> implements Map<K, V> {
private final MultiValueHashListStorage<K, V> target;
MapDelegatingToMultiValueStorage(MultiValueHashListStorage<K, V> target) {
super();
this.target = target;
}
@Override
public int size() {
// this wont be accurate
return target.size();
}
@Override
public boolean isEmpty() {
return target.isEmpty();
}
@Override
public boolean containsKey(Object key) {
return target.containsKey(key);
}
@Override
public boolean containsValue(Object value) {
return target.containsValue(value);
}
@Override
public V get(Object key) {
// this will roughly mimic it
Collection<V> lst = target.get((K) key);
if (lst != null && lst.size() > 0) {
return lst.iterator().next();
} else {
return null;
}
}
@Override
public V put(K key, V value) {
Collection<V> rems = target.removeAll(key);
target.put(key, value);
if (rems != null && rems.size() > 0) {
return rems.iterator().next();
} else {
return null;
}
}
@Override
public V remove(Object key) {
Collection<V> rems = target.removeAll(key);
if (rems != null && rems.size() > 0) {
return rems.iterator().next();
} else {
return null;
}
}
@Override
public void putAll(Map<? extends K, ? extends V> m) {
for(Entry<? extends K, ? extends V> vk:m.entrySet()) {
target.removeAll(vk.getKey());
}
for(Entry<? extends K, ? extends V> vk:m.entrySet()) {
target.put(vk.getKey(),vk.getValue());
}
}
@Override
public void clear() {
target.clear();
}
@Override
public Set<K> keySet() {
return target.keySet();
}
@Override
public Collection<V> values() {
throw new UnsupportedOperationException();
}
@Override
public Set<Entry<K, V>> entrySet() {
throw new RuntimeException();
}
}