Class FilterVisitor
- java.lang.Object
-
- org.antlr.v4.runtime.tree.AbstractParseTreeVisitor<T>
-
- de.captaingoldfish.scim.sdk.server.filter.antlr.ScimFilterBaseVisitor<FilterNode>
-
- de.captaingoldfish.scim.sdk.server.filter.antlr.FilterVisitor
-
- All Implemented Interfaces:
ScimFilterVisitor<FilterNode>,org.antlr.v4.runtime.tree.ParseTreeVisitor<FilterNode>
public class FilterVisitor extends ScimFilterBaseVisitor<FilterNode>
author Pascal Knueppel
created at: 16.10.2019 - 12:09
The FilterVisitor iterates through the parsed SCIM-filter-tree and calls the here overridden methods for the specific nodes that have been visited.
This visitor will then build its own tree consisting ofFilterNodes that will hold all necessary informations about the filter expression
-
-
Constructor Summary
Constructors Constructor Description FilterVisitor(ResourceType resourceType)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description FilterNodevisitAndExpression(ScimFilterParser.AndExpressionContext ctx)builds anAndExpressionNodeFilterNodevisitAttributeExpression(ScimFilterParser.AttributeExpressionContext ctx)builds a leaf node in the tree.FilterNodevisitNotExpression(ScimFilterParser.NotExpressionContext ctx)builds aNotExpressionNodeFilterNodevisitOrExpression(ScimFilterParser.OrExpressionContext ctx)builds anOrExpressionNodeFilterNodevisitParenthesisExpression(ScimFilterParser.ParenthesisExpressionContext ctx)ignores this node and proceeds with the child of this node.FilterNodevisitValuePath(ScimFilterParser.ValuePathContext ctx)will resolve a value path that is representing a bracket filter notation-
Methods inherited from class de.captaingoldfish.scim.sdk.server.filter.antlr.ScimFilterBaseVisitor
visitAttrExpression, visitAttributePath, visitCompareOperator, visitCompareValue, visitValuePathExpression
-
Methods inherited from class org.antlr.v4.runtime.tree.AbstractParseTreeVisitor
aggregateResult, defaultResult, shouldVisitNextChild, visit, visitChildren, visitErrorNode, visitTerminal
-
-
-
-
Constructor Detail
-
FilterVisitor
public FilterVisitor(ResourceType resourceType)
-
-
Method Detail
-
visitNotExpression
public FilterNode visitNotExpression(ScimFilterParser.NotExpressionContext ctx)
builds aNotExpressionNode- Specified by:
visitNotExpressionin interfaceScimFilterVisitor<FilterNode>- Overrides:
visitNotExpressionin classScimFilterBaseVisitor<FilterNode>- Parameters:
ctx- the parsing context from antlr- Returns:
- a
NotExpressionNodethat contains theFilterNodethat should be negated
-
visitOrExpression
public FilterNode visitOrExpression(ScimFilterParser.OrExpressionContext ctx)
builds anOrExpressionNode- Specified by:
visitOrExpressionin interfaceScimFilterVisitor<FilterNode>- Overrides:
visitOrExpressionin classScimFilterBaseVisitor<FilterNode>- Parameters:
ctx- the parsing context from antlr- Returns:
- an
OrExpressionNodethat contains the left and the rightFilterNodethe expression
-
visitAndExpression
public FilterNode visitAndExpression(ScimFilterParser.AndExpressionContext ctx)
builds anAndExpressionNode- Specified by:
visitAndExpressionin interfaceScimFilterVisitor<FilterNode>- Overrides:
visitAndExpressionin classScimFilterBaseVisitor<FilterNode>- Parameters:
ctx- the parsing context from antlr- Returns:
- an
AndExpressionNodethat contains the left and the rightFilterNodethe expression
-
visitParenthesisExpression
public FilterNode visitParenthesisExpression(ScimFilterParser.ParenthesisExpressionContext ctx)
ignores this node and proceeds with the child of this node. We do not need to evaluate the parenthesis directly because this is implicitly done by antlr in the way the tree is build- Specified by:
visitParenthesisExpressionin interfaceScimFilterVisitor<FilterNode>- Overrides:
visitParenthesisExpressionin classScimFilterBaseVisitor<FilterNode>- Parameters:
ctx- the parsing context from antlr- Returns:
- a
FilterNodethat might be any otherFilterNodeimplementation
-
visitAttributeExpression
public FilterNode visitAttributeExpression(ScimFilterParser.AttributeExpressionContext ctx)
builds a leaf node in the tree. The leaf nodes do contain all necessary data to evaluate the filter and to use them to build jpa predicates for example- Specified by:
visitAttributeExpressionin interfaceScimFilterVisitor<FilterNode>- Overrides:
visitAttributeExpressionin classScimFilterBaseVisitor<FilterNode>- Parameters:
ctx- the parsing context from antlr- Returns:
- an
AttributeExpressionLeafthat does contain all necessary data and meta-data
-
visitValuePath
public FilterNode visitValuePath(ScimFilterParser.ValuePathContext ctx)
will resolve a value path that is representing a bracket filter notation- Specified by:
visitValuePathin interfaceScimFilterVisitor<FilterNode>- Overrides:
visitValuePathin classScimFilterBaseVisitor<FilterNode>- Parameters:
ctx- the parsing context from antlr- Returns:
- resolves the bracket notation into a normal filter expression
-
-