[weld-issues] [JBoss JIRA] Commented: (WELDX-185) Implement an interpolator for strings containing expressions
Dan Allen (JIRA)
jira-events at lists.jboss.org
Fri Nov 5 00:18:01 EDT 2010
[ https://jira.jboss.org/browse/WELDX-185?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12561504#action_12561504 ]
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/org/jboss/seam/core/Interpolator.java
> [2] https://github.com/seam/international/raw/master/impl/src/main/java/org/jboss/seam/international/status/builder/Interpolator.java
> [3] https://github.com/seam/rest/raw/master/impl/src/main/java/org/jboss/seam/rest/util/ExpressionLanguageInterpolator.java
--
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
More information about the weld-issues
mailing list