ContextRequest.java

package sk.iway.iwcm.system.context;

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.LinkedHashMap;
import java.util.Locale;
import java.util.Map;
import java.util.Set;

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.HttpUpgradeHandler;
import javax.servlet.http.Part;

import sk.iway.iwcm.Tools;

/**
 *  ContextRequest.java
 *
 *@Title        webjet7
 *@Company      Interway s.r.o. (www.interway.sk)
 *@Copyright    Interway s.r.o. (c) 2001-2012
 *@author       $Author: jeeff jeeff $
 *@version      $Revision: 1.3 $
 *@created      Date: 8.8.2012 9:12:13
 *@modified     $Date: 2004/08/16 06:26:11 $
 */
//inherited from HttpServletRequest
@SuppressWarnings("deprecation")
public class ContextRequest implements HttpServletRequest
{
	private final HttpServletRequest original;
	private final String contextPath;

	public ContextRequest(HttpServletRequest original)
	{
		this.contextPath = original.getContextPath();
		this.original = original;
	}
	
	@Override
	public String getParameter(String parameter)
	{
		return ContextFilter.removeContextPath(contextPath, original.getParameter(parameter));
	}
	@Override
	public Map<String, String[]> getParameterMap()
	{
		Map<String, String[]> newMap = new LinkedHashMap<String, String[]>();
		Set<Map.Entry<String, String[]>> set = original.getParameterMap().entrySet();
		for(Map.Entry<String, String[]> me : set)
		{
			newMap.put(me.getKey(), removeCp(me.getValue()));
		}
		
		return newMap;
	}
	@Override
	public Enumeration<String> getParameterNames()
	{
		return original.getParameterNames();
	}
	@Override
	public String[] getParameterValues(String parameter)
	{
		return removeCp(original.getParameterValues(parameter));
	}	
	
	/**
	 * Odstrani context path z celej sady parametrov
	 * @param values
	 * @return
	 */
	private String[] removeCp(String values[])
	{
		String newValues[] = new String[values.length];
		for (int i=0; i<values.length; i++)
		{
			newValues[i] = ContextFilter.removeContextPath(contextPath, values[i]);
		}
		return newValues;
	}
			
	//-----------------DELEGATE METHODS--------------------------
	@Override
	public Object getAttribute(String attribute)
	{
		return original.getAttribute(attribute);
	}
	@Override
	public Enumeration<String> getAttributeNames()
	{
		return original.getAttributeNames();
	}
	@Override
	public String getAuthType()
	{
		return original.getAuthType();
	}
	@Override
	public int getContentLength()
	{
		return original.getContentLength();
	}
	@Override
	public String getContentType()
	{
		return original.getContentType();
	}
	@Override
	public String getContextPath()
	{
		return original.getContextPath();
	}
	@Override
	public Cookie[] getCookies()
	{
		return original.getCookies();
	}
	@Override
	public long getDateHeader(String headerName)
	{
		return original.getDateHeader(headerName);
	}
	@Override
	public String getHeader(String headerName)
	{
		return original.getHeader(headerName);
	}
	@Override
	public Enumeration<String> getHeaderNames()
	{
		return original.getHeaderNames();
	}
	@Override
	public Enumeration<String> getHeaders(String headerName)
	{
		return original.getHeaders(headerName);
	}
	@Override
	public String getCharacterEncoding()
	{
		return original.getCharacterEncoding();
	}
	@Override
	public ServletInputStream getInputStream() throws IOException
	{
		return original.getInputStream();
	}
	@Override
	public int getIntHeader(String headerName)
	{
		return original.getIntHeader(headerName);
	}
	@Override
	public String getLocalAddr()
	{
		return original.getLocalAddr();
	}
	@Override
	public Locale getLocale()
	{
		return original.getLocale();
	}
	@Override
	public Enumeration<Locale> getLocales()
	{
		return original.getLocales();
	}
	@Override
	public String getLocalName()
	{
		return original.getLocalName();
	}
	@Override
	public int getLocalPort()
	{
		return original.getLocalPort();
	}
	@Override
	public String getMethod()
	{
		return original.getMethod();
	}
	@Override
	public String getPathInfo()
	{
		return original.getPathInfo();
	}
	@Override
	public String getPathTranslated()
	{
		return original.getPathTranslated();
	}
	@Override
	public String getProtocol()
	{
		return original.getProtocol();
	}
	@Override
	public String getQueryString()
	{
		return original.getQueryString();
	}
	@Override
	public BufferedReader getReader() throws IOException
	{
		return original.getReader();
	}
	@Override
	public String getRealPath(String localPath)
	{
		return original.getRealPath(localPath);
	}
	@Override
	public String getRemoteAddr()
	{
		return original.getRemoteAddr();
	}
	@Override
	public String getRemoteHost()
	{
		return original.getRemoteHost();
	}
	@Override
	public int getRemotePort()
	{
		return original.getRemotePort();
	}
	@Override
	public String getRemoteUser()
	{
		return original.getRemoteUser();
	}
	@Override
	public RequestDispatcher getRequestDispatcher(String target)
	{
		return original.getRequestDispatcher(target);
	}
	@Override
	public String getRequestedSessionId()
	{
		return original.getRequestedSessionId();
	}
	@Override
	public String getRequestURI()
	{
		return original.getRequestURI();
	}
	@Override
	public StringBuffer getRequestURL()
	{
		return original.getRequestURL();
	}
	@Override
	public String getServerName()
	{
		return Tools.getServerName(original);
	}
	@Override
	public int getServerPort()
	{
		return original.getServerPort();
	}
	@Override
	public String getServletPath()
	{
		return original.getServletPath();
	}
	@Override
	public HttpSession getSession()
	{
		return original.getSession();
	}
	@Override
	public HttpSession getSession(boolean createNew)
	{
		return original.getSession(createNew);
	}
	@Override
	public String getScheme()
	{
		return original.getScheme();
	}
	@Override
	public Principal getUserPrincipal()
	{
		return original.getUserPrincipal();
	}
	@Override
	public boolean isRequestedSessionIdFromCookie()
	{
		return original.isRequestedSessionIdFromCookie();
	}
	@Override
	public boolean isRequestedSessionIdFromUrl()
	{
		return original.isRequestedSessionIdFromUrl();
	}
	@Override
	public boolean isRequestedSessionIdFromURL()
	{
		return original.isRequestedSessionIdFromURL();
	}
	@Override
	public boolean isRequestedSessionIdValid()
	{
		return original.isRequestedSessionIdValid();
	}
	@Override
	public boolean isSecure()
	{
		return original.isSecure();
	}
	@Override
	public boolean isUserInRole(String role)
	{
		return original.isUserInRole(role);
	}
	@Override
	public void removeAttribute(String attributeName)
	{
		original.removeAttribute(attributeName);
	}
	@Override
	public void setAttribute(String attributeName, Object value)
	{
		original.setAttribute(attributeName, value);
	}
	@Override
	public void setCharacterEncoding(String encoding) throws UnsupportedEncodingException
	{
		original.setCharacterEncoding(encoding);
	}
	
	@Override
	public boolean authenticate(HttpServletResponse res) throws IOException,
			ServletException {
		return original.authenticate(res);
	}

	@Override
	public AsyncContext getAsyncContext() {
		return original.getAsyncContext();
	}

	@Override
	public DispatcherType getDispatcherType() {
		return original.getDispatcherType();
	}

	@Override
	public ServletContext getServletContext() {
		return original.getServletContext();
	}

	@Override
	public boolean isAsyncStarted() {
		return original.isAsyncStarted();
	}

	@Override
	public boolean isAsyncSupported() {
		return original.isAsyncSupported();
	}

	@Override
	public AsyncContext startAsync() {
		return original.startAsync();
	}

	@Override
	public AsyncContext startAsync(ServletRequest arg0, ServletResponse arg1) {
		return original.startAsync(arg0, arg1);
	}

	@Override
	public Part getPart(String arg0) throws IOException, IllegalStateException,
			ServletException {
		return original.getPart(arg0);
	}

	@Override
	public Collection<Part> getParts() throws IOException,
			IllegalStateException, ServletException {
		return original.getParts();
	}

	@Override
	public void login(String arg0, String arg1) throws ServletException {
		original.login(arg0, arg1);
	}

	@Override
	public void logout() throws ServletException {
		original.logout();
	}

	@Override
	public long getContentLengthLong()
	{
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public String changeSessionId()
	{
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public <T extends HttpUpgradeHandler> T upgrade(Class<T> arg0) throws IOException, ServletException
	{
		// TODO Auto-generated method stub
		return null;
	}

}