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) 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 method parameter belongs to a controller method annotated withWebQuery.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) Description copied from class:AbstractWebQueryResolverDetermines whether the supplied method parameter belongs to a controller method annotated withWebQuery.This base implementation uses
AbstractWebQueryResolver.getWebQueryAnnotation(MethodParameter)as the single source of truth for annotation lookup. Missing methods or missing annotations are treated as "not supported" rather than exceptional conditions so Spring MVC can continue evaluating other resolvers.- Specified by:
supportsParameterin interfaceorg.springframework.web.method.support.HandlerMethodArgumentResolver- Overrides:
supportsParameterin classAbstractWebQueryResolver- Parameters:
parameter- method parameter under inspection- Returns:
truewhen the declaring method hasWebQuery, otherwisefalse
-
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) -
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
-