package org.etk.core.rest.impl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.ws.rs.core.MultivaluedMap;
public final class OutputHeadersMap extends HashMap<String, List<Object>> implements MultivaluedMap<String, Object> {
/**
* Generated by Eclipse.
*/
private static final long serialVersionUID = 7932373258809348405L;
/**
* Default constructor.
*/
public OutputHeadersMap() {
}
// MultivaluedMap
/**
* {@inheritDoc}
*/
public void add(String key, Object value) {
if (value == null)
return;
List<Object> l = getList(key);
l.add(value);
}
/**
* {@inheritDoc}
*/
public Object getFirst(String key) {
List<Object> l = get(key);
return l != null && l.size() > 0 ? l.get(0) : null;
}
/**
* {@inheritDoc}
*/
public void putSingle(String key, Object value) {
if (value == null)
return;
List<Object> l = getList(key);
l.clear();
l.add(value);
}
/**
* Get List with specified key. If List does not exist new one be created.
*
* @param key a key.
* @return List<Object>
*/
private List<Object> getList(String key) {
List<Object> l = get(key);
if (l == null) {
l = new ArrayList<Object>();
put(key, l);
}
return l;
}
// HashMap
/**
* {@inheritDoc}
*/
@Override
public boolean containsKey(Object key) {
if (key != null)
return super.containsKey(((String) key).toLowerCase());
return super.containsKey(key);
}
/**
* {@inheritDoc}
*/
@Override
public List<Object> get(Object key) {
if (key != null)
return super.get(((String) key).toLowerCase());
return super.get(key);
}
/**
* {@inheritDoc}
*/
@Override
public List<Object> put(String key, List<Object> value) {
if (key != null)
key = key.toLowerCase();
return super.put(key, value);
}
/**
* {@inheritDoc}
*/
@Override
public void putAll(Map<? extends String, ? extends List<Object>> t) {
for (Map.Entry<? extends String, ? extends List<Object>> e : t.entrySet())
put(e.getKey(), e.getValue());
}
/**
* {@inheritDoc}
*/
@Override
public List<Object> remove(Object key) {
if (key != null)
return super.remove(((String) key).toLowerCase());
return super.remove(key);
}
}