WrappedRequest.java
package sk.iway.iwcm.system.multidomain;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
/**
* WrappedRequest.java
*
*@Title webjet4
*@Company Interway s.r.o. (www.interway.sk)
*@Copyright Interway s.r.o. (c) 2001-2008
*@author $Author: jeeff $
*@version $Revision: 1.1 $
*@created Date: 24.10.2008 13:54:05
*@modified $Date: 2008/10/28 09:48:59 $
*/
public class WrappedRequest extends HttpServletRequestWrapper
{
private Map<String, String[]> params = new Hashtable<>();
private String uri;
private String queryString = null;
private StringBuffer url;
public WrappedRequest(HttpServletRequest request, String newUri) {
super(request);
int w = newUri.indexOf('?');
if(w==(-1))
this.uri = newUri;
else {
this.uri = newUri.substring(0, w);
this.queryString = newUri.substring(w+1);
int j = this.queryString.indexOf('#');
if(j!=(-1))
this.queryString = this.queryString.substring(0, j);
}
this.url = new StringBuffer();
url.append(request.getScheme()).append("://").append(request.getLocalAddr());
int port = request.getLocalPort();
if(port!=80)
url.append(":" + port);
url.append(request.getContextPath()).append(newUri);
params.putAll(request.getParameterMap());
if(queryString!=null) {
String[] nameValues = queryString.split("&");
for(int i=0; i<nameValues.length; i++) {
int n = nameValues[i].indexOf('=');
if(n>0) {
String[] value = new String[1];
value[0] = nameValues[i].substring(n+1);
params.put(nameValues[i].substring(0, n), value);
}
}
}
}
@Override
public String getParameter(String name)
{
Object o = params.get(name);
if (o == null) return null;
if (o instanceof String)
{
return (String)o;
}
else if (o instanceof String[])
{
String[] arr = (String[])o;
if (arr.length>0) return arr[0];
}
return String.valueOf(o);
}
@Override
public Map<String, String[]> getParameterMap() {
//toto tu kvoli performance nechcem return params == null ? null : (Map) params.clone();
return params;
}
@Override
public Enumeration<String> getParameterNames() {
return ((Hashtable<String, String[]>)params).keys();
}
@Override
public String getQueryString() {
return queryString;
}
@Override
public String getServletPath() {
return uri;
}
@Override
public String getRequestURI() {
return getContextPath() + uri;
}
@Override
public StringBuffer getRequestURL() {
return url;
}
}