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 initializes a parser constrained to the configured default and custom operators, and adapts custom operators into RSQLCustomPredicate instances accepted by the underlying rsql-jpa integration.

  • 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.
    • customOperators

      protected final Map<Class<?>,RSQLCustomOperator<?>> customOperators
      Registered custom operators keyed by implementation class for downstream validation visitors.
  • Constructor Details

    • AbstractWebQuerySpecificationArgumentResolver

      protected AbstractWebQuerySpecificationArgumentResolver(Set<RSQLDefaultOperator> defaultOperators, Set<? extends RSQLCustomOperator<?>> customOperators, boolean globalAllowAndOperator, boolean globalAllowOrOperator, int globalMaxASTDepth)
      Creates the resolver base with parser and predicate configuration.
      Parameters:
      defaultOperators - built-in operators accepted by the parser
      customOperators - custom operators to register for parsing and predicate generation
      globalAllowAndOperator - fallback AND-node policy used when @WebQuery defers to global settings
      globalAllowOrOperator - fallback OR-node policy used when @WebQuery defers to global settings
      globalMaxASTDepth - fallback maximum AST depth used when @WebQuery defers to global settings
  • 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.jpa.domain.Specification<?> 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)
    • resolveSpecification

      protected abstract org.springframework.data.jpa.domain.Specification<?> resolveSpecification(@NonNull @NonNull AbstractWebQueryResolver.QueryConfiguration queryConfig, @NonNull @NonNull 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