package fi.internetix.smvc.dispatcher;
import java.io.UnsupportedEncodingException;
import javax.servlet.http.HttpServletRequest;
public class DefaultParameterHandlerImpl implements ParameterHandler {
public DefaultParameterHandlerImpl(HttpServletRequest request, boolean decodeGETUtf) {
this.request = request;
this.decodeGETUtf = decodeGETUtf;
}
@Override
public String getParameter(String name) {
String value = request.getParameter(name);
if (decodableRequest())
value = decodeValueEncoding(value);
return value;
}
@Override
public String[] getParameters(String name) {
String[] values = request.getParameterValues(name);
if (decodableRequest()) {
for (int i = 0; i < values.length; i++) {
values[i] = decodeValueEncoding(values[i]);
}
}
return values;
}
private boolean decodableRequest() {
return (decodeGETUtf && "GET".equals(request.getMethod()));
}
private String decodeValueEncoding(String value) {
if (value == null)
return null;
try {
byte[] bytes = value.getBytes("ISO-8859-1");
value = new String(bytes, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return value;
}
private final boolean decodeGETUtf;
private final HttpServletRequest request;
}