Class AbstractWebQueryPageableArgumentResolver

java.lang.Object
in.co.akshitbansal.springwebquery.resolver.spring.AbstractWebQueryResolver
in.co.akshitbansal.springwebquery.resolver.spring.AbstractWebQueryPageableArgumentResolver
All Implemented Interfaces:
org.springframework.web.method.support.HandlerMethodArgumentResolver
Direct Known Subclasses:
WebQueryDTOAwarePageableArgumentResolver, WebQueryEntityAwarePageableArgumentResolver

public abstract class AbstractWebQueryPageableArgumentResolver extends AbstractWebQueryResolver
Base resolver for Pageable parameters participating in WebQuery-aware sorting.

This class delegates standard page/size parsing to Spring's PageableHandlerMethodArgumentResolver and lets subclasses validate and remap sort properties against either entity or DTO metadata.

  • Field Details

    • delegate

      protected final org.springframework.data.web.PageableHandlerMethodArgumentResolver delegate
      Delegate used to parse raw pageable parameters from the request.
    • sortableFieldValidator

      protected final Validator<SortableFieldValidator.Field> sortableFieldValidator
      Validator used to enforce @Sortable constraints on resolved sort fields.
  • Constructor Details

    • AbstractWebQueryPageableArgumentResolver

      protected AbstractWebQueryPageableArgumentResolver(org.springframework.data.web.PageableHandlerMethodArgumentResolver delegate, boolean globalAllowAndOperator, boolean globalAllowOrOperator, int globalMaxASTDepth)
      Creates a pageable resolver base with shared global defaults.
      Parameters:
      delegate - Spring's pageable resolver used for base pagination parsing
      globalAllowAndOperator - global fallback for logical AND allowance
      globalAllowOrOperator - global fallback for logical OR allowance
      globalMaxASTDepth - global fallback for maximum AST depth
  • Method Details

    • supportsParameter

      public boolean supportsParameter(@NonNull @NonNull org.springframework.core.MethodParameter parameter)
      Description copied from class: AbstractWebQueryResolver
      Determines whether the supplied method parameter belongs to a controller method annotated with WebQuery.

      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:
      supportsParameter in interface org.springframework.web.method.support.HandlerMethodArgumentResolver
      Overrides:
      supportsParameter in class AbstractWebQueryResolver
      Parameters:
      parameter - method parameter under inspection
      Returns:
      true when the declaring method has WebQuery, otherwise false
    • resolveArgument

      public org.springframework.data.domain.Pageable resolveArgument(@NonNull @NonNull org.springframework.core.MethodParameter parameter, org.springframework.web.method.support.ModelAndViewContainer mavContainer, @NonNull @NonNull org.springframework.web.context.request.NativeWebRequest webRequest, org.springframework.web.bind.support.WebDataBinderFactory binderFactory)
    • resolvePageable

      protected abstract org.springframework.data.domain.Pageable resolvePageable(org.springframework.data.domain.Pageable pageable, AbstractWebQueryResolver.QueryConfiguration queryConfig)
      Validates and remaps pageable sorting according to the effective query configuration.
      Parameters:
      pageable - pageable parsed from the request
      queryConfig - effective query configuration derived from WebQuery
      Returns:
      pageable with validated and possibly remapped sort orders