/* * ==================================================================== * * 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 nullnullnull 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); } }