/** * Copyright (C) 2009 BonitaSoft S.A. * BonitaSoft, 31 rue Gustave Eiffel - 38000 Grenoble * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2.0 of the License, or * (at your option) any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.bonitasoft.test.toolkit.server; import java.io.BufferedReader; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.Principal; import java.util.Enumeration; import java.util.HashMap; import java.util.Locale; import java.util.Map; import javax.servlet.RequestDispatcher; import javax.servlet.ServletInputStream; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; /** * @author Nicolas Chabanoles * */ public class MockHttpServletRequest implements HttpServletRequest { HttpSession session = null; Map<String, Object> parametersMap = null; Map<String, Object> attributesMap = null; HttpServletRequest req = null; String pathInfo = null; public MockHttpServletRequest(final HttpServletRequest req) { this.req = req; this.parametersMap = req.getParameterMap(); } public MockHttpServletRequest() { attributesMap = new HashMap<String, Object>(); parametersMap = new HashMap<String, Object>(); } /* * (non-Javadoc) * @see javax.servlet.http.HttpServletRequest#getAuthType() */ @Override public String getAuthType() { if (this.req != null) { return this.req.getAuthType(); } return null; } /* * (non-Javadoc) * @see javax.servlet.http.HttpServletRequest#getContextPath() */ @Override public String getContextPath() { if (this.req != null) { return this.req.getContextPath(); } return null; } /* * (non-Javadoc) * @see javax.servlet.http.HttpServletRequest#getCookies() */ @Override public Cookie[] getCookies() { if (this.req != null) { return this.req.getCookies(); } return null; } /* * (non-Javadoc) * @see javax.servlet.http.HttpServletRequest#getDateHeader(java.lang.String) */ @Override public long getDateHeader(final String anName) { if (this.req != null) { return this.req.getDateHeader(anName); } return 0; } /* * (non-Javadoc) * @see javax.servlet.http.HttpServletRequest#getHeader(java.lang.String) */ @Override public String getHeader(final String anName) { if (this.req != null) { return this.req.getHeader(anName); } return null; } /* * (non-Javadoc) * @see javax.servlet.http.HttpServletRequest#getHeaderNames() */ @Override @SuppressWarnings("unchecked") public Enumeration getHeaderNames() { if (this.req != null) { return this.req.getHeaderNames(); } return null; } /* * (non-Javadoc) * @see javax.servlet.http.HttpServletRequest#getHeaders(java.lang.String) */ @Override @SuppressWarnings("unchecked") public Enumeration getHeaders(final String anName) { if (this.req != null) { return this.req.getHeaders(anName); } return null; } /* * (non-Javadoc) * @see javax.servlet.http.HttpServletRequest#getIntHeader(java.lang.String) */ @Override public int getIntHeader(final String anName) { if (this.req != null) { return this.req.getIntHeader(anName); } return 0; } /* * (non-Javadoc) * @see javax.servlet.http.HttpServletRequest#getMethod() */ @Override public String getMethod() { if (this.req != null) { return this.req.getMethod(); } return null; } /* * (non-Javadoc) * @see javax.servlet.http.HttpServletRequest#getPathInfo() */ @Override public String getPathInfo() { if(pathInfo != null){ return this.pathInfo; }else if (this.req != null) { return this.req.getPathInfo(); } return null; } /* * (non-Javadoc) * @see javax.servlet.http.HttpServletRequest#getPathTranslated() */ @Override public String getPathTranslated() { if (this.req != null) { return this.req.getPathTranslated(); } return null; } /* * (non-Javadoc) * @see javax.servlet.http.HttpServletRequest#getQueryString() */ @Override public String getQueryString() { if (this.req != null) { return this.req.getQueryString(); } return null; } /* * (non-Javadoc) * @see javax.servlet.http.HttpServletRequest#getRemoteUser() */ @Override public String getRemoteUser() { if (this.req != null) { return this.req.getRemoteUser(); } return null; } /* * (non-Javadoc) * @see javax.servlet.http.HttpServletRequest#getRequestURI() */ @Override public String getRequestURI() { if (this.req != null) { return this.req.getRequestURI(); } return null; } /* * (non-Javadoc) * @see javax.servlet.http.HttpServletRequest#getRequestURL() */ @Override public StringBuffer getRequestURL() { if (this.req != null) { return this.req.getRequestURL(); } return null; } /* * (non-Javadoc) * @see javax.servlet.http.HttpServletRequest#getRequestedSessionId() */ @Override public String getRequestedSessionId() { if (this.req != null) { return this.req.getRequestedSessionId(); } return null; } /* * (non-Javadoc) * @see javax.servlet.http.HttpServletRequest#getServletPath() */ @Override public String getServletPath() { if (this.req != null) { return this.req.getRequestedSessionId(); } return null; } /* * (non-Javadoc) * @see javax.servlet.http.HttpServletRequest#getSession() */ @Override public HttpSession getSession() { if (this.req != null) { this.session = this.req.getSession(); } if (this.session == null) { this.session = new MockHttpSession(); } return this.session; } /* * (non-Javadoc) * @see javax.servlet.http.HttpServletRequest#getSession(boolean) */ @Override public HttpSession getSession(final boolean anCreate) { if (anCreate) { if (this.req != null) { this.session = this.req.getSession(anCreate); } else { this.session = new MockHttpSession(); } } return this.session; } /* * (non-Javadoc) * @see javax.servlet.http.HttpServletRequest#getUserPrincipal() */ @Override public Principal getUserPrincipal() { if (this.req != null) { return this.req.getUserPrincipal(); } return null; } /* * (non-Javadoc) * @see javax.servlet.http.HttpServletRequest#isRequestedSessionIdFromCookie() */ @Override public boolean isRequestedSessionIdFromCookie() { if (this.req != null) { return this.req.isRequestedSessionIdFromCookie(); } return false; } /* * (non-Javadoc) * @see javax.servlet.http.HttpServletRequest#isRequestedSessionIdFromURL() */ @Override public boolean isRequestedSessionIdFromURL() { if (this.req != null) { return this.req.isRequestedSessionIdFromURL(); } return false; } /* * (non-Javadoc) * @see javax.servlet.http.HttpServletRequest#isRequestedSessionIdFromUrl() */ @Override @Deprecated public boolean isRequestedSessionIdFromUrl() { if (this.req != null) { return this.req.isRequestedSessionIdFromUrl(); } return false; } /* * (non-Javadoc) * @see javax.servlet.http.HttpServletRequest#isRequestedSessionIdValid() */ @Override public boolean isRequestedSessionIdValid() { if (this.req != null) { return this.req.isRequestedSessionIdValid(); } return false; } /* * (non-Javadoc) * @see javax.servlet.http.HttpServletRequest#isUserInRole(java.lang.String) */ @Override public boolean isUserInRole(final String anRole) { if (this.req != null) { return this.req.isUserInRole(anRole); } return false; } /* * (non-Javadoc) * @see javax.servlet.ServletRequest#getAttribute(java.lang.String) */ @Override public Object getAttribute(final String aName) { if (this.req != null) { return this.req.getAttribute(aName); } else { return attributesMap.get(aName); } } /* * (non-Javadoc) * @see javax.servlet.ServletRequest#getAttributeNames() */ @Override @SuppressWarnings("unchecked") public Enumeration getAttributeNames() { if (this.req != null) { return this.req.getAttributeNames(); } return null; } /* * (non-Javadoc) * @see javax.servlet.ServletRequest#getCharacterEncoding() */ @Override public String getCharacterEncoding() { if (this.req != null) { return this.req.getCharacterEncoding(); } return null; } /* * (non-Javadoc) * @see javax.servlet.ServletRequest#getContentLength() */ @Override public int getContentLength() { if (this.req != null) { return this.req.getContentLength(); } return 0; } /* * (non-Javadoc) * @see javax.servlet.ServletRequest#getContentType() */ @Override public String getContentType() { if (this.req != null) { return this.req.getContentType(); } return null; } /* * (non-Javadoc) * @see javax.servlet.ServletRequest#getInputStream() */ @Override public ServletInputStream getInputStream() throws IOException { if (this.req != null) { return this.req.getInputStream(); } return null; } /* * (non-Javadoc) * @see javax.servlet.ServletRequest#getLocalAddr() */ @Override public String getLocalAddr() { if (this.req != null) { return this.req.getLocalAddr(); } return null; } /* * (non-Javadoc) * @see javax.servlet.ServletRequest#getLocalName() */ @Override public String getLocalName() { if (this.req != null) { return this.req.getLocalName(); } return null; } /* * (non-Javadoc) * @see javax.servlet.ServletRequest#getLocalPort() */ @Override public int getLocalPort() { if (this.req != null) { return this.req.getLocalPort(); } return 0; } /* * (non-Javadoc) * @see javax.servlet.ServletRequest#getLocale() */ @Override public Locale getLocale() { if (this.req != null) { return this.req.getLocale(); } return null; } /* * (non-Javadoc) * @see javax.servlet.ServletRequest#getLocales() */ @Override @SuppressWarnings("unchecked") public Enumeration getLocales() { if (this.req != null) { return this.req.getLocales(); } return null; } /* * (non-Javadoc) * @see javax.servlet.ServletRequest#getParameter(java.lang.String) */ @Override public String getParameter(final String anName) { return (String) this.parametersMap.get(anName); } public void setParameter(final String anName, final Object value) { this.parametersMap.put(anName, value); } /* * (non-Javadoc) * @see javax.servlet.ServletRequest#getParameterMap() */ @Override @SuppressWarnings("unchecked") public Map<String, Object> getParameterMap() { if (req == null){ return this.parametersMap; } else { return this.req.getParameterMap(); } } /* * (non-Javadoc) * @see javax.servlet.ServletRequest#getParameterNames() */ @Override @SuppressWarnings("unchecked") public Enumeration getParameterNames() { if (this.req != null) { return this.req.getParameterNames(); } return null; } /* * (non-Javadoc) * @see javax.servlet.ServletRequest#getParameterValues(java.lang.String) */ @Override public String[] getParameterValues(final String anName) { if (this.req != null) { return this.req.getParameterValues(anName); } return null; } /* * (non-Javadoc) * @see javax.servlet.ServletRequest#getProtocol() */ @Override public String getProtocol() { if (this.req != null) { return this.req.getProtocol(); } return null; } /* * (non-Javadoc) * @see javax.servlet.ServletRequest#getReader() */ @Override public BufferedReader getReader() throws IOException { if (this.req != null) { return this.req.getReader(); } return null; } /* * (non-Javadoc) * @see javax.servlet.ServletRequest#getRealPath(java.lang.String) */ @Override @Deprecated public String getRealPath(final String anPath) { if (this.req != null) { return this.req.getRealPath(anPath); } return null; } /* * (non-Javadoc) * @see javax.servlet.ServletRequest#getRemoteAddr() */ @Override public String getRemoteAddr() { if (this.req != null) { return this.req.getRemoteAddr(); } return null; } /* * (non-Javadoc) * @see javax.servlet.ServletRequest#getRemoteHost() */ @Override public String getRemoteHost() { if (this.req != null) { return this.req.getRemoteHost(); } return null; } /* * (non-Javadoc) * @see javax.servlet.ServletRequest#getRemotePort() */ @Override public int getRemotePort() { if (this.req != null) { return this.req.getRemotePort(); } return 0; } /* * (non-Javadoc) * @see javax.servlet.ServletRequest#getRequestDispatcher(java.lang.String) */ @Override public RequestDispatcher getRequestDispatcher(final String anPath) { if (this.req != null) { return this.req.getRequestDispatcher(anPath); } return null; } /* * (non-Javadoc) * @see javax.servlet.ServletRequest#getScheme() */ @Override public String getScheme() { if (this.req != null) { return this.req.getScheme(); } return "http"; } /* * (non-Javadoc) * @see javax.servlet.ServletRequest#getServerName() */ @Override public String getServerName() { if (this.req != null) { return this.req.getServerName(); } return "localhost"; } /* * (non-Javadoc) * @see javax.servlet.ServletRequest#getServerPort() */ @Override public int getServerPort() { if (this.req != null) { return this.req.getServerPort(); } return 8080; } /* * (non-Javadoc) * @see javax.servlet.ServletRequest#isSecure() */ @Override public boolean isSecure() { if (this.req != null) { return this.req.isSecure(); } return false; } /* * (non-Javadoc) * @see javax.servlet.ServletRequest#removeAttribute(java.lang.String) */ @Override public void removeAttribute(final String anName) { if (this.req != null) { this.req.removeAttribute(anName); } } /* * (non-Javadoc) * @see javax.servlet.ServletRequest#setAttribute(java.lang.String, java.lang.Object) */ @Override public void setAttribute(final String aName, final Object aValue) { if (this.req != null) { this.req.setAttribute(aName, aValue); } else { this.attributesMap.put(aName, aValue); } } /* * (non-Javadoc) * @see javax.servlet.ServletRequest#setCharacterEncoding(java.lang.String) */ @Override public void setCharacterEncoding(final String anEnv) throws UnsupportedEncodingException { if (this.req != null) { this.req.setCharacterEncoding(anEnv); } } /* * (non-Javadoc) * @see javax.servlet.ServletRequest#setCharacterEncoding(java.lang.String) */ public void setPathInfo(final String pathInfo) { this.pathInfo = pathInfo; } }