Home » commons-chain-1.2-src » org.apache.commons » chain » web » servlet » [javadoc | source]
    1   /*
    2    * Licensed to the Apache Software Foundation (ASF) under one or more
    3    * contributor license agreements.  See the NOTICE file distributed with
    4    * this work for additional information regarding copyright ownership.
    5    * The ASF licenses this file to You under the Apache License, Version 2.0
    6    * (the "License"); you may not use this file except in compliance with
    7    * the License.  You may obtain a copy of the License at
    8    *
    9    *     http://www.apache.org/licenses/LICENSE-2.0
   10    *
   11    * Unless required by applicable law or agreed to in writing, software
   12    * distributed under the License is distributed on an "AS IS" BASIS,
   13    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   14    * See the License for the specific language governing permissions and
   15    * limitations under the License.
   16    */
   17   package org.apache.commons.chain.web.servlet;
   18   
   19   
   20   import java.util.Map;
   21   import javax.servlet.ServletContext;
   22   import javax.servlet.http.HttpServletRequest;
   23   import javax.servlet.http.HttpServletResponse;
   24   import org.apache.commons.chain.web.WebContext;
   25   
   26   
   27   /**
   28    * <p>Concrete implementation of {@link WebContext} suitable for use in
   29    * Servlets and JSP pages.  The abstract methods are mapped to the appropriate
   30    * collections of the underlying servlet context, request, and response
   31    * instances that are passed to the constructor (or the initialize method).</p>
   32    *
   33    * @author Craig R. McClanahan
   34    * @version $Revision: 480477 $ $Date: 2006-11-29 08:34:52 +0000 (Wed, 29 Nov 2006) $
   35    */
   36   
   37   public class ServletWebContext extends WebContext {
   38   
   39   
   40       // ------------------------------------------------------------ Constructors
   41   
   42   
   43       /**
   44        * <p>Construct an uninitialized {@link ServletWebContext} instance.</p>
   45        */
   46       public ServletWebContext() {
   47       }
   48   
   49   
   50       /**
   51        * <p>Construct a {@link ServletWebContext} instance that is initialized
   52        * with the specified Servlet API objects.</p>
   53        *
   54        * @param context The <code>ServletContext</code> for this web application
   55        * @param request The <code>HttpServletRequest</code> for this request
   56        * @param response The <code>HttpServletResponse</code> for this request
   57        */
   58       public ServletWebContext(ServletContext context,
   59                                HttpServletRequest request,
   60                                HttpServletResponse response) {
   61   
   62           initialize(context, request, response);
   63   
   64       }
   65   
   66   
   67       // ------------------------------------------------------ Instance Variables
   68   
   69   
   70       /**
   71        * <p>The lazily instantiated <code>Map</code> of application scope
   72        * attributes.</p>
   73        */
   74       private Map applicationScope = null;
   75   
   76   
   77       /**
   78        * <p>The <code>ServletContext</code> for this web application.</p>
   79        */
   80       protected ServletContext context = null;
   81   
   82   
   83       /**
   84        * <p>The lazily instantiated <code>Map</code> of header name-value
   85        * combinations (immutable).</p>
   86        */
   87       private Map header = null;
   88   
   89   
   90       /**
   91        * <p>The lazily instantitated <code>Map</code> of header name-values
   92        * combinations (immutable).</p>
   93        */
   94       private Map headerValues = null;
   95   
   96   
   97       /**
   98        * <p>The lazily instantiated <code>Map</code> of context initialization
   99        * parameters.</p>
  100        */
  101       private Map initParam = null;
  102   
  103   
  104       /**
  105        * <p>The lazily instantiated <code>Map</code> of cookies.</p>
  106        */
  107       private Map cookieValues = null;
  108   
  109   
  110       /**
  111        * <p>The lazily instantiated <code>Map</code> of request
  112        * parameter name-value.</p>
  113        */
  114       private Map param = null;
  115   
  116   
  117       /**
  118        * <p>The lazily instantiated <code>Map</code> of request
  119        * parameter name-values.</p>
  120        */
  121       private Map paramValues = null;
  122   
  123   
  124       /**
  125        * <p>The <code>HttpServletRequest</code> for this request.</p>
  126        */
  127       protected HttpServletRequest request = null;
  128   
  129   
  130       /**
  131        * <p>The lazily instantiated <code>Map</code> of request scope
  132        * attributes.</p>
  133        */
  134       private Map requestScope = null;
  135   
  136   
  137       /**
  138        * <p>The <code>HttpServletResponse</code> for this request.</p>
  139        */
  140       protected HttpServletResponse response = null;
  141   
  142   
  143       /**
  144        * <p>The lazily instantiated <code>Map</code> of session scope
  145        * attributes.</p>
  146        */
  147       private Map sessionScope = null;
  148   
  149   
  150       // ---------------------------------------------------------- Public Methods
  151   
  152   
  153       /**
  154        * <p>Return the {@link ServletContext} for this context.</p>
  155        *
  156        * @return The <code>ServletContext</code> for this context.
  157        */
  158       public ServletContext getContext() {
  159   
  160       return (this.context);
  161   
  162       }
  163   
  164   
  165       /**
  166        * <p>Return the {@link HttpServletRequest} for this context.</p>
  167        *
  168        * @return The <code>HttpServletRequest</code> for this context.
  169        */
  170       public HttpServletRequest getRequest() {
  171   
  172       return (this.request);
  173   
  174       }
  175   
  176   
  177       /**
  178        * <p>Return the {@link HttpServletResponse} for this context.</p>
  179        *
  180        * @return The <code>HttpServletResponse</code> for this context.
  181        */
  182       public HttpServletResponse getResponse() {
  183   
  184       return (this.response);
  185   
  186       }
  187   
  188   
  189       /**
  190        * <p>Initialize (or reinitialize) this {@link ServletWebContext} instance
  191        * for the specified Servlet API objects.</p>
  192        *
  193        * @param context The <code>ServletContext</code> for this web application
  194        * @param request The <code>HttpServletRequest</code> for this request
  195        * @param response The <code>HttpServletResponse</code> for this request
  196        */
  197       public void initialize(ServletContext context,
  198                              HttpServletRequest request,
  199                              HttpServletResponse response) {
  200   
  201           // Save the specified Servlet API object references
  202           this.context = context;
  203           this.request = request;
  204           this.response = response;
  205   
  206           // Perform other setup as needed
  207   
  208       }
  209   
  210   
  211       /**
  212        * <p>Release references to allocated resources acquired in
  213        * <code>initialize()</code> of via subsequent processing.  After this
  214        * method is called, subsequent calls to any other method than
  215        * <code>initialize()</code> will return undefined results.</p>
  216        */
  217       public void release() {
  218   
  219           // Release references to allocated collections
  220           applicationScope = null;
  221           header = null;
  222           headerValues = null;
  223           initParam = null;
  224           param = null;
  225           paramValues = null;
  226           cookieValues = null;
  227           requestScope = null;
  228           sessionScope = null;
  229   
  230           // Release references to Servlet API objects
  231           context = null;
  232           request = null;
  233           response = null;
  234   
  235       }
  236   
  237   
  238   
  239       // ------------------------------------------------------ WebContext Methods
  240   
  241   
  242       /**
  243        * See the {@link WebContext}'s Javadoc.
  244        *
  245        * @return Application scope Map.
  246        */
  247       public Map getApplicationScope() {
  248   
  249           if ((applicationScope == null) && (context != null)) {
  250               applicationScope = new ServletApplicationScopeMap(context);
  251           }
  252           return (applicationScope);
  253   
  254       }
  255   
  256   
  257       /**
  258        * See the {@link WebContext}'s Javadoc.
  259        *
  260        * @return Header values Map.
  261        */
  262       public Map getHeader() {
  263   
  264           if ((header == null) && (request != null)) {
  265               header = new ServletHeaderMap(request);
  266           }
  267           return (header);
  268   
  269       }
  270   
  271   
  272       /**
  273        * See the {@link WebContext}'s Javadoc.
  274        *
  275        * @return Header values Map.
  276        */
  277       public Map getHeaderValues() {
  278   
  279           if ((headerValues == null) && (request != null)) {
  280               headerValues = new ServletHeaderValuesMap(request);
  281           }
  282           return (headerValues);
  283   
  284       }
  285   
  286   
  287       /**
  288        * See the {@link WebContext}'s Javadoc.
  289        *
  290        * @return Initialization parameter Map.
  291        */
  292       public Map getInitParam() {
  293   
  294           if ((initParam == null) && (context != null)) {
  295               initParam = new ServletInitParamMap(context);
  296           }
  297           return (initParam);
  298   
  299       }
  300   
  301   
  302       /**
  303        * See the {@link WebContext}'s Javadoc.
  304        *
  305        * @return Request parameter Map.
  306        */
  307       public Map getParam() {
  308   
  309           if ((param == null) && (request != null)) {
  310               param = new ServletParamMap(request);
  311           }
  312           return (param);
  313   
  314       }
  315   
  316   
  317       /**
  318        * See the {@link WebContext}'s Javadoc.
  319        *
  320        * @return Request parameter Map.
  321        */
  322       public Map getParamValues() {
  323   
  324           if ((paramValues == null) && (request != null)) {
  325               paramValues = new ServletParamValuesMap(request);
  326           }
  327           return (paramValues);
  328   
  329       }
  330   
  331   
  332       /**
  333        * See the {@link WebContext}'s Javadoc.
  334        *
  335        * @return Map of Cookies.
  336        * @since Chain 1.1
  337        */
  338       public Map getCookies() {
  339   
  340           if ((cookieValues == null) && (request != null)) {
  341               cookieValues = new ServletCookieMap(request);
  342           }
  343           return (cookieValues);
  344   
  345       }
  346   
  347   
  348       /**
  349        * See the {@link WebContext}'s Javadoc.
  350        *
  351        * @return Request scope Map.
  352        */
  353       public Map getRequestScope() {
  354   
  355           if ((requestScope == null) && (request != null)) {
  356               requestScope = new ServletRequestScopeMap(request);
  357           }
  358           return (requestScope);
  359   
  360       }
  361   
  362   
  363       /**
  364        * See the {@link WebContext}'s Javadoc.
  365        *
  366        * @return Session scope Map.
  367        */
  368       public Map getSessionScope() {
  369   
  370           if ((sessionScope == null) && (request != null)) {
  371               sessionScope = new ServletSessionScopeMap(request);
  372           }
  373           return (sessionScope);
  374   
  375       }
  376   
  377   
  378   
  379   }

Save This Page
Home » commons-chain-1.2-src » org.apache.commons » chain » web » servlet » [javadoc | source]