Package org.apache.catalina.core

## Class AsyncContextImpl

- java.lang.Object
- - org.apache.catalina.core.AsyncContextImpl

- All Implemented Interfaces:
    `AsyncContext`, `AsyncContextCallback`

      public class AsyncContextImpl
      extends java.lang.Object
      implements AsyncContext, AsyncContextCallback

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected static StringManager` | `sm` |

    - ### Fields inherited from interface jakarta.servlet.AsyncContext

      `ASYNC_CONTEXT_PATH, ASYNC_MAPPING, ASYNC_PATH_INFO, ASYNC_QUERY_STRING, ASYNC_REQUEST_URI, ASYNC_SERVLET_PATH`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `AsyncContextImpl​(Request request)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addListener​(AsyncListener listener)` | Adds an event listener that will be called for different AsyncEvents fire
    `void` | `addListener​(AsyncListener listener, ServletRequest servletRequest, ServletResponse servletResponse)` | Adds an event listener that will be called when different AsyncEvents fire
    `void` | `complete()` | Completes the async request processing and closes the response stream
    `<T extends AsyncListener> T` | `createListener​(java.lang.Class<T> clazz)` | Creates and returns an AsyncListener object
    `void` | `decrementInProgressAsyncCount()` | Used to notify the Context that async processing has ended.
    `void` | `dispatch()` |
    `void` | `dispatch​(ServletContext servletContext, java.lang.String path)` |
    `void` | `dispatch​(java.lang.String path)` |
    `protected void` | `doInternalDispatch()` |
    `void` | `fireOnComplete()` |
    `ServletRequest` | `getRequest()` |
    `ServletResponse` | `getResponse()` |
    `long` | `getTimeout()` | Get the current timeout.
    `boolean` | `hasOriginalRequestAndResponse()` |
    `void` | `incrementInProgressAsyncCount()` | Used to notify the Context that async processing has started.
    `boolean` | `isAvailable()` | Reports if the web application associated with this async request is available.
    `boolean` | `isStarted()` |
    `void` | `recycle()` |
    `void` | `setErrorState​(java.lang.Throwable t, boolean fireOnError)` |
    `void` | `setStarted​(Context context, ServletRequest request, ServletResponse response, boolean originalRequestResponse)` |
    `void` | `setTimeout​(long timeout)` | Set the timeout.
    `void` | `start​(java.lang.Runnable run)` | Starts a new thread to process the asynchronous request
    `boolean` | `timeout()` |

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### sm

          protected static final StringManager sm

  - ### Constructor Detail

    - #### AsyncContextImpl

          public AsyncContextImpl​(Request request)

  - ### Method Detail

    - #### complete

          public void complete()

      Description copied from interface: `jakarta.servlet.AsyncContext`
      Completes the async request processing and closes the response stream
      Specified by:
        `complete` in interface `AsyncContext`

    - #### fireOnComplete

          public void fireOnComplete()

      Specified by:
        `fireOnComplete` in interface `AsyncContextCallback`

    - #### timeout

          public boolean timeout()

    - #### dispatch

          public void dispatch()

      Specified by:
        `dispatch` in interface `AsyncContext`

    - #### dispatch

          public void dispatch​(java.lang.String path)

      Specified by:
        `dispatch` in interface `AsyncContext`
      Parameters:
        `path` - The path to which the request/response should be dispatched relative to the `ServletContext` from which this async request was started.

    - #### dispatch

          public void dispatch​(ServletContext servletContext,
                               java.lang.String path)

      Specified by:
        `dispatch` in interface `AsyncContext`
      Parameters:
        `servletContext` - The `ServletContext` to which the request/response should be dispatched.
        `path` - The path to which the request/response should be dispatched relative to the specified `ServletContext`.

    - #### getRequest

          public ServletRequest getRequest()

      Specified by:
        `getRequest` in interface `AsyncContext`
      Returns:
        a reference to the ServletRequest object

    - #### getResponse

          public ServletResponse getResponse()

      Specified by:
        `getResponse` in interface `AsyncContext`
      Returns:
        a reference to the ServletResponse object

    - #### start

          public void start​(java.lang.Runnable run)

      Description copied from interface: `jakarta.servlet.AsyncContext`
      Starts a new thread to process the asynchronous request
      Specified by:
        `start` in interface `AsyncContext`
      Parameters:
        `run` - a Runnable that the new thread will run

    - #### addListener

          public void addListener​(AsyncListener listener)

      Description copied from interface: `jakarta.servlet.AsyncContext`
      Adds an event listener that will be called for different AsyncEvents fire
      Specified by:
        `addListener` in interface `AsyncContext`
      Parameters:
        `listener` - an AsyncListener that will be called with AsyncEvent objects

    - #### addListener

          public void addListener​(AsyncListener listener,
                                  ServletRequest servletRequest,
                                  ServletResponse servletResponse)

      Description copied from interface: `jakarta.servlet.AsyncContext`
      Adds an event listener that will be called when different AsyncEvents fire
      Specified by:
        `addListener` in interface `AsyncContext`
      Parameters:
        `listener` - an AsyncListener that will be called with AsyncEvent objects
        `servletRequest` - the ServletRequest that will be passed with the AsyncEvent
        `servletResponse` - the ServletResponse that will be passed with the AsyncEvent

    - #### createListener

          public <T extends AsyncListener> T createListener​(java.lang.Class<T> clazz)
                                                     throws ServletException

      Description copied from interface: `jakarta.servlet.AsyncContext`
      Creates and returns an AsyncListener object
      Specified by:
        `createListener` in interface `AsyncContext`
      Type Parameters:
        `T` - The type to create that extends AsyncListener
      Parameters:
        `clazz` - The class to instantiate to create the listener
      Returns:
        the newly created AsyncListener object
      Throws:
        `ServletException` - if the listener cannot be created

    - #### recycle

          public void recycle()

    - #### isStarted

          public boolean isStarted()

    - #### setStarted

          public void setStarted​(Context context,
                                 ServletRequest request,
                                 ServletResponse response,
                                 boolean originalRequestResponse)

    - #### hasOriginalRequestAndResponse

          public boolean hasOriginalRequestAndResponse()

      Specified by:
        `hasOriginalRequestAndResponse` in interface `AsyncContext`
      Returns:
        true if the Request and Response are the original ones

    - #### doInternalDispatch

          protected void doInternalDispatch()
                                     throws ServletException,
                                            java.io.IOException

      Throws:
        `ServletException`
        `java.io.IOException`

    - #### getTimeout

          public long getTimeout()

      Description copied from interface: `jakarta.servlet.AsyncContext`
      Get the current timeout.
      Specified by:
        `getTimeout` in interface `AsyncContext`
      Returns:
        The timeout in milliseconds. 0 or less indicates no timeout.

    - #### setTimeout

          public void setTimeout​(long timeout)

      Description copied from interface: `jakarta.servlet.AsyncContext`
      Set the timeout.
      Specified by:
        `setTimeout` in interface `AsyncContext`
      Parameters:
        `timeout` - The timeout in milliseconds. 0 or less indicates no timeout.

    - #### isAvailable

          public boolean isAvailable()

      Description copied from interface: `AsyncContextCallback`
      Reports if the web application associated with this async request is available.
      Specified by:
        `isAvailable` in interface `AsyncContextCallback`
      Returns:
        `true` if the associated web application is available, otherwise `false`

    - #### setErrorState

          public void setErrorState​(java.lang.Throwable t,
                                    boolean fireOnError)

    - #### incrementInProgressAsyncCount

          public void incrementInProgressAsyncCount()

      Description copied from interface: `AsyncContextCallback`
      Used to notify the Context that async processing has started. Specifically, for the counting of in-progress async requests to work correctly, this must be called exactly once every time the `AsyncStateMachine` transitions from DISPATCHED to any other state.
      Specified by:
        `incrementInProgressAsyncCount` in interface `AsyncContextCallback`

    - #### decrementInProgressAsyncCount

          public void decrementInProgressAsyncCount()

      Description copied from interface: `AsyncContextCallback`
      Used to notify the Context that async processing has ended. Specifically, for the counting of in-progress async requests to work correctly, this must be called exactly once every time the `AsyncStateMachine` transitions to DISPATCHED from any other state.
      Specified by:
        `decrementInProgressAsyncCount` in interface `AsyncContextCallback`