Class OpenApiValidationFilter
java.lang.Object
org.springframework.web.filter.GenericFilterBean
org.springframework.web.filter.OncePerRequestFilter
com.atlassian.oai.validator.springmvc.OpenApiValidationFilter
- All Implemented Interfaces:
javax.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 OpenApiValidationFilter
extends org.springframework.web.filter.OncePerRequestFilter
A filter for wrapping the
HttpServletRequest and HttpServletResponse.
Wrapping is necessary for the validation.
The Swagger Request Validator needs the pure request body for its validation. Additionally the Spring
RestController / Controller
needs the pure request body to unmarshal the JSON / form data.
But a ServletInputStream can only be read once and needs to be rewind after
successful validation against the OpenAPI / Swagger definition. So the controller can then access it again.
The same applies to response validation and writing to the ServletOutputStream.
-
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
ConstructorsConstructorDescriptionCreates aOpenApiValidationFilterwhich validates incoming requests.OpenApiValidationFilter(boolean validateRequests, boolean validateResponses) Creates aOpenApiValidationFilterwhich validates incoming requests and / or responses. -
Method Summary
Modifier and TypeMethodDescriptionprotected voiddoFilterInternal(javax.servlet.http.HttpServletRequest servletRequest, javax.servlet.http.HttpServletResponse servletResponse, javax.servlet.FilterChain filterChain) protected booleanMethods inherited from class org.springframework.web.filter.OncePerRequestFilter
doFilter, doFilterNestedErrorDispatch, getAlreadyFilteredAttributeName, isAsyncDispatch, isAsyncStarted, shouldNotFilter, 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
-
OpenApiValidationFilter
public OpenApiValidationFilter()Creates aOpenApiValidationFilterwhich validates incoming requests. -
OpenApiValidationFilter
public OpenApiValidationFilter(boolean validateRequests, boolean validateResponses) Creates aOpenApiValidationFilterwhich validates incoming requests and / or responses.- Parameters:
validateRequests- will enable request validation iftruevalidateResponses- will enable response validation iftrue
-
-
Method Details
-
doFilterInternal
protected void doFilterInternal(javax.servlet.http.HttpServletRequest servletRequest, javax.servlet.http.HttpServletResponse servletResponse, javax.servlet.FilterChain filterChain) throws javax.servlet.ServletException, IOException - Specified by:
doFilterInternalin classorg.springframework.web.filter.OncePerRequestFilter- Throws:
javax.servlet.ServletExceptionIOException
-
shouldNotFilterAsyncDispatch
protected boolean shouldNotFilterAsyncDispatch()- Overrides:
shouldNotFilterAsyncDispatchin classorg.springframework.web.filter.OncePerRequestFilter
-