MockHttpServletRequest.java

00001 
00025 package org.openmobileis.test.mock.embedded;
00026 
00027 import java.io.BufferedReader;
00028 import java.io.IOException;
00029 import java.io.InputStreamReader;
00030 import java.io.UnsupportedEncodingException;
00031 import java.security.Principal;
00032 import java.util.Enumeration;
00033 import java.util.Hashtable;
00034 import java.util.Locale;
00035 import java.util.Map;
00036 import java.util.Vector;
00037 
00038 import javax.servlet.RequestDispatcher;
00039 import javax.servlet.ServletInputStream;
00040 import javax.servlet.http.Cookie;
00041 import javax.servlet.http.HttpServletRequest;
00042 import javax.servlet.http.HttpSession;
00043 
00044 import org.openmobileis.common.context.SessionContext;
00045 import org.openmobileis.common.context.SessionContextManager;
00046 
00047 /*
00048  * Title:        OpenMobileIS project source <BR>
00049  * Description:
00050  * @author      Philippe Delrieu
00051  * @since       JDK 1.1
00052  * @version 1.0.
00053  */
00054 
00055 public class MockHttpServletRequest implements HttpServletRequest {
00056   public String authType;
00057   public  String contextPath;
00058   public Cookie[] cookies;
00059   public long dateHeader = 0;
00060   public String method;
00061   public String pathinfo;
00062   public String query;
00063   public String requestURI;
00064   public String servletPath;
00065   public String characterEncoding;
00066   public String contentType;
00067   public ServletInputStream inputStream;
00068   public Locale locale;
00069   public String protocol;
00070   public String realPath;
00071   
00072   private Hashtable attributes = new Hashtable();
00073   private Hashtable parameters = new Hashtable();;
00074 
00075   public Vector headerNames = new Vector();
00076   public Vector headerValues = new Vector();
00077   
00078   
00082   public MockHttpServletRequest() {
00083     authType =  HttpServletRequest.BASIC_AUTH;
00084     contextPath = "";
00085     cookies = new Cookie[0];
00086     locale = Locale.US;
00087   }
00088 
00089   /* (non-Javadoc)
00090    * @see javax.servlet.http.HttpServletRequest#getAuthType()
00091    */
00092   public String getAuthType() {
00093     return authType;
00094   }
00095 
00096   /* (non-Javadoc)
00097    * @see javax.servlet.http.HttpServletRequest#getContextPath()
00098    */
00099   public String getContextPath() {
00100     return contextPath;
00101   }
00102 
00103   /* (non-Javadoc)
00104    * @see javax.servlet.http.HttpServletRequest#getCookies()
00105    */
00106   public Cookie[] getCookies() {
00107     return cookies;
00108   }
00109 
00110   /* (non-Javadoc)
00111    * @see javax.servlet.http.HttpServletRequest#getDateHeader(java.lang.String)
00112    */
00113   public long getDateHeader(String arg0) {
00114     return dateHeader;
00115   }
00116 
00117   /* (non-Javadoc)
00118    * @see javax.servlet.http.HttpServletRequest#getHeader(java.lang.String)
00119    */
00120   public String getHeader(String name) {
00121     int i = headerNames.indexOf(name.toLowerCase());
00122     if (i == -1)
00123         return null;
00124     return (String) headerValues.elementAt(i);
00125   }
00126 
00127   /* (non-Javadoc)
00128    * @see javax.servlet.http.HttpServletRequest#getHeaderNames()
00129    */
00130   public Enumeration getHeaderNames() {
00131     return headerNames.elements();
00132   }
00133 
00134   /* (non-Javadoc)
00135    * @see javax.servlet.http.HttpServletRequest#getHeaders(java.lang.String)
00136    */
00137   public Enumeration getHeaders(String arg0) {
00138     return headerValues.elements();
00139   }
00140 
00141   /* (non-Javadoc)
00142    * @see javax.servlet.http.HttpServletRequest#getIntHeader(java.lang.String)
00143    */
00144   public int getIntHeader(String name) {
00145     String val = getHeader(name);
00146     if (val == null)
00147         return -1;
00148     
00149     // We don't use any try catch, as this method must return
00150     // a NumberFormatException in case of problem
00151     // (According to the Servlet 2.4 specifications)
00152     return Integer.parseInt(val);
00153   }
00154 
00155   /* (non-Javadoc)
00156    * @see javax.servlet.http.HttpServletRequest#getMethod()
00157    */
00158   public String getMethod() {
00159     return method;
00160   }
00161 
00162   /* (non-Javadoc)
00163    * @see javax.servlet.http.HttpServletRequest#getPathInfo()
00164    */
00165   public String getPathInfo() {
00166     return pathinfo;
00167   }
00168 
00169   /* (non-Javadoc)
00170    * @see javax.servlet.http.HttpServletRequest#getPathTranslated()
00171    */
00172   public String getPathTranslated() {
00173     return getRealPath(getPathInfo());
00174   }
00175 
00176   /* (non-Javadoc)
00177    * @see javax.servlet.http.HttpServletRequest#getQueryString()
00178    */
00179   public String getQueryString() {
00180     return query;
00181   }
00182 
00183   /* (non-Javadoc)
00184    * @see javax.servlet.http.HttpServletRequest#getRemoteUser()
00185    */
00186   public String getRemoteUser() {
00187     return null;
00188   }
00189 
00190   /* (non-Javadoc)
00191    * @see javax.servlet.http.HttpServletRequest#getRequestURI()
00192    */
00193   public String getRequestURI() {
00194     return requestURI;
00195   }
00196 
00197   /* (non-Javadoc)
00198    * @see javax.servlet.http.HttpServletRequest#getRequestURL()
00199    */
00200   public StringBuffer getRequestURL() {
00201     return new StringBuffer("http://localhost:8080").append(getRequestURI());
00202   }
00203 
00204   /* (non-Javadoc)
00205    * @see javax.servlet.http.HttpServletRequest#getRequestedSessionId()
00206    */
00207   public String getRequestedSessionId() {
00208     return this.getSession().getId();
00209   }
00210 
00211   /* (non-Javadoc)
00212    * @see javax.servlet.http.HttpServletRequest#getServletPath()
00213    */
00214   public String getServletPath() {
00215     return servletPath;
00216   }
00217 
00218   /* (non-Javadoc)
00219    * @see javax.servlet.http.HttpServletRequest#getSession()
00220    */
00221   public HttpSession getSession() {
00222     return this.getSession(true);
00223   }
00224 
00225   /* (non-Javadoc)
00226    * @see javax.servlet.http.HttpServletRequest#getSession(boolean)
00227    */
00228   public HttpSession getSession(boolean arg0) {
00229     // Only one seesion context
00230     SessionContext session = SessionContextManager.getManager().getSessionContext("OPENMOBILEISSESSION");
00231     if (session == null)  {
00232       synchronized (SessionContextManager.getManager()) {
00233         session = SessionContextManager.getManager().getSessionContext("OPENMOBILEISSESSION");
00234         if (session == null)  {
00235           session = SessionContextManager.getManager().createSessionContext("OPENMOBILEISSESSION");
00236         }
00237       }
00238     }
00239     SessionContextManager.getManager().joinSessionContext(session.getId());
00240     return SessionContextManager.getManager().getSessionContext();
00241   }
00242 
00243   /* (non-Javadoc)
00244    * @see javax.servlet.http.HttpServletRequest#getUserPrincipal()
00245    */
00246   public Principal getUserPrincipal() {
00247     return null;
00248   }
00249 
00250   /* (non-Javadoc)
00251    * @see javax.servlet.http.HttpServletRequest#isRequestedSessionIdFromCookie()
00252    */
00253   public boolean isRequestedSessionIdFromCookie() {
00254     return false;
00255   }
00256 
00257   /* (non-Javadoc)
00258    * @see javax.servlet.http.HttpServletRequest#isRequestedSessionIdFromURL()
00259    */
00260   public boolean isRequestedSessionIdFromURL() {  
00261     return false;
00262   }
00263 
00264   /* (non-Javadoc)
00265    * @see javax.servlet.http.HttpServletRequest#isRequestedSessionIdFromUrl()
00266    */
00267   public boolean isRequestedSessionIdFromUrl() {
00268     return false;
00269   }
00270 
00271   /* (non-Javadoc)
00272    * @see javax.servlet.http.HttpServletRequest#isRequestedSessionIdValid()
00273    */
00274   public boolean isRequestedSessionIdValid() {
00275     return false;
00276   }
00277 
00278   /* (non-Javadoc)
00279    * @see javax.servlet.http.HttpServletRequest#isUserInRole(java.lang.String)
00280    */
00281   public boolean isUserInRole(String arg0) {
00282     return false;
00283   }
00284  
00285   public Object getAttribute(String name) {
00286     return attributes.get(name);
00287   }
00288 
00289   /* (non-Javadoc)
00290    * @see javax.servlet.ServletRequest#getAttribute(java.lang.String)
00291    */
00292   public void setAttribute(String name, Object o) {
00293     attributes.put(name, o);
00294   }
00295 
00296   /* (non-Javadoc)
00297    * @see javax.servlet.ServletRequest#getAttributeNames()
00298    */
00299   public Enumeration getAttributeNames() {
00300     return attributes.keys();
00301   }
00302 
00303   /* (non-Javadoc)
00304    * @see javax.servlet.ServletRequest#getCharacterEncoding()
00305    */
00306   public String getCharacterEncoding() {
00307     return characterEncoding;
00308   }
00309 
00310   /* (non-Javadoc)
00311    * @see javax.servlet.ServletRequest#getContentLength()
00312    */
00313   public int getContentLength() {
00314     return 0;
00315   }
00316 
00317   /* (non-Javadoc)
00318    * @see javax.servlet.ServletRequest#getContentType()
00319    */
00320   public String getContentType() {
00321     return contentType;
00322   }
00323 
00324   /* (non-Javadoc)
00325    * @see javax.servlet.ServletRequest#getInputStream()
00326    */
00327   public ServletInputStream getInputStream() throws IOException {
00328     return inputStream;
00329   }
00330 
00331   /* (non-Javadoc)
00332    * @see javax.servlet.ServletRequest#getLocalAddr()
00333    */
00334   public String getLocalAddr() {
00335      return null;
00336   }
00337 
00338   /* (non-Javadoc)
00339    * @see javax.servlet.ServletRequest#getLocalName()
00340    */
00341   public String getLocalName() {
00342     return null;
00343   }
00344 
00345   /* (non-Javadoc)
00346    * @see javax.servlet.ServletRequest#getLocalPort()
00347    */
00348   public int getLocalPort() {
00349     return 8080;
00350   }
00351 
00352   /* (non-Javadoc)
00353    * @see javax.servlet.ServletRequest#getLocale()
00354    */
00355   public Locale getLocale() {
00356     return locale;
00357   }
00358 
00359   /* (non-Javadoc)
00360    * @see javax.servlet.ServletRequest#getLocales()
00361    */
00362   public Enumeration getLocales() {
00363     return null;
00364   }
00365 
00366   /* (non-Javadoc)
00367    * @see javax.servlet.ServletRequest#getParameter(java.lang.String)
00368    */
00369   public String getParameter(String name) {
00370     String[] params = getParameterValues(name);
00371     if (params == null || params.length == 0)
00372         return null;
00373 
00374     return params[0];
00375   }
00376 
00377   /* (non-Javadoc)
00378    * @see javax.servlet.ServletRequest#getParameterMap()
00379    */
00380   public Map getParameterMap() {
00381     return (java.util.Map) parameters;
00382   }
00383 
00384   /* (non-Javadoc)
00385    * @see javax.servlet.ServletRequest#getParameterNames()
00386    */
00387   public Enumeration getParameterNames() {
00388     return parameters.keys();
00389   }
00390 
00391   /* (non-Javadoc)
00392    * @see javax.servlet.ServletRequest#getParameterValues(java.lang.String)
00393    */
00394   public String[] getParameterValues(String name) {
00395     if (parameters == null)
00396       getParameterNames();
00397 
00398     return (String[]) parameters.get(name);
00399   }
00400   
00401   public void addParameter(String name, String value)    {
00402     String[] params = this.getParameterValues(name);
00403     if (params == null) {
00404       params = new String[]{value};
00405       parameters.put(name, params);
00406     } else  {
00407       String[] newparam = new String[params.length+1];
00408       System.arraycopy(params, 0, newparam, 0, params.length);
00409       newparam[params.length] = value;
00410       parameters.put(name, newparam);
00411     }
00412   }
00413 
00414   /* (non-Javadoc)
00415    * @see javax.servlet.ServletRequest#getProtocol()
00416    */
00417   public String getProtocol() {
00418     return protocol;
00419   }
00420 
00421   /* (non-Javadoc)
00422    * @see javax.servlet.ServletRequest#getReader()
00423    */
00424   public BufferedReader getReader() throws IOException {
00425     if (characterEncoding != null)
00426     try {
00427       return new BufferedReader(new InputStreamReader(inputStream, characterEncoding));
00428     } catch (UnsupportedEncodingException uee) {
00429     }
00430     return new BufferedReader(new InputStreamReader(inputStream));
00431   }
00432 
00433   /* (non-Javadoc)
00434    * @see javax.servlet.ServletRequest#getRealPath(java.lang.String)
00435    */
00436   public String getRealPath(String arg0) {
00437     return realPath;
00438   }
00439 
00440   /* (non-Javadoc)
00441    * @see javax.servlet.ServletRequest#getRemoteAddr()
00442    */
00443   public String getRemoteAddr() {
00444     return null;
00445   }
00446 
00447   /* (non-Javadoc)
00448    * @see javax.servlet.ServletRequest#getRemoteHost()
00449    */
00450   public String getRemoteHost() {
00451     return "localhost";
00452   }
00453 
00454   /* (non-Javadoc)
00455    * @see javax.servlet.ServletRequest#getRemotePort()
00456    */
00457   public int getRemotePort() {
00458     return 0;
00459   }
00460 
00461   /* (non-Javadoc)
00462    * @see javax.servlet.ServletRequest#getRequestDispatcher(java.lang.String)
00463    */
00464   public RequestDispatcher getRequestDispatcher(String arg0) {
00465     return null;
00466   }
00467 
00468   /* (non-Javadoc)
00469    * @see javax.servlet.ServletRequest#getScheme()
00470    */
00471   public String getScheme() {
00472     return "http";
00473   }
00474 
00475   /* (non-Javadoc)
00476    * @see javax.servlet.ServletRequest#getServerName()
00477    */
00478   public String getServerName() {
00479     return "localhost";
00480   }
00481 
00482   /* (non-Javadoc)
00483    * @see javax.servlet.ServletRequest#getServerPort()
00484    */
00485   public int getServerPort() {
00486     return 8080;
00487   }
00488 
00489   /* (non-Javadoc)
00490    * @see javax.servlet.ServletRequest#isSecure()
00491    */
00492   public boolean isSecure() {
00493     return false;
00494   }
00495 
00496   /* (non-Javadoc)
00497    * @see javax.servlet.ServletRequest#removeAttribute(java.lang.String)
00498    */
00499   public void removeAttribute(String arg0) {
00500   }
00501 
00502   /* (non-Javadoc)
00503    * @see javax.servlet.ServletRequest#setCharacterEncoding(java.lang.String)
00504    */
00505   public void setCharacterEncoding(String arg0) throws UnsupportedEncodingException {
00506     characterEncoding = arg0;
00507   }
00508 
00509 }

Generated on Mon Dec 4 11:03:28 2006 for OpenMobileIS by  doxygen 1.5.1-p1