package org.nutz.mvc.adaptor.injector;
import java.util.Enumeration;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.nutz.castor.Castors;
import org.nutz.mvc.adaptor.ParamInjector;
public class ReqHeaderInjector implements ParamInjector {
private String name;
private Class<?> type;
public ReqHeaderInjector(String name, Class<?> type) {
this.name = name;
this.type = type;
}
@SuppressWarnings("unchecked")
public Object get(ServletContext sc,
HttpServletRequest req,
HttpServletResponse resp,
Object refer) {
if ("_map".equals(name)) {
Map<String, String> headers = new LinkedHashMap<String, String>();
Enumeration<String> names = req.getHeaderNames();
while (names.hasMoreElements()) {
String name = (String) names.nextElement();
headers.put(name, req.getHeader(name));
}
return headers;
}
String val = req.getHeader(name);
if (val == null)
return null;
return Castors.me().castTo(val, type);
}
}