/*
* ====================================================================
*
* Copyright (c) 2003-2005 Hewitt Associates, Inc. All rights
* reserved.
*
* This software is the confidential and proprietary information of Hewitt
* Associates, Inc. You shall not disclose such Confidential Information.
*
* ====================================================================
*/
package com.hewitt.cat.fndt.view;
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import com.hewitt.cat.fndt.utils.exceptions.FndtContractViolationException;
/**
* This class is used to simulate a pageContext for the sake of creating
* wrappers for tags, such as the Image- and Link-helper classes. We substitute
* a surrogate writer into this class, which allows us to remove the data written
* by the struts-tag, and use it for our purposes. This class extends PageContext, so
* that it may be used in place of a page context, and also wraps a Page context,
* delegating all actions to it.
*
* @hahistory 10/10/03 a21838 new
* @hahistory 10/27/03 a21838 Wrapped PageContext up in this class.
* @hahistory 11/4/03 a21838 Removed unused imports.
* @hahistory 12/17/2003 a21838 Made PMD fixes
* @hahistory 12/30/2003 a26355 fix nullpointerexception with mMap
* @hahistory 01/05/2004 a21838 eliminate mMap.
* @hahistory 01/08/2004 a21838 PMD change - change arg names
* @hahistory 01/30/2004 a26355 refactored exceptions
* @hahistory 02/02/2004 a21838 Added a new constructor and a couple new methods
* to be used for testing purposes.
* @since 1.0
*/
public class FndtPageContext extends PageContext
{
/**
* The current FndtJspWriter
*
* @since 1.0
*/
private FndtJspWriter mFndtJspWriter;
/**
* The current PageContext
*
* @since 1.0
*/
private PageContext mPageContext;
/**
* The current ServletRequest
*
* @since 1.0
*/
private ServletRequest mRequest;
/**
* The current ServletResponse
*
* @since 1.0
*/
private ServletResponse mResponse;
/**
* Constructor initializes values.
*
* @param aPageContext The current PageContext
* @throws FndtContractViolationException Thrown if the page context
* passed into the method is null
.
* @since 1.0
*/
public FndtPageContext(PageContext aPageContext)
{
super();
mFndtJspWriter = null;
if(aPageContext == null)
{
throw new FndtContractViolationException("page context",
"page context object",
"null");
}
mPageContext = aPageContext;
mRequest = mPageContext.getRequest();
mResponse = mPageContext.getResponse();
}
/**
* Constructor to be used for testing only
*
* @since 1.0
*/
protected FndtPageContext()
{
super();
mFndtJspWriter = null;
}
/**
* Sets an attribute.
*
* @param aKey key under which object will be stored
* @param aValue object to store as an attribute
* @since 1.0
*/
public void setAttribute(String aKey, Object aValue)
{
mPageContext.setAttribute(aKey, aValue);
}
/**
* Sets an attribute.
*
* @param aKey key under which object will be stored
* @param aValue object to store as an attribute
* @param aScope scope under which it will be stored
* @since 1.0
*/
public void setAttribute(String aKey, Object aValue, int aScope)
{
if (mPageContext != null)
{
mPageContext.setAttribute(aKey, aValue, aScope);
}
}
/**
* Returns the JspWriter being used by this object.
*
* @return returns writer to use to write content out that will be sent
* back to the browser.
* @since 1.0
*/
public JspWriter getOut()
{
if (mFndtJspWriter == null)
{
mFndtJspWriter = new FndtJspWriter();
}
return mFndtJspWriter;
}
/**
* Returns an attribute.
*
* @param aKey key of object to return
*
* @return object that was stored as an attribute or null
nullnull if no object was found
* @since 1.0
*/
public Object findAttribute(String aKey)
{
return mPageContext.findAttribute(aKey);
}
/**
* Sets the request object. Used for testing purposes.
*
* @param aRequest The ServletRequest object to use
*
* @since 1.0
*/
protected void setRequest(ServletRequest aRequest)
{
mRequest = aRequest;
}
/**
* Sets the response object. Used for testing purposes.
*
* @param aResponse The ServletResponse object to use
*
* @since 1.0
*/
protected void setResponse(ServletResponse aResponse)
{
mResponse = aResponse;
}
/**
* STUB METHOD NOT IMPLEMENTED
*
* @see javax.servlet.jsp.PageContext#initialize(javax.servlet.Servlet,
* javax.servlet.ServletRequest, javax.servlet.ServletResponse,
* java.lang.String, boolean, int, boolean)
*/
public void initialize(Servlet aArg0, ServletRequest aArg1,
ServletResponse aArg2, String aArg3, boolean aArg4,
int aArg5, boolean aArg6)
throws IOException, IllegalStateException,
IllegalArgumentException
{
mPageContext.initialize(aArg0, aArg1, aArg2, aArg3, aArg4, aArg5, aArg6);
}
/**
* STUB METHOD NOT IMPLEMENTED
*
* @see javax.servlet.jsp.PageContext#initialize(javax.servlet.Servlet,
* javax.servlet.ServletRequest, javax.servlet.ServletResponse,
* java.lang.String, boolean, int, boolean)
*/
public void release()
{
mPageContext.release();
}
/**
* STUB METHOD NOT IMPLEMENTED
*
* @see javax.servlet.jsp.PageContext#initialize(javax.servlet.Servlet,
* javax.servlet.ServletRequest, javax.servlet.ServletResponse,
* java.lang.String, boolean, int, boolean)
*/
public void removeAttribute(String aArg0)
{
mPageContext.removeAttribute(aArg0);
}
/**
* STUB METHOD NOT IMPLEMENTED
*
* @see javax.servlet.jsp.PageContext#initialize(javax.servlet.Servlet,
* javax.servlet.ServletRequest, javax.servlet.ServletResponse,
* java.lang.String, boolean, int, boolean)
*/
public void removeAttribute(String aArg0, int aArg1)
{
mPageContext.removeAttribute(aArg0, aArg1);
}
/**
* STUB METHOD NOT IMPLEMENTED
*
* @see javax.servlet.jsp.PageContext#initialize(javax.servlet.Servlet,
* javax.servlet.ServletRequest, javax.servlet.ServletResponse,
* java.lang.String, boolean, int, boolean)
*/
public int getAttributesScope(String aArg0)
{
return mPageContext.getAttributesScope(aArg0);
}
/**
* STUB METHOD NOT IMPLEMENTED
*
* @see javax.servlet.jsp.PageContext#initialize(javax.servlet.Servlet,
* javax.servlet.ServletRequest, javax.servlet.ServletResponse,
* java.lang.String, boolean, int, boolean)
*/
public Enumeration getAttributeNamesInScope(int aArg0)
{
return mPageContext.getAttributeNamesInScope(aArg0);
}
/**
* STUB METHOD NOT IMPLEMENTED
*
* @see javax.servlet.jsp.PageContext#initialize(javax.servlet.Servlet,
* javax.servlet.ServletRequest, javax.servlet.ServletResponse,
* java.lang.String, boolean, int, boolean)
*/
public HttpSession getSession()
{
return mPageContext.getSession();
}
/**
* STUB METHOD NOT IMPLEMENTED
*
* @see javax.servlet.jsp.PageContext#initialize(javax.servlet.Servlet,
* javax.servlet.ServletRequest, javax.servlet.ServletResponse,
* java.lang.String, boolean, int, boolean)
*/
public Object getPage()
{
return mPageContext.getPage();
}
/**
* STUB METHOD NOT IMPLEMENTED
*
* @see javax.servlet.jsp.PageContext#initialize(javax.servlet.Servlet,
* javax.servlet.ServletRequest, javax.servlet.ServletResponse,
* java.lang.String, boolean, int, boolean)
*/
public ServletRequest getRequest()
{
return mRequest;
}
/**
* STUB METHOD NOT IMPLEMENTED
*
* @see javax.servlet.jsp.PageContext#initialize(javax.servlet.Servlet,
* javax.servlet.ServletRequest, javax.servlet.ServletResponse,
* java.lang.String, boolean, int, boolean)
*/
public ServletResponse getResponse()
{
return mResponse;
}
/**
* STUB METHOD NOT IMPLEMENTED
*
* @see javax.servlet.jsp.PageContext#initialize(javax.servlet.Servlet,
* javax.servlet.ServletRequest, javax.servlet.ServletResponse,
* java.lang.String, boolean, int, boolean)
*/
public Exception getException()
{
return mPageContext.getException();
}
/**
* STUB METHOD NOT IMPLEMENTED
*
* @see javax.servlet.jsp.PageContext#initialize(javax.servlet.Servlet,
* javax.servlet.ServletRequest, javax.servlet.ServletResponse,
* java.lang.String, boolean, int, boolean)
*/
public ServletConfig getServletConfig()
{
ServletConfig s = mPageContext.getServletConfig();
return s;
}
/**
* STUB METHOD NOT IMPLEMENTED
*
* @see javax.servlet.jsp.PageContext#initialize(javax.servlet.Servlet,
* javax.servlet.ServletRequest, javax.servlet.ServletResponse,
* java.lang.String, boolean, int, boolean)
*/
public ServletContext getServletContext()
{
ServletContext s = mPageContext.getServletContext();
return s;
}
/**
* STUB METHOD NOT IMPLEMENTED
*
* @see javax.servlet.jsp.PageContext#initialize(javax.servlet.Servlet,
* javax.servlet.ServletRequest, javax.servlet.ServletResponse,
* java.lang.String, boolean, int, boolean)
*/
public void forward(String aArg0) throws ServletException, IOException
{
mPageContext.forward(aArg0);
}
/**
* STUB METHOD NOT IMPLEMENTED
*
* @see javax.servlet.jsp.PageContext#initialize(javax.servlet.Servlet,
* javax.servlet.ServletRequest, javax.servlet.ServletResponse,
* java.lang.String, boolean, int, boolean)
*/
public void include(String aArg0) throws ServletException, IOException
{
mPageContext.include(aArg0);
}
/**
* STUB METHOD NOT IMPLEMENTED
*
* @see javax.servlet.jsp.PageContext#initialize(javax.servlet.Servlet,
* javax.servlet.ServletRequest, javax.servlet.ServletResponse,
* java.lang.String, boolean, int, boolean)
*/
public void handlePageException(Exception aArg0)
throws ServletException, IOException
{
mPageContext.handlePageException(aArg0);
}
/**
* STUB METHOD NOT IMPLEMENTED
*
* @see javax.servlet.jsp.PageContext#initialize(javax.servlet.Servlet,
* javax.servlet.ServletRequest, javax.servlet.ServletResponse,
* java.lang.String, boolean, int, boolean)
*/
public void handlePageException(Throwable aArg0)
throws ServletException, IOException
{
mPageContext.handlePageException(aArg0);
}
}