/*
* See the NOTICE file distributed with this work for additional
* information regarding copyright ownership.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package com.xpn.xwiki.gwt.api.server;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.Principal;
import java.util.Collection;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.Vector;
import javax.servlet.AsyncContext;
import javax.servlet.DispatcherType;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.http.Part;
import com.xpn.xwiki.web.XWikiRequest;
public class XWikiRequestWrapper implements XWikiRequest
{
private final XWikiRequest request;
public Map paramMap;
public XWikiRequestWrapper(XWikiRequest request)
{
this.request = request;
}
public XWikiRequest getRequest()
{
return request;
}
public void setParameterMap(Map params)
{
paramMap = params;
}
// XWikiRequest
@Override
public HttpServletRequest getHttpServletRequest()
{
return request.getHttpServletRequest();
}
@Override
public Cookie getCookie(String cookieName)
{
return request.getCookie(cookieName);
}
@Override
public String getAuthType()
{
return request.getAuthType();
}
@Override
public Cookie[] getCookies()
{
return request.getCookies();
}
@Override
public long getDateHeader(String s)
{
return request.getDateHeader(s);
}
@Override
public String getHeader(String s)
{
return request.getHeader(s);
}
@Override
public Enumeration getHeaders(String s)
{
return request.getHeaders(s);
}
@Override
public Enumeration getHeaderNames()
{
return request.getHeaderNames();
}
@Override
public int getIntHeader(String s)
{
return request.getIntHeader(s);
}
@Override
public String getMethod()
{
return request.getMethod();
}
@Override
public String getPathInfo()
{
return request.getPathInfo();
}
@Override
public String getPathTranslated()
{
return request.getPathTranslated();
}
@Override
public String getContextPath()
{
return request.getContextPath();
}
@Override
public String getQueryString()
{
return request.getQueryString();
}
@Override
public String getRemoteUser()
{
return request.getRemoteUser();
}
@Override
public boolean isUserInRole(String s)
{
return request.isUserInRole(s);
}
@Override
public Principal getUserPrincipal()
{
return request.getUserPrincipal();
}
@Override
public String getRequestedSessionId()
{
return request.getRequestedSessionId();
}
@Override
public String getRequestURI()
{
return request.getRequestURI();
}
@Override
public StringBuffer getRequestURL()
{
return request.getRequestURL();
}
@Override
public String getServletPath()
{
return request.getServletPath();
}
@Override
public HttpSession getSession(boolean b)
{
return request.getSession(b);
}
@Override
public HttpSession getSession()
{
return request.getSession();
}
@Override
public boolean isRequestedSessionIdValid()
{
return request.isRequestedSessionIdValid();
}
@Override
public boolean isRequestedSessionIdFromCookie()
{
return request.isRequestedSessionIdFromCookie();
}
@Override
public boolean isRequestedSessionIdFromURL()
{
return request.isRequestedSessionIdFromURL();
}
@Override
public boolean isRequestedSessionIdFromUrl()
{
return request.isRequestedSessionIdFromUrl();
}
@Override
public Object getAttribute(String s)
{
return request.getAttribute(s);
}
@Override
public Enumeration getAttributeNames()
{
return request.getAttributeNames();
}
@Override
public String getCharacterEncoding()
{
return request.getCharacterEncoding();
}
@Override
public void setCharacterEncoding(String s) throws UnsupportedEncodingException
{
request.setCharacterEncoding(s);
}
@Override
public int getContentLength()
{
return request.getContentLength();
}
@Override
public String getContentType()
{
return request.getContentType();
}
@Override
public ServletInputStream getInputStream() throws IOException
{
return request.getInputStream();
}
@Override
public String get(String name)
{
return getParameter(name);
}
@Override
public String getParameter(String name)
{
if (paramMap == null)
return request.getParameter(name);
Object data = paramMap.get(name);
if (data == null) {
return "";
} else if (data instanceof String)
return (String) data;
else if (data instanceof String[]) {
if (((String[]) data).length > 0)
return (((String[]) data))[0];
else
return "";
} else if (data instanceof Collection) {
if (((Collection) data).size() > 0)
return ((Collection) data).toArray()[0].toString();
else
return "";
} else {
return data.toString();
}
}
@Override
public Enumeration getParameterNames()
{
if (paramMap == null)
return request.getParameterNames();
else {
Set keys = paramMap.keySet();
Vector v = new Vector();
Iterator it = keys.iterator();
while (it.hasNext()) {
v.add(it.next());
}
return v.elements();
}
}
@Override
public String[] getParameterValues(String name)
{
if (paramMap == null)
return request.getParameterValues(name);
else {
Object data = paramMap.get(name);
if (data == null) {
return new String[0];
} else if (data instanceof String) {
String[] result = new String[1];
result[0] = (String) data;
return result;
} else if (data instanceof String[]) {
return (String[]) data;
} else if (data instanceof Collection) {
String[] result = new String[((Collection) data).size()];
Iterator it = ((Collection) data).iterator();
int i = 0;
while (it.hasNext()) {
result[i] = (String) it.next();
i++;
}
return result;
} else {
String[] result = new String[1];
result[0] = data.toString();
return result;
}
}
}
@Override
public Map getParameterMap()
{
if (paramMap == null)
return request.getParameterMap();
else
return paramMap;
}
@Override
public String getProtocol()
{
return request.getProtocol();
}
@Override
public String getScheme()
{
return request.getScheme();
}
@Override
public String getServerName()
{
return request.getServerName();
}
@Override
public int getServerPort()
{
return request.getServerPort();
}
@Override
public BufferedReader getReader() throws IOException
{
return request.getReader();
}
@Override
public String getRemoteAddr()
{
return request.getRemoteAddr();
}
@Override
public String getRemoteHost()
{
return request.getRemoteHost();
}
@Override
public void setAttribute(String s, Object o)
{
request.setAttribute(s, o);
}
@Override
public void removeAttribute(String s)
{
request.removeAttribute(s);
}
@Override
public Locale getLocale()
{
return request.getLocale();
}
@Override
public Enumeration getLocales()
{
return request.getLocales();
}
@Override
public boolean isSecure()
{
return request.isSecure();
}
@Override
public RequestDispatcher getRequestDispatcher(String s)
{
return request.getRequestDispatcher(s);
}
@Override
public String getRealPath(String s)
{
return request.getRealPath(s);
}
@Override
public int getRemotePort()
{
return request.getRemotePort();
}
@Override
public String getLocalName()
{
return request.getLocalName();
}
@Override
public String getLocalAddr()
{
return request.getLocalAddr();
}
@Override
public int getLocalPort()
{
return request.getLocalPort();
}
@Override
public boolean authenticate(HttpServletResponse httpServletResponse) throws IOException, ServletException
{
return request.authenticate(httpServletResponse);
}
@Override
public void login(String s, String s1) throws ServletException
{
request.login(s, s1);
}
@Override
public void logout() throws ServletException
{
request.logout();
}
@Override
public Collection<Part> getParts() throws IOException, ServletException
{
return request.getParts();
}
@Override
public Part getPart(String s) throws IOException, ServletException
{
return request.getPart(s);
}
@Override
public ServletContext getServletContext()
{
return request.getServletContext();
}
@Override
public AsyncContext startAsync() throws IllegalStateException
{
return request.startAsync();
}
@Override
public AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse)
throws IllegalStateException
{
return request.startAsync(servletRequest, servletResponse);
}
@Override
public boolean isAsyncStarted()
{
return request.isAsyncStarted();
}
@Override
public boolean isAsyncSupported()
{
return request.isAsyncSupported();
}
@Override
public AsyncContext getAsyncContext()
{
return request.getAsyncContext();
}
@Override
public DispatcherType getDispatcherType()
{
return request.getDispatcherType();
}
}