[ 
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

Reply via email to