package org.nutz.mvc.adaptor.injector;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.nutz.castor.Castors;
import org.nutz.mvc.adaptor.ParamInjector;
public class CookieInjector implements ParamInjector {
private String name;
private Class<?> type;
public CookieInjector(String name, Class<?> type) {
this.name = name;
this.type = type;
}
public Object get(ServletContext sc,
HttpServletRequest req,
HttpServletResponse resp,
Object refer) {
if ("_map".equals(name)) {
Map<String, String> cookies = new LinkedHashMap<String, String>();
for (Cookie cookie : req.getCookies()) {
cookies.put(cookie.getName(), cookie.getValue());
}
return cookies;
}
for (Cookie cookie : req.getCookies()) {
if (cookie.getName().equalsIgnoreCase(name))
return Castors.me().castTo(cookie.getValue(), type);
}
return null;
}
}