package org.nutz.mvc.adaptor.extractor;
import java.util.Collection;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import org.nutz.lang.Lang;
import org.nutz.mvc.adaptor.ParamExtractor;
/**
* refer为map时的提取器
*
* @author juqkai(juqkai@gmail.com)
*
*/
public class MapParamExtractor implements ParamExtractor {
private HttpServletRequest req;
private Map<String, Object> map;
public MapParamExtractor(HttpServletRequest req, Map<String, Object> refer) {
this.req = req;
this.map = refer;
}
public String[] extractor(String name) {
if (null != map && map.containsKey(name)) {
Object obj = map.get(name);
if (obj instanceof String[])
return (String[]) obj;
if (obj == null)
return null;
return new String[]{obj.toString()};
}
if (req == null)
return null;
return req.getParameterValues(name);
}
public Set<String> keys() {
Set<String> ss = new HashSet<String>();
ss.addAll(map.keySet());
if (req != null)
ss.addAll((Collection<? extends String>) Lang.enum2collection(req.getParameterNames(),
new HashSet<String>()));
return ss;
}
}