com.isomorphic.servlet

## Class RequestContext

- java.lang.Object
- - com.isomorphic.servlet.RequestContext

-     public class RequestContext
      extends java.lang.Object

  `RequestContext` aggregates state about the current request.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `ISCHttpServletRequest` | `request` `ISCHttpServletRequest` instance for the current request.
    `javax.servlet.http.HttpServletResponse` | `response` `HttpServletResponse` instance associated with this request

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static RequestContext` | `instance(javax.servlet.jsp.PageContext pageContext)` Creates a `RequestContext` from a JSP `PageContext`.
    `static RequestContext` | `instance(javax.servlet.ServletContext servletContext, javax.servlet.ServletRequest request, javax.servlet.ServletResponse response)` Creates a `RequestContext` from a ServletContext, ServletRequest and ServletResponse.
    `static RequestContext` | `instance(javax.servlet.Servlet servlet, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)` Creates a `RequestContext` from a `Servlet`, `HttpServletRequest` and `HttpServletResponse`.
    `static RequestContext` | `instance(javax.servlet.Servlet servlet, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.io.Writer out)` Creates a `RequestContext` from a `Servlet`, `HttpServletRequest`, `HttpServletResponse` and `Writer`.
    `static RequestContext` | `instance(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response)` Creates a `RequestContext` from a `ServletRequest` and `ServletResponse`.

- - ### Field Detail

    - #### request

          public ISCHttpServletRequest request

      `ISCHttpServletRequest` instance for the current request.

    - #### response

          public javax.servlet.http.HttpServletResponse response

      `HttpServletResponse` instance associated with this request

  - ### Method Detail

    - #### instance

          public static RequestContext instance(javax.servlet.jsp.PageContext pageContext)
                                         throws java.lang.Exception

      Creates a `RequestContext` from a JSP `PageContext`.
      Parameters:
        `pageContext` - the page context to use for creating the RequestContext
      Returns:
        the new RequestContext
      Throws:
        `java.lang.Exception`
      See Also:
        `RequestContext.instance(ServletContext, ServletRequest, ServletResponse)`

    - #### instance

          public static RequestContext instance(javax.servlet.ServletRequest request,
                                                javax.servlet.ServletResponse response)
                                         throws java.lang.Exception

      Creates a `RequestContext` from a `ServletRequest` and `ServletResponse`.
      Parameters:
        `request` - the ServletRequest
        `response` - the ServletResponse
      Returns:
        the new RequestContext
      Throws:
        `java.lang.Exception`
      See Also:
        `RequestContext.instance(ServletContext, ServletRequest, ServletResponse)`

    - #### instance

          public static RequestContext instance(javax.servlet.Servlet servlet,
                                                javax.servlet.http.HttpServletRequest request,
                                                javax.servlet.http.HttpServletResponse response)
                                         throws java.lang.Exception

      Creates a `RequestContext` from a `Servlet`, `HttpServletRequest` and `HttpServletResponse`.
      Parameters:
        `servlet` - the servlet
        `request` - the HttpServletRequest
        `response` - the HttpServletResponse
      Throws:
        `java.lang.Exception`
      See Also:
        `RequestContext.instance(ServletContext, ServletRequest, ServletResponse)`

    - #### instance

          public static RequestContext instance(javax.servlet.Servlet servlet,
                                                javax.servlet.http.HttpServletRequest request,
                                                javax.servlet.http.HttpServletResponse response,
                                                java.io.Writer out)
                                         throws java.lang.Exception

      Creates a `RequestContext` from a `Servlet`, `HttpServletRequest`, `HttpServletResponse` and `Writer`.
      Parameters:
        `servlet` - the Servlet
        `request` - the HttpServletRequest
        `response` - the HttpServletResponse
        `out` - the output writer
      Returns:
        the new RequestContext
      Throws:
        `java.lang.Exception`
      See Also:
        `RequestContext.instance(ServletContext, ServletRequest, ServletResponse)`

    - #### instance

          public static RequestContext instance(javax.servlet.ServletContext servletContext,
                                                javax.servlet.ServletRequest request,
                                                javax.servlet.ServletResponse response)
                                         throws java.lang.Exception

      Creates a `RequestContext` from a ServletContext, ServletRequest and ServletResponse.

      Important Note
      Before we explain the benefits of creating your own RequestContext please take note that only one instance of this must be created and passed along during a requests life-cycle. In normal circumstances one will be created through the `IDACall` servlet and there will be no need for you to handle this explicitly.

      A typical use case for explicitly creating a RequestContext is is you've implemented your own standalone servlet which does not extend `IDACall` and you require the servlet request/response to be available further down the request chain such as in a DMI call you might issue from your servlet. This could be useful when passing session related data down to your DMI implementations for instance. Once you've created a RequestContext you simply set it on your `DSRequest` or `RPCRequest` using `setContext(requestContext)`.

      Parameters:
        `servletContext` - the servlet context.
        `request` - the servlet request.
        `response` - the servlet response.
      Returns:
        a RequestContext.
      Throws:
        `java.lang.Exception`
      See Also:
        `BaseRequest.setContext(RequestContext)`