Class ValidationRSQLVisitor
java.lang.Object
in.co.akshitbansal.springwebquery.ast.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 structural validation rules while
delegating selector-specific checks to subclasses.
This base class is responsible for:
- Disallowing logical AND/OR nodes based on configuration.
- Ensuring the AST does not exceed the configured maximum depth.
- Providing access to a reusable validator for filterable terminal fields.
Concrete subclasses validate individual ComparisonNode selectors
against either entity fields or DTO fields and invoke the shared
filterableFieldValidator as needed.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final Validator<FilterableFieldValidator.Field>Validator used by subclasses to enforce@RSQLFilterableconstraints on resolved terminal fields. -
Constructor Summary
ConstructorsConstructorDescriptionValidationRSQLVisitor(Map<Class<?>, RSQLCustomOperator<?>> customOperators, boolean andNodeAllowed, boolean orNodeAllowed, int maxDepth) Creates a validation visitor with the supplied structural limits and custom operator registry. -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract voidvalidateComparisonNode(cz.jirutka.rsql.parser.ast.ComparisonNode node) Validates a comparison node for field/operator correctness.protected voidvalidateNode(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.
-
Field Details
-
filterableFieldValidator
Validator used by subclasses to enforce@RSQLFilterableconstraints on resolved terminal fields.
-
-
Constructor Details
-
ValidationRSQLVisitor
public ValidationRSQLVisitor(Map<Class<?>, RSQLCustomOperator<?>> customOperators, boolean andNodeAllowed, boolean orNodeAllowed, int maxDepth) Creates a validation visitor with the supplied structural limits and custom operator registry.- Parameters:
customOperators- registered custom operators keyed by implementation classandNodeAllowed- whether logical AND nodes are allowedorNodeAllowed- whether logical OR nodes are allowedmaxDepth- maximum allowed AST depth
-
-
Method Details
-
visit
Validates AND nodes and recursively visits child nodes.- Specified by:
visitin interfacecz.jirutka.rsql.parser.ast.RSQLVisitor<Void,NodeMetadata> - Parameters:
node- AND node to validatemetadata- traversal metadata including current depth- Returns:
null(visitor contract)
-
visit
Validates OR nodes and recursively visits child nodes.- Specified by:
visitin interfacecz.jirutka.rsql.parser.ast.RSQLVisitor<Void,NodeMetadata> - Parameters:
node- OR node to validatemetadata- traversal metadata including current depth- Returns:
null(visitor contract)
-
visit
Validates comparison nodes and delegates field/operator validation.- Specified by:
visitin interfacecz.jirutka.rsql.parser.ast.RSQLVisitor<Void,NodeMetadata> - Parameters:
node- comparison node to validatemetadata- 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
Validates logical operator usage and depth constraints for the given node.- Parameters:
node- node to validatemetadata- node metadata including current depth- Throws:
QueryValidationException- if an operator is disallowed or the depth exceeds the limit
-