Package org.infoglue.cms.util

Source Code of org.infoglue.cms.util.FakeHttpServletRequest

/* ===============================================================================
*
* Part of the InfoGlue Content Management Platform (www.infoglue.org)
*
* ===============================================================================
*
*  Copyright (C)
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2, as published by the
* Free Software Foundation. See the file LICENSE.html for more information.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY, including 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, write to the Free Software Foundation, Inc. / 59 Temple
* Place, Suite 330 / Boston, MA 02111-1307 / USA.
*
* ===============================================================================
*
* $Id: FakeHttpServletRequest.java,v 1.11 2007/11/19 20:40:41 mattias Exp $
*/
package org.infoglue.cms.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.Principal;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Locale;
import java.util.Map;
import java.util.Vector;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletInputStream;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.infoglue.cms.controllers.kernel.impl.simple.LanguageController;
import org.infoglue.cms.entities.management.LanguageVO;

/**
* A quick-and-dirty stub of HttpServletRequest.  We support attributes and parameters and implement the rest
* of the methods as no-ops.
* @author <a href=mailto:jedprentice@gmail.com>Jed Prentice</a>
*/
public class FakeHttpServletRequest implements HttpServletRequest
{
  private final Hashtable attributes = new Hashtable();
  private final Hashtable parameters = new Hashtable();
  private HttpSession session;
  private ServletContext servletContext;

  private String requestURI = null;
 
  public FakeHttpServletRequest()
  {
    this(new FakeHttpSession());
  }

  public FakeHttpServletRequest(HttpSession session)
  {
    setSession(session);
  }

  public FakeHttpServletRequest(Map parameters)
  {
    this.parameters.putAll(parameters);
  }
 
  public Object getAttribute(String name)
  {
    return attributes.get(name);
  }

  public Enumeration getAttributeNames()
  {
    return attributes.keys();
  }

  public void setAttribute(String name, Object value)
  {
    attributes.put(name, value);
  }

  public void removeAttribute(String name)
  {
    attributes.remove(name);
  }

  public String getParameter(String name)
  {
    return (String)parameters.get(name);
  }

  /**
   * Not part of HttpServletRequest, but required so tests can hook up the parameters
   */
  public void setParameter(String name, String value)
  {
    parameters.put(name, value);
  }

  public Enumeration getParameterNames()
  {
    return parameters.keys();
  }

  public String[] getParameterValues(String name)
  {
    return (String[])parameters.get(name);
  }

  public Map getParameterMap()
  {
    return parameters;
  }

  public HttpSession getSession(boolean create)
  {
    if (create && session == null)
      session = new FakeHttpSession();

    return getSession();
  }

  public HttpSession getSession()
  {
    return session;
  }

  /**
   * Not part of HttpServletRequest, but required so tests can hook up the session whenever it is convenient
   */
  public void setSession(HttpSession session)
  {
    this.session = session;
  }
  public void setRequestURI(String requestURI)
  {
    this.requestURI = requestURI;
  }
  public void setRequestRequestURI(String requestURI)
  {
    this.requestURI = requestURI;
  }
  public void setServletContext(ServletContext servletContext)
  {
    this.servletContext = servletContext;
  }
 
  /**
   * Hardcoding all such request to GET.
   */
  public String getMethod()                
  {
      return "GET";
  }

  /**
   * Hardcoding all such request to GET.
   */
  public String getRequestURI()            
  {
      return "/ViewPage.action"; //requestURI;
  }

  public RequestDispatcher getRequestDispatcher(String path)
  {
      return servletContext.getRequestDispatcher(path);
  }
 
  public Enumeration getLocales() 
  {
      Vector vector = new Vector();
     
      try
      {
        LanguageVO languageVO = LanguageController.getController().getLanguageVOWithId(new Integer(this.getParameter("languageId")));
        Locale locale = new Locale(languageVO.getLanguageCode());
        vector.add(locale);
      }
      catch(Exception e)
      {
          vector.add(Locale.getDefault());
      }
     
      return vector.elements();
  }

  public Enumeration getHeaders(String name
  {
      Vector vector = new Vector();
     
      try
      {
        if(name.equals("accept-language"))
            vector.add("sv");
      }
      catch(Exception e)
      {
          vector.add(Locale.getDefault());
      }
     
      return vector.elements();
  }

  public StringBuffer getRequestURL()       
  {
      return new StringBuffer("http://localhost/ViewPage.action");
  }

  public String getServletPath()           
  {
      return "/";
  }

  public String getServerName() { return null; }
  public int getServerPort()    { return 0; }

  public String getCharacterEncoding()   { return null; }
  public int getContentLength()          { return 0; }
  public String getContentType()         { return null; }
  public ServletInputStream getInputStream() throws IOException  { return null; }
  public String getProtocol()   { return null; }
  public String getScheme()     { return "http"; }
  public BufferedReader getReader() throws IOException { return null; }
  public String getRemoteAddr() { return null; }
  public String getRemoteHost() { return null; }
  public Locale getLocale()        { return null; }
  public boolean isSecure()        { return false; }
  public String getRealPath(String path)   { return null; }

  public String getAuthType()      { return null; }
  public Cookie[] getCookies()     { return null; }
  public long getDateHeader(String name)   { return 0; }
  public String getHeader(String name)  { return null; }
  public Enumeration getHeaderNames()       { return null; }
  public int getIntHeader(String name)        { return 0; }
  public String getPathInfo()               { return null; }
  public String getPathTranslated()         { return null; }
  public boolean isUserInRole(String role)  { return false; }
  public Principal getUserPrincipal()       { return null; }
  public String getContextPath()            { return null; }
  public String getQueryString()            { return null; }
  public String getRemoteUser()             { return null; }
  public String getRequestedSessionId()     { return null; }
  public boolean isRequestedSessionIdValid()   { return false; }
  public boolean isRequestedSessionIdFromCookie() { return false; }
  public boolean isRequestedSessionIdFromURL()    { return false; }
  public boolean isRequestedSessionIdFromUrl()    { return false;
  public void setCharacterEncoding(String s) throws UnsupportedEncodingException {}

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

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

  public int getLocalPort()
  {
    // TODO Auto-generated method stub
    return 0;
  }

  public int getRemotePort()
  {
    // TODO Auto-generated method stub
    return 0;
  }
}
TOP

Related Classes of org.infoglue.cms.util.FakeHttpServletRequest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.