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 Details

    • rsqlParser

      protected final cz.jirutka.rsql.parser.RSQLParser rsqlParser
      Parser configured with the allowed default and custom comparison operators.
    • customPredicates

      protected final List<io.github.perplexhub.rsql.RSQLCustomPredicate<?>> customPredicates
      Custom predicates adapted for rsql-jpa specification conversion.
    • validationRSQLVisitorFactory

      protected final ValidationRSQLVisitorFactory 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: 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.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 from WebQuery
      filter - 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-level WebQuery settings 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 carries WebQuery
      Returns:
      effective configuration used by specification resolvers for validation and parsing