Search in sources :

Example 1 with OperatorMatches

use of org.springframework.expression.spel.ast.OperatorMatches in project spring-framework by spring-projects.

the class InternalSpelExpressionParser method eatRelationalExpression.

// relationalExpression : sumExpression (relationalOperator^ sumExpression)?;
private SpelNodeImpl eatRelationalExpression() {
    SpelNodeImpl expr = eatSumExpression();
    Token relationalOperatorToken = maybeEatRelationalOperator();
    if (relationalOperatorToken != null) {
        // consume relational operator token
        Token t = nextToken();
        SpelNodeImpl rhExpr = eatSumExpression();
        checkOperands(t, expr, rhExpr);
        TokenKind tk = relationalOperatorToken.kind;
        if (relationalOperatorToken.isNumericRelationalOperator()) {
            int pos = toPos(t);
            if (tk == TokenKind.GT) {
                return new OpGT(pos, expr, rhExpr);
            }
            if (tk == TokenKind.LT) {
                return new OpLT(pos, expr, rhExpr);
            }
            if (tk == TokenKind.LE) {
                return new OpLE(pos, expr, rhExpr);
            }
            if (tk == TokenKind.GE) {
                return new OpGE(pos, expr, rhExpr);
            }
            if (tk == TokenKind.EQ) {
                return new OpEQ(pos, expr, rhExpr);
            }
            Assert.isTrue(tk == TokenKind.NE, "Not-equals token expected");
            return new OpNE(pos, expr, rhExpr);
        }
        if (tk == TokenKind.INSTANCEOF) {
            return new OperatorInstanceof(toPos(t), expr, rhExpr);
        }
        if (tk == TokenKind.MATCHES) {
            return new OperatorMatches(toPos(t), expr, rhExpr);
        }
        Assert.isTrue(tk == TokenKind.BETWEEN, "Between token expected");
        return new OperatorBetween(toPos(t), expr, rhExpr);
    }
    return expr;
}
Also used : SpelNodeImpl(org.springframework.expression.spel.ast.SpelNodeImpl) OperatorInstanceof(org.springframework.expression.spel.ast.OperatorInstanceof) OpEQ(org.springframework.expression.spel.ast.OpEQ) OpGT(org.springframework.expression.spel.ast.OpGT) OpLT(org.springframework.expression.spel.ast.OpLT) OperatorMatches(org.springframework.expression.spel.ast.OperatorMatches) OpGE(org.springframework.expression.spel.ast.OpGE) OpNE(org.springframework.expression.spel.ast.OpNE) OpLE(org.springframework.expression.spel.ast.OpLE) OperatorBetween(org.springframework.expression.spel.ast.OperatorBetween)

Aggregations

OpEQ (org.springframework.expression.spel.ast.OpEQ)1 OpGE (org.springframework.expression.spel.ast.OpGE)1 OpGT (org.springframework.expression.spel.ast.OpGT)1 OpLE (org.springframework.expression.spel.ast.OpLE)1 OpLT (org.springframework.expression.spel.ast.OpLT)1 OpNE (org.springframework.expression.spel.ast.OpNE)1 OperatorBetween (org.springframework.expression.spel.ast.OperatorBetween)1 OperatorInstanceof (org.springframework.expression.spel.ast.OperatorInstanceof)1 OperatorMatches (org.springframework.expression.spel.ast.OperatorMatches)1 SpelNodeImpl (org.springframework.expression.spel.ast.SpelNodeImpl)1