org.springframework.web.servlet.support

## Class AbstractFlashMapManager

- java.lang.Object
- - org.springframework.web.servlet.support.AbstractFlashMapManager

- All Implemented Interfaces:
    FlashMapManager
  Direct Known Subclasses:
    SessionFlashMapManager

      public abstract class AbstractFlashMapManager
      extends Object
      implements FlashMapManager

  A base class for `FlashMapManager` implementations.
  Since:
    3.1.1
  Author:
    Rossen Stoyanchev, Juergen Hoeller

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Log` | `logger`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractFlashMapManager()`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected Object` | `getFlashMapsMutex(HttpServletRequest request)` Obtain a mutex for modifying the FlashMap List as handled by `retrieveFlashMaps(javax.servlet.http.HttpServletRequest)` and `updateFlashMaps(java.util.List<org.springframework.web.servlet.FlashMap>, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)`,
    `int` | `getFlashMapTimeout()` Return the amount of time in seconds before a FlashMap expires.
    `UrlPathHelper` | `getUrlPathHelper()` Return the UrlPathHelper implementation to use.
    `protected boolean` | `isFlashMapForRequest(FlashMap flashMap, HttpServletRequest request)` Whether the given FlashMap matches the current request.
    `FlashMap` | `retrieveAndUpdate(HttpServletRequest request, HttpServletResponse response)` Find a FlashMap saved by a previous request that matches to the current request, remove it from underlying storage, and also remove other expired FlashMap instances.
    `protected abstract List<FlashMap>` | `retrieveFlashMaps(HttpServletRequest request)` Retrieve saved FlashMap instances from the underlying storage.
    `void` | `saveOutputFlashMap(FlashMap flashMap, HttpServletRequest request, HttpServletResponse response)` Save the given FlashMap, in some underlying storage and set the start of its expiration period.
    `void` | `setFlashMapTimeout(int flashMapTimeout)` Set the amount of time in seconds after a `FlashMap` is saved (at request completion) and before it expires.
    `void` | `setUrlPathHelper(UrlPathHelper urlPathHelper)` Set the UrlPathHelper to use to match FlashMap instances to requests.
    `protected abstract void` | `updateFlashMaps(List<FlashMap> flashMaps, HttpServletRequest request, HttpServletResponse response)` Update the FlashMap instances in the underlying storage.

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

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

- - ### Field Detail

    - #### logger

          protected final Log logger

  - ### Constructor Detail

    - #### AbstractFlashMapManager

          public AbstractFlashMapManager()

  - ### Method Detail

    - #### setFlashMapTimeout

          public void setFlashMapTimeout(int flashMapTimeout)

      Set the amount of time in seconds after a `FlashMap` is saved (at request completion) and before it expires.

      The default value is 180 seconds.

    - #### getFlashMapTimeout

          public int getFlashMapTimeout()

      Return the amount of time in seconds before a FlashMap expires.

    - #### setUrlPathHelper

          public void setUrlPathHelper(UrlPathHelper urlPathHelper)

      Set the UrlPathHelper to use to match FlashMap instances to requests.

    - #### getUrlPathHelper

          public UrlPathHelper getUrlPathHelper()

      Return the UrlPathHelper implementation to use.

    - #### retrieveAndUpdate

          public final FlashMap retrieveAndUpdate(HttpServletRequest request,
                                                  HttpServletResponse response)

      Description copied from interface: `FlashMapManager`
      Find a FlashMap saved by a previous request that matches to the current request, remove it from underlying storage, and also remove other expired FlashMap instances.

      This method is invoked in the beginning of every request in contrast to `FlashMapManager.saveOutputFlashMap(org.springframework.web.servlet.FlashMap, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)`, which is invoked only when there are flash attributes to be saved - i.e. before a redirect.

      Specified by:
        `retrieveAndUpdate` in interface `FlashMapManager`
      Parameters:
        `request` - the current request
        `response` - the current response
      Returns:
        a FlashMap matching the current request or `null`

    - #### isFlashMapForRequest

          protected boolean isFlashMapForRequest(FlashMap flashMap,
                                                 HttpServletRequest request)

      Whether the given FlashMap matches the current request. Uses the expected request path and query parameters saved in the FlashMap.

    - #### saveOutputFlashMap

          public final void saveOutputFlashMap(FlashMap flashMap,
                                               HttpServletRequest request,
                                               HttpServletResponse response)

      Description copied from interface: `FlashMapManager`
      Save the given FlashMap, in some underlying storage and set the start of its expiration period.

      NOTE: Invoke this method prior to a redirect in order to allow saving the FlashMap in the HTTP session or in a response cookie before the response is committed.

      Specified by:
        `saveOutputFlashMap` in interface `FlashMapManager`
      Parameters:
        `flashMap` - the FlashMap to save
        `request` - the current request
        `response` - the current response

    - #### retrieveFlashMaps

          protected abstract List<FlashMap> retrieveFlashMaps(HttpServletRequest request)

      Retrieve saved FlashMap instances from the underlying storage.
      Parameters:
        `request` - the current request
      Returns:
        a List with FlashMap instances, or `null` if none found

    - #### updateFlashMaps

          protected abstract void updateFlashMaps(List<FlashMap> flashMaps,
                                                  HttpServletRequest request,
                                                  HttpServletResponse response)

      Update the FlashMap instances in the underlying storage.
      Parameters:
        `flashMaps` - a (potentially empty) list of FlashMap instances to save
        `request` - the current request
        `response` - the current response

    - #### getFlashMapsMutex

          protected Object getFlashMapsMutex(HttpServletRequest request)

      Obtain a mutex for modifying the FlashMap List as handled by `retrieveFlashMaps(javax.servlet.http.HttpServletRequest)` and `updateFlashMaps(java.util.List<org.springframework.web.servlet.FlashMap>, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)`,

      The default implementation returns a shared static mutex. Subclasses are encouraged to return a more specific mutex, or `null` to indicate that no synchronization is necessary.

      Parameters:
        `request` - the current request
      Returns:
        the mutex to use (may be `null` if none applicable)
      Since:
        4.0.3