|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.commons.jexl2.UnifiedJEXL
public final class UnifiedJEXL
An evaluator similar to the Unified EL evaluator used in JSP/JSF based on JEXL. It is intended to be used in configuration modules, XML based frameworks or JSP taglibs and facilitate the implementation of expression evaluation.
An expression can mix immediate, deferred and nested sub-expressions as well as string constants;
"...${jexl-expr}..."
"...#{jexl-expr}..."
"...#{...${jexl-expr0}...}..."
"...${jexl-expr0}... #{jexl-expr1}..."
Deferred & immediate expression carry different intentions:
For instance: "Hello ${name}, now is #{time}"
is a composite "deferred" expression since one
of its subexpressions is deferred. Furthermore, this (composite) expression intent is
to perform two evaluations; one close to its definition and another one in a later
phase.
The API reflects this feature in 2 methods, prepare and evaluate. The prepare method will evaluate the immediate subexpression and return an expression that contains only the deferred subexpressions (& constants), a prepared expression. Such a prepared expression is suitable for a later phase evaluation that may occur with a different JexlContext. Note that it is valid to call evaluate without prepare in which case the same JexlContext is used for the 2 evaluation phases.
In the most common use-case where deferred expressions are to be kept around as properties of objects, one should parse & prepare an expression before storing it and evaluate it each time the property storing it is accessed.
Note that nested expression use the JEXL syntax as in:
"#{${bar}+'.charAt(2)'}"
The most common mistake leading to an invalid expression being the following:
"#{${bar}charAt(2)}"
Also note that methods that parse evaluate expressions may throw unchecked exceptions;
The UnifiedJEXL.Exception
are thrown when the engine instance is in "non-silent" mode
but since these are RuntimeException, user-code should catch them where appropriate.
Nested Class Summary | |
---|---|
static class |
UnifiedJEXL.Exception
The sole type of (runtime) exception the UnifiedJEXL can throw. |
class |
UnifiedJEXL.Expression
The abstract base class for all expressions, immediate '${...}' and deferred '#{...}'. |
class |
UnifiedJEXL.Template
A Template is a script that evaluates by writing its content through a Writer. |
class |
UnifiedJEXL.TemplateContext
The type of context to use during evaluation of templates. |
Constructor Summary | |
---|---|
UnifiedJEXL(JexlEngine aJexl)
Creates a new instance of UnifiedJEXL with a default size cache. |
|
UnifiedJEXL(JexlEngine aJexl,
int cacheSize)
Creates a new instance of UnifiedJEXL creating a local cache. |
Method Summary | |
---|---|
void |
clearCache()
Clears the cache. |
UnifiedJEXL.Template |
createTemplate(String source)
Creates a new template. |
UnifiedJEXL.Template |
createTemplate(String prefix,
Reader source,
String... parms)
Creates a new template. |
UnifiedJEXL.Template |
createTemplate(String source,
String... parms)
Creates a new template. |
JexlEngine |
getEngine()
Gets the JexlEngine underlying the UnifiedJEXL. |
UnifiedJEXL.Expression |
parse(String expression)
Creates a a UnifiedJEXL.Expression from an expression string. |
protected List<org.apache.commons.jexl2.UnifiedJEXL.TemplateBlock> |
readTemplate(String prefix,
Reader source)
Reads lines of a template grouping them by typed blocks. |
protected int |
startsWith(CharSequence sequence,
CharSequence pattern)
Whether a sequence starts with a given set of characters (following spaces). |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public UnifiedJEXL(JexlEngine aJexl)
aJexl
- the JexlEngine to use.public UnifiedJEXL(JexlEngine aJexl, int cacheSize)
aJexl
- the JexlEngine to use.cacheSize
- the number of expressions in this cacheMethod Detail |
---|
public JexlEngine getEngine()
public void clearCache()
public UnifiedJEXL.Expression parse(String expression)
UnifiedJEXL.Expression
from an expression string.
Uses & fills up the expression cache if any.
If the underlying JEXL engine is silent, errors will be logged through its logger as warnings.
expression
- the UnifiedJEXL string expression
UnifiedJEXL.Exception
- if an error occurs and the JexlEngine
is not silentprotected int startsWith(CharSequence sequence, CharSequence pattern)
Space characters at beginning of line before the pattern are discarded.
sequence
- the sequencepattern
- the pattern to match at start of sequence
protected List<org.apache.commons.jexl2.UnifiedJEXL.TemplateBlock> readTemplate(String prefix, Reader source)
prefix
- the directive prefixsource
- the source reader
public UnifiedJEXL.Template createTemplate(String prefix, Reader source, String... parms)
prefix
- the directive prefixsource
- the sourceparms
- the parameter names
public UnifiedJEXL.Template createTemplate(String source, String... parms)
source
- the sourceparms
- the parameter names
public UnifiedJEXL.Template createTemplate(String source)
source
- the source
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |