Class EntityAwareRsqlSpecArgumentResolver

java.lang.Object
in.co.akshitbansal.springwebquery.resolver.RsqlSpecArgumentResolver
in.co.akshitbansal.springwebquery.resolver.EntityAwareRsqlSpecArgumentResolver
All Implemented Interfaces:
org.springframework.web.method.support.HandlerMethodArgumentResolver

public class EntityAwareRsqlSpecArgumentResolver extends RsqlSpecArgumentResolver
Entity-based resolver for Specification parameters annotated with RsqlSpec.

This resolver is active when WebQuery.dtoClass() is not configured (i.e. equals void.class). It validates incoming RSQL selectors against entity fields and optional FieldMapping aliases before producing a JPA specification.

  • Constructor Details

    • EntityAwareRsqlSpecArgumentResolver

      public EntityAwareRsqlSpecArgumentResolver(Set<RsqlOperator> defaultOperators, Set<? extends RsqlCustomOperator<?>> customOperators, AnnotationUtil annotationUtil)
      Creates an entity-aware RSQL specification resolver.
      Parameters:
      defaultOperators - built-in operators accepted in RSQL expressions
      customOperators - custom operators supported by parser and predicates
      annotationUtil - utility for resolving annotations and configuration checks
  • Method Details

    • supportsParameter

      public boolean supportsParameter(org.springframework.core.MethodParameter parameter)
      Determines whether this resolver should handle the given parameter.
      Parameters:
      parameter - method parameter under inspection
      Returns:
      true when parameter is a Specification with RsqlSpec and no DTO class is configured
    • resolveArgument

      public @Nullable Object resolveArgument(@NonNull @NonNull org.springframework.core.MethodParameter parameter, @Nullable org.springframework.web.method.support.ModelAndViewContainer mavContainer, @NonNull @NonNull org.springframework.web.context.request.NativeWebRequest webRequest, @Nullable org.springframework.web.bind.support.WebDataBinderFactory binderFactory) throws Exception
      Resolves a Specification from the configured RSQL request parameter.
      Parameters:
      parameter - controller method parameter being resolved
      mavContainer - current MVC container
      webRequest - current request
      binderFactory - binder factory
      Returns:
      resolved specification, or Specification.unrestricted() when no filter exists
      Throws:
      Exception - when resolution fails