Class ValidationRSQLVisitor

java.lang.Object
in.co.akshitbansal.springwebquery.ValidationRSQLVisitor
All Implemented Interfaces:
cz.jirutka.rsql.parser.ast.RSQLVisitor<Void,NodeMetadata>
Direct Known Subclasses:
DTOValidationRSQLVisitor, EntityValidationRSQLVisitor

public abstract class ValidationRSQLVisitor extends Object implements cz.jirutka.rsql.parser.ast.RSQLVisitor<Void,NodeMetadata>
Base RSQL AST visitor that enforces logical operator and depth constraints.

Subclasses are responsible for validating ComparisonNode details, while this base class handles:

  • Disallowing AND/OR nodes based on configuration.
  • Ensuring the AST does not exceed the configured maximum depth.
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected abstract void
    validateComparisonNode(cz.jirutka.rsql.parser.ast.ComparisonNode node)
    Validates a comparison node for field/operator correctness.
    protected void
    validateNode(cz.jirutka.rsql.parser.ast.Node node, NodeMetadata metadata)
    Validates logical operator usage and depth constraints for the given node.
    visit(cz.jirutka.rsql.parser.ast.AndNode node, NodeMetadata metadata)
    Validates AND nodes and recursively visits child nodes.
    visit(cz.jirutka.rsql.parser.ast.ComparisonNode node, NodeMetadata metadata)
    Validates comparison nodes and delegates field/operator validation.
    visit(cz.jirutka.rsql.parser.ast.OrNode node, NodeMetadata metadata)
    Validates OR nodes and recursively visits child nodes.

    Methods inherited from class java.lang.Object

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

    • ValidationRSQLVisitor

      public ValidationRSQLVisitor()
  • Method Details

    • visit

      public Void visit(cz.jirutka.rsql.parser.ast.AndNode node, NodeMetadata metadata)
      Validates AND nodes and recursively visits child nodes.
      Specified by:
      visit in interface cz.jirutka.rsql.parser.ast.RSQLVisitor<Void,NodeMetadata>
      Parameters:
      node - AND node to validate
      metadata - traversal metadata including current depth
      Returns:
      null (visitor contract)
    • visit

      public Void visit(cz.jirutka.rsql.parser.ast.OrNode node, NodeMetadata metadata)
      Validates OR nodes and recursively visits child nodes.
      Specified by:
      visit in interface cz.jirutka.rsql.parser.ast.RSQLVisitor<Void,NodeMetadata>
      Parameters:
      node - OR node to validate
      metadata - traversal metadata including current depth
      Returns:
      null (visitor contract)
    • visit

      public Void visit(cz.jirutka.rsql.parser.ast.ComparisonNode node, NodeMetadata metadata)
      Validates comparison nodes and delegates field/operator validation.
      Specified by:
      visit in interface cz.jirutka.rsql.parser.ast.RSQLVisitor<Void,NodeMetadata>
      Parameters:
      node - comparison node to validate
      metadata - traversal metadata including current depth
      Returns:
      null (visitor contract)
    • validateComparisonNode

      protected abstract void validateComparisonNode(cz.jirutka.rsql.parser.ast.ComparisonNode node)
      Validates a comparison node for field/operator correctness.
      Parameters:
      node - comparison node to validate
    • validateNode

      protected void validateNode(cz.jirutka.rsql.parser.ast.Node node, NodeMetadata metadata)
      Validates logical operator usage and depth constraints for the given node.
      Parameters:
      node - node to validate
      metadata - node metadata including current depth
      Throws:
      QueryValidationException - if an operator is disallowed or the depth exceeds the limit