Class WebQuerySpecificationArgumentResolver

java.lang.Object
in.co.akshitbansal.springwebquery.resolver.spring.AbstractWebQueryResolver
in.co.akshitbansal.springwebquery.resolver.spring.WebQuerySpecificationArgumentResolver
All Implemented Interfaces:
org.springframework.web.method.support.HandlerMethodArgumentResolver

public class WebQuerySpecificationArgumentResolver extends AbstractWebQueryResolver
Unified HandlerMethodArgumentResolver for resolving RSQL-based Specification parameters.

This resolver merges WebQuery annotation settings with global defaults, reads the raw RSQL filter from the effective request parameter, validates the parsed AST, and builds the final specification directly for either DTO-aware or entity-aware query contracts.

  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    getQueryConfiguration(org.springframework.core.MethodParameter parameter)
    Resolves the effective query configuration by combining method-level WebQuery settings 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 validated Specification using the effective query configuration for the current controller method.
    boolean
    supportsParameter(org.springframework.core.MethodParameter parameter)
    Determines whether the supplied parameter should be resolved as a Specification participating in WebQuery-driven filtering.

    Methods inherited from class in.co.akshitbansal.springwebquery.resolver.spring.AbstractWebQueryResolver

    getWebQueryAnnotation

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • WebQuerySpecificationArgumentResolver

      public WebQuerySpecificationArgumentResolver()
  • Method Details

    • supportsParameter

      public boolean supportsParameter(org.springframework.core.MethodParameter parameter)
      Determines whether the supplied parameter should be resolved as a Specification participating in WebQuery-driven filtering.
      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 parameter type is assignable to Specification and the declaring method is annotated with WebQuery
    • 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 validated Specification using the effective query configuration for the current controller method.
      Parameters:
      parameter - method parameter being resolved
      mavContainer - current model/view container, if any
      webRequest - current native web request
      binderFactory - 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 fails
      QueryConfigurationException - when specification resolution fails unexpectedly
    • getQueryConfiguration

      protected SpecificationArgumentResolverConfig getQueryConfiguration(org.springframework.core.MethodParameter parameter)
      Resolves the effective query configuration by combining method-level WebQuery settings with the configured global fallbacks.

      A blank WebQuery.filterParamName() delegates to the resolver's configured global default filter parameter name. Declared field mappings are also validated eagerly so configuration errors are surfaced before request parsing begins.

      Parameters:
      parameter - supported method parameter whose declaring method carries WebQuery
      Returns:
      effective configuration used by specification resolvers for validation and parsing