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 SortableFieldValidator sortableFieldValidator
      Validator used to enforce @Sortable constraints on resolved sort fields.
  • Constructor Details

    • AbstractWebQueryPageableArgumentResolver

      public AbstractWebQueryPageableArgumentResolver()
  • Method Details

    • supportsParameter

      public boolean supportsParameter(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(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)
    • resolvePageable

      protected abstract org.springframework.data.domain.Pageable resolvePageable(org.springframework.data.domain.Pageable pageable, AbstractWebQueryPageableArgumentResolver.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
    • getQueryConfiguration

      protected AbstractWebQueryPageableArgumentResolver.QueryConfiguration getQueryConfiguration(org.springframework.core.MethodParameter parameter)
      Extracts pageable-specific query metadata directly from the WebQuery annotation declared on the supplied controller method.

      Unlike specification resolution, pageable handling does not consume operator policies or AST settings, so this configuration contains only the entity type, optional DTO type, and the declared field mappings retained for entity-aware sort validation and remapping.

      Parameters:
      parameter - supported method parameter whose declaring method carries WebQuery
      Returns:
      effective configuration used by pageable resolvers for sort validation