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_SUFFIXFields inherited from class org.springframework.web.filter.GenericFilterBean
logger -
Constructor Summary
ConstructorsConstructorDescriptionIdempotencyFilter(IdempotencyManager manager, IdempotencyProperties properties) Constructs anIdempotencyFilterwith 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 anIdempotencyFilterwith a handler mapping provider. -
Method Summary
Modifier and TypeMethodDescriptionprotected voiddoFilterInternal(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, shouldNotFilterErrorDispatchMethods inherited from class org.springframework.web.filter.GenericFilterBean
addRequiredProperty, afterPropertiesSet, createEnvironment, destroy, getEnvironment, getFilterConfig, getFilterName, getServletContext, init, initBeanWrapper, initFilterBean, setBeanName, setEnvironment, setServletContext
-
Constructor Details
-
IdempotencyFilter
Constructs anIdempotencyFilterwith 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 anIdempotencyFilterwith a handler mapping provider.- Parameters:
manager- the core idempotency state machine.properties- idempotency configuration properties.handlerMappingProvider- provider for Spring'sRequestMappingHandlerMapping.
-
-
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:
doFilterInternalin classorg.springframework.web.filter.OncePerRequestFilter- Throws:
jakarta.servlet.ServletExceptionIOException
-