Class AbstractWebQuerySpecificationArgumentResolver
java.lang.Object
in.co.akshitbansal.springwebquery.resolver.spring.AbstractWebQueryResolver
in.co.akshitbansal.springwebquery.resolver.spring.AbstractWebQuerySpecificationArgumentResolver
- All Implemented Interfaces:
org.springframework.web.method.support.HandlerMethodArgumentResolver
- Direct Known Subclasses:
WebQueryDTOAwareSpecificationArgumentResolver,WebQueryEntityAwareSpecificationArgumentResolver
public abstract class AbstractWebQuerySpecificationArgumentResolver
extends AbstractWebQueryResolver
Base
HandlerMethodArgumentResolver for resolving RSQL-based
Specification parameters.
This class merges WebQuery annotation settings with global
defaults, reads the raw RSQL filter from the effective request parameter,
and delegates DTO-aware or entity-aware specification creation to
subclasses.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final List<io.github.perplexhub.rsql.RSQLCustomPredicate<?>>Custom predicates adapted forrsql-jpaspecification conversion.protected final cz.jirutka.rsql.parser.RSQLParserParser configured with the allowed default and custom comparison operators.protected final ValidationRSQLVisitorFactoryFactory used to create validation visitors matching the active query contract. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected SpecificationArgumentResolverConfiggetQueryConfiguration(org.springframework.core.MethodParameter parameter) Resolves the effective query configuration by combining method-levelWebQuerysettings with the configured global fallbacks.org.springframework.data.jpa.domain.Specification<?>resolveArgument(org.springframework.core.MethodParameter parameter, @Nullable org.springframework.web.method.support.ModelAndViewContainer mavContainer, org.springframework.web.context.request.NativeWebRequest webRequest, @Nullable org.springframework.web.bind.support.WebDataBinderFactory binderFactory) Resolves the incoming request into a validatedSpecificationusing the effective query configuration for the current controller method.protected abstract org.springframework.data.jpa.domain.Specification<?>resolveSpecification(SpecificationArgumentResolverConfig queryConfig, String filter) Resolves a validated specification for the supplied raw filter value and effective query configuration.booleansupportsParameter(org.springframework.core.MethodParameter parameter) Determines whether the supplied parameter should be resolved as aSpecificationparticipating inWebQuery-driven filtering.Methods inherited from class in.co.akshitbansal.springwebquery.resolver.spring.AbstractWebQueryResolver
getWebQueryAnnotation
-
Field Details
-
rsqlParser
protected final cz.jirutka.rsql.parser.RSQLParser rsqlParserParser configured with the allowed default and custom comparison operators. -
customPredicates
Custom predicates adapted forrsql-jpaspecification conversion. -
validationRSQLVisitorFactory
Factory used to create validation visitors matching the active query contract.
-
-
Constructor Details
-
AbstractWebQuerySpecificationArgumentResolver
public AbstractWebQuerySpecificationArgumentResolver()
-
-
Method Details
-
supportsParameter
public boolean supportsParameter(org.springframework.core.MethodParameter parameter) Determines whether the supplied parameter should be resolved as aSpecificationparticipating inWebQuery-driven filtering.- Specified by:
supportsParameterin interfaceorg.springframework.web.method.support.HandlerMethodArgumentResolver- Overrides:
supportsParameterin classAbstractWebQueryResolver- Parameters:
parameter- method parameter under inspection- Returns:
truewhen the parameter type is assignable toSpecificationand the declaring method is annotated withWebQuery
-
resolveArgument
public org.springframework.data.jpa.domain.Specification<?> resolveArgument(org.springframework.core.MethodParameter parameter, @Nullable org.springframework.web.method.support.ModelAndViewContainer mavContainer, org.springframework.web.context.request.NativeWebRequest webRequest, @Nullable org.springframework.web.bind.support.WebDataBinderFactory binderFactory) Resolves the incoming request into a validatedSpecificationusing the effective query configuration for the current controller method.- Parameters:
parameter- method parameter being resolvedmavContainer- current model/view container, if anywebRequest- current native web requestbinderFactory- web data binder factory, if available- Returns:
- resolved specification for the current request, or
Specification.unrestricted()when no filter is supplied - Throws:
QueryException- when query-specific validation failsQueryConfigurationException- when specification resolution fails unexpectedly
-
resolveSpecification
protected abstract org.springframework.data.jpa.domain.Specification<?> resolveSpecification(SpecificationArgumentResolverConfig queryConfig, String filter) Resolves a validated specification for the supplied raw filter value and effective query configuration.- Parameters:
queryConfig- effective query configuration derived fromWebQueryfilter- raw RSQL filter expression from the request- Returns:
- resolved specification
-
getQueryConfiguration
protected SpecificationArgumentResolverConfig getQueryConfiguration(org.springframework.core.MethodParameter parameter) Resolves the effective query configuration by combining method-levelWebQuerysettings with the configured global fallbacks.A blank
WebQuery.filterParamName()delegates to the resolver's configured global default filter parameter name. Non-blank annotation overrides are validated before they are used for request lookup.- Parameters:
parameter- supported method parameter whose declaring method carriesWebQuery- Returns:
- effective configuration used by specification resolvers for validation and parsing
-