org.apache.commons.chain.web.servlet.ServletWebContext.java Source code

Java tutorial

Introduction

Here is the source code for org.apache.commons.chain.web.servlet.ServletWebContext.java

Source

/*
 * Copyright 1999-2004 The Apache Software Foundation
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.commons.chain.web.servlet;

import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.chain.web.WebContext;

/**
 * <p>Concrete implementation of {@link WebContext} suitable for use in
 * Servlets and JSP pages.  The abstract methods are mapped to the appropriate
 * collections of the underlying servlet context, request, and response
 * instances that are passed to the constructor (or the initialize method).</p>
 *
 * @author Craig R. McClanahan
 * @version $Revision: 1.5 $ $Date: 2004/02/25 00:01:04 $
 */

public class ServletWebContext extends WebContext {

    // ------------------------------------------------------------ Constructors

    /**
     * <p>Construct an uninitialized {@link ServletWebContext} instance.</p>
     */
    public ServletWebContext() {

        ;

    }

    /**
     * <p>Construct a {@link ServletWebContext} instance that is initialized
     * with the specified Servlet API objects.</p>
     *
     * @param context The <code>ServletContext</code> for this web application
     * @param request The <code>HttpServletRequest</code> for this request
     * @param response The <code>HttpServletResponse</code> for this request
     */
    public ServletWebContext(ServletContext context, HttpServletRequest request, HttpServletResponse response) {

        initialize(context, request, response);

    }

    // ------------------------------------------------------ Instance Variables

    /**
     * <p>The lazily instantiated <code>Map</code> of application scope
     * attributes.</p>
     */
    private Map applicationScope = null;

    /**
     * <p>The <code>ServletContext</code> for this web application.</p>
     */
    protected ServletContext context = null;

    /**
     * <p>The lazily instantiated <code>Map</code> of header name-value
     * combinations (immutable).</p>
     */
    private Map header = null;

    /**
     * <p>The lazily instantitated <code>Map</code> of header name-values
     * combinations (immutable).</p>
     */
    private Map headerValues = null;

    /**
     * <p>The lazily instantiated <code>Map</code> of context initialization
     * parameters.</p>
     */
    private Map initParam = null;

    /**
     * <p>The lazily instantiated <code>Map</code> of request
     * parameter name-value.</p>
     */
    private Map param = null;

    /**
     * <p>The lazily instantiated <code>Map</code> of request
     * parameter name-values.</p>
     */
    private Map paramValues = null;

    /**
     * <p>The <code>HttpServletRequest</code> for this request.</p>
     */
    protected HttpServletRequest request = null;

    /**
     * <p>The lazily instantiated <code>Map</code> of request scope
     * attributes.</p>
     */
    private Map requestScope = null;

    /**
     * <p>The <code>HttpServletResponse</code> for this request.</p>
     */
    protected HttpServletResponse response = null;

    /**
     * <p>The lazily instantiated <code>Map</code> of session scope
     * attributes.</p>
     */
    private Map sessionScope = null;

    // ---------------------------------------------------------- Public Methods

    /**
     * <p>Return the {@link ServletContext} for this context.</p>
     */
    public ServletContext getContext() {

        return (this.context);

    }

    /**
     * <p>Return the {@link HttpServletRequest} for this context.</p>
     */
    public HttpServletRequest getRequest() {

        return (this.request);

    }

    /**
     * <p>Return the {@link HttpServletResponse} for this context.</p>
     */
    public HttpServletResponse getResponse() {

        return (this.response);

    }

    /**
     * <p>Initialize (or reinitialize) this {@link ServletWebContext} instance
     * for the specified Servlet API objects.</p>
     *
     * @param context The <code>ServletContext</code> for this web application
     * @param request The <code>HttpServletRequest</code> for this request
     * @param response The <code>HttpServletResponse</code> for this request
     */
    public void initialize(ServletContext context, HttpServletRequest request, HttpServletResponse response) {

        // Save the specified Servlet API object references
        this.context = context;
        this.request = request;
        this.response = response;

        // Perform other setup as needed

    }

    /**
     * <p>Release references to allocated resources acquired in
     * <code>initialize()</code> of via subsequent processing.  After this
     * method is called, subsequent calls to any other method than
     * <code>initialize()</code> will return undefined results.</p>
     */
    public void release() {

        // Release references to allocated collections
        applicationScope = null;
        header = null;
        headerValues = null;
        initParam = null;
        param = null;
        paramValues = null;
        requestScope = null;
        sessionScope = null;

        // Release references to Servlet API objects
        context = null;
        request = null;
        response = null;

    }

    // ------------------------------------------------------ WebContext Methods

    public Map getApplicationScope() {

        if ((applicationScope == null) && (context != null)) {
            applicationScope = new ServletApplicationScopeMap(context);
        }
        return (applicationScope);

    }

    public Map getHeader() {

        if ((header == null) && (request != null)) {
            header = new ServletHeaderMap(request);
        }
        return (header);

    }

    public Map getHeaderValues() {

        if ((headerValues == null) && (request != null)) {
            headerValues = new ServletHeaderValuesMap(request);
        }
        return (headerValues);

    }

    public Map getInitParam() {

        if ((initParam == null) && (context != null)) {
            initParam = new ServletInitParamMap(context);
        }
        return (initParam);

    }

    public Map getParam() {

        if ((param == null) && (request != null)) {
            param = new ServletParamMap(request);
        }
        return (param);

    }

    public Map getParamValues() {

        if ((paramValues == null) && (request != null)) {
            paramValues = new ServletParamValuesMap(request);
        }
        return (paramValues);

    }

    public Map getRequestScope() {

        if ((requestScope == null) && (request != null)) {
            requestScope = new ServletRequestScopeMap(request);
        }
        return (requestScope);

    }

    public Map getSessionScope() {

        if ((sessionScope == null) && (request != null)) {
            sessionScope = new ServletSessionScopeMap(request.getSession());
        }
        return (sessionScope);

    }

}