[
https://jira.jboss.org/browse/WELDX-185?page=com.atlassian.jira.plugin.sy...
]
Dan Allen commented on WELDX-185:
---------------------------------
Hm, it turns out there may have been some confusion around what makes up a
ValueExpression. A ValueExpression may contain any number of inline variable expressions
mixed with literal text. So for this case, we don't need an interpolator. It's
just a documentation (and test case) issue.
Assert.assertEquals("Cheetahs are fast",
expressions.evaluateValueExpression("Cheetahs are #{cheetah.speed}",
String.class));
Assert.assertEquals((Integer) 2, expressions.evaluateValueExpression("#{1 + 1}",
Integer.class));
However, there are still reasons to provide an interpolator.
An interpolator would additionally handle replacing positional and named parameters.
Positional parameters can be handled by passing the result through MessageFormat:
Assert.assertEquals("Jon has a score of 97",
MessageFormat.format(expressions.evaluateValueExpression("#{person.name} has a score
of {0}", String.class), 97));
In addition to encapsulating the MessageFormat usage, the interpolator can hides the cast
of the evaluation result to a String. With the interpolator, this assertion simplifies
to:
Assert.assertEquals("Jon has a score of 97",
interpolator.interpolate("#{person.name} has a score of {0}", 97));
I'm unsure whether there is value in named parameters. Though for developers familiar
with JPQL and Bean Validation, the experience would be similar:
Assert.assertEquals("Jon has a score of 97",
InterpolatedStringBuilder.expressionString("#{person.name} has a score of
{score}").setParameter("score", 97).interpolate());
This builder concept has already been prototyped in the international module, though with
a slightly different focus. It's important to align.
Implement an interpolator for strings containing expressions
------------------------------------------------------------
Key: WELDX-185
URL:
https://jira.jboss.org/browse/WELDX-185
Project: Weld Extensions
Issue Type: Feature Request
Affects Versions: 1.0.0.Beta1
Reporter: Dan Allen
Fix For: 1.0.0.Beta2
Since Weld Extensions has adopted the EL expression resolver, it's fitting that it
also provides an interpolator for strings containing EL expression.
Provide an interpolator that resolves EL expressions and position parameters in strings.
This feature was available in Seam 2 [1]. Since it's not provided yet in Seam 3, we
see it showing up as a utility in various modules, including the International [2] and
REST [3] modules. We should consolidate this to a single, authoritative source.
It should probably be made an interface with implementations that process specific
expression languages, such as EL. For instance, one implementation might interpret MVEL.
Just an idea.
[1]
http://anonsvn.jboss.org/repos/seam/branches/community/Seam_2_2/src/main/...
[2]
https://github.com/seam/international/raw/master/impl/src/main/java/org/j...
[3]
https://github.com/seam/rest/raw/master/impl/src/main/java/org/jboss/seam...
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira