gcube-geonetwork-connector/src/main/java/org/gcube/data/access/connector/ServletRequestWrapper.java

80 lines
2.2 KiB
Java

package org.gcube.data.access.connector;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
public class ServletRequestWrapper extends HttpServletRequestWrapper {
private Map<String, String> headerMap;
private Map<String, String> paramsMap;
public ServletRequestWrapper(HttpServletRequest request) {
super(request);
headerMap = new HashMap<String, String>();
paramsMap = new HashMap<String, String>();
}
public void addHeader(String name, String value) {
headerMap.put(name, new String(value));
}
public Enumeration<String> getHeaderNames() {
HttpServletRequest request = (HttpServletRequest) getRequest();
List<String> list = new ArrayList<String>();
for (Enumeration<String> e = request.getHeaderNames(); e.hasMoreElements();) {
String header = e.nextElement().toString();
list.add(header);
}
for (Iterator<String> i = headerMap.keySet().iterator(); i.hasNext();) {
list.add(i.next());
}
return Collections.enumeration(list);
}
public String getHeader(String name) {
Object value;
if ((value = headerMap.get("" + name)) != null) {
return value.toString();
} else {
return ((HttpServletRequest) getRequest()).getHeader(name);
}
}
@Override
public Enumeration<String> getHeaders(String name) {
Enumeration<String> e = super.getHeaders(name);
if (e != null && e.hasMoreElements()) {
return e;
} else {
List<String> l = new ArrayList<String>();
if (headerMap.get(name) != null) {
l.add(headerMap.get(name));
}
return Collections.enumeration(l);
}
}
public void addParameter(String name, String value) {
paramsMap.put(name, value);
}
public String getParameter(String name) {
// if we added one, return that one
if (paramsMap.get(name) != null) {
return paramsMap.get(name);
}
// otherwise return what's in the original request
HttpServletRequest req = (HttpServletRequest) super.getRequest();
return req.getParameter(name);
}
}