public abstract class TemplateAwareExpressionParser extends java.lang.Object implements ExpressionParser
Modifier and Type | Class and Description |
---|---|
private static class |
TemplateAwareExpressionParser.Bracket
This captures a type of bracket and the position in which it occurs in the
expression.
|
Modifier and Type | Field and Description |
---|---|
private static ParserContext |
NON_TEMPLATE_PARSER_CONTEXT
Default ParserContext instance for non-template expressions.
|
Constructor and Description |
---|
TemplateAwareExpressionParser() |
Modifier and Type | Method and Description |
---|---|
protected abstract Expression |
doParseExpression(java.lang.String expressionString,
ParserContext context)
Actually parse the expression string and return an Expression object.
|
private boolean |
isSuffixHere(java.lang.String expressionString,
int pos,
java.lang.String suffix)
Return true if the specified suffix can be found at the supplied position in the
supplied expression string.
|
Expression |
parseExpression(java.lang.String expressionString)
Parse the expression string and return an Expression object you can use for repeated evaluation.
|
Expression |
parseExpression(java.lang.String expressionString,
ParserContext context)
Parse the expression string and return an Expression object you can use for repeated evaluation.
|
private Expression[] |
parseExpressions(java.lang.String expressionString,
ParserContext context)
Helper that parses given expression string using the configured parser.
|
private Expression |
parseTemplate(java.lang.String expressionString,
ParserContext context) |
private int |
skipToCorrectEndSuffix(java.lang.String suffix,
java.lang.String expressionString,
int afterPrefixIndex)
Copes with nesting, for example '${...${...}}' where the correct end for the first
${ is the final }.
|
private static final ParserContext NON_TEMPLATE_PARSER_CONTEXT
public Expression parseExpression(java.lang.String expressionString) throws ParseException
ExpressionParser
Some examples:
3 + 4 name.firstName
parseExpression
in interface ExpressionParser
expressionString
- the raw expression string to parseParseException
- an exception occurred during parsingpublic Expression parseExpression(java.lang.String expressionString, ParserContext context) throws ParseException
ExpressionParser
Some examples:
3 + 4 name.firstName
parseExpression
in interface ExpressionParser
expressionString
- the raw expression string to parsecontext
- a context for influencing this expression parsing routine (optional)ParseException
- an exception occurred during parsingprivate Expression parseTemplate(java.lang.String expressionString, ParserContext context) throws ParseException
ParseException
private Expression[] parseExpressions(java.lang.String expressionString, ParserContext context) throws ParseException
expressionString
- the expression stringParseException
- when the expressions cannot be parsedprivate boolean isSuffixHere(java.lang.String expressionString, int pos, java.lang.String suffix)
expressionString
- the expression string which may contain the suffixpos
- the start position at which to check for the suffixsuffix
- the suffix stringprivate int skipToCorrectEndSuffix(java.lang.String suffix, java.lang.String expressionString, int afterPrefixIndex) throws ParseException
suffix
- the suffixexpressionString
- the expression stringafterPrefixIndex
- the most recently found prefix location for which the
matching end suffix is being soughtParseException
protected abstract Expression doParseExpression(java.lang.String expressionString, ParserContext context) throws ParseException
expressionString
- the raw expression string to parsecontext
- a context for influencing this expression parsing routine (optional)ParseException
- an exception occurred during parsing