Class IdempotencyFilter

java.lang.Object
org.springframework.web.filter.GenericFilterBean
org.springframework.web.filter.OncePerRequestFilter
io.github.ravocode.avoonce.spring.IdempotencyFilter
All Implemented Interfaces:
jakarta.servlet.Filter, org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.DisposableBean, org.springframework.beans.factory.InitializingBean, org.springframework.context.EnvironmentAware, org.springframework.core.env.EnvironmentCapable, org.springframework.web.context.ServletContextAware

public class IdempotencyFilter extends org.springframework.web.filter.OncePerRequestFilter
Spring Web Servlet Filter that provides selective idempotency protection for endpoints annotated with Idempotent.

Uses RequestMappingHandlerMapping to check if the target controller method or class is annotated with @Idempotent. Unannotated requests bypass filtering completely.

  • Field Summary

    Fields inherited from class org.springframework.web.filter.OncePerRequestFilter

    ALREADY_FILTERED_SUFFIX

    Fields inherited from class org.springframework.web.filter.GenericFilterBean

    logger
  • Constructor Summary

    Constructors
    Constructor
    Description
    Constructs an IdempotencyFilter with the given manager and configuration properties.
    IdempotencyFilter(IdempotencyManager manager, IdempotencyProperties properties, org.springframework.beans.factory.ObjectProvider<org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping> handlerMappingProvider)
    Constructs an IdempotencyFilter with a handler mapping provider.
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
    doFilterInternal(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, jakarta.servlet.FilterChain filterChain)
     

    Methods inherited from class org.springframework.web.filter.OncePerRequestFilter

    doFilter, doFilterNestedErrorDispatch, getAlreadyFilteredAttributeName, isAsyncDispatch, isAsyncStarted, shouldNotFilter, shouldNotFilterAsyncDispatch, shouldNotFilterErrorDispatch

    Methods inherited from class org.springframework.web.filter.GenericFilterBean

    addRequiredProperty, afterPropertiesSet, createEnvironment, destroy, getEnvironment, getFilterConfig, getFilterName, getServletContext, init, initBeanWrapper, initFilterBean, setBeanName, setEnvironment, setServletContext

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • IdempotencyFilter

      public IdempotencyFilter(IdempotencyManager manager, IdempotencyProperties properties)
      Constructs an IdempotencyFilter with the given manager and configuration properties.
      Parameters:
      manager - the core idempotency state machine.
      properties - idempotency configuration properties.
    • IdempotencyFilter

      public IdempotencyFilter(IdempotencyManager manager, IdempotencyProperties properties, org.springframework.beans.factory.ObjectProvider<org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping> handlerMappingProvider)
      Constructs an IdempotencyFilter with a handler mapping provider.
      Parameters:
      manager - the core idempotency state machine.
      properties - idempotency configuration properties.
      handlerMappingProvider - provider for Spring's RequestMappingHandlerMapping.
  • Method Details

    • doFilterInternal

      protected void doFilterInternal(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, jakarta.servlet.FilterChain filterChain) throws jakarta.servlet.ServletException, IOException
      Specified by:
      doFilterInternal in class org.springframework.web.filter.OncePerRequestFilter
      Throws:
      jakarta.servlet.ServletException
      IOException