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)
      Specified by:
      supportsParameter in interface org.springframework.web.method.support.HandlerMethodArgumentResolver
      Overrides:
      supportsParameter in class AbstractWebQueryResolver
    • 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