[
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
_______________________________________________
weld-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/weld-issues