<div dir="ltr">Created <a href="https://hibernate.atlassian.net/browse/BVAL-469">https://hibernate.atlassian.net/browse/BVAL-469</a><div><br></div><div>--Gunnar</div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">
2013/11/18 Emmanuel Bernard <span dir="ltr">&lt;<a href="mailto:emmanuel@hibernate.org" target="_blank">emmanuel@hibernate.org</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
That makes sense.<br>
Can you open a BVAL issue to clarify the possibility in the spec and add<br>
the relevent bits of this conversation?<br>
<div class="HOEnZb"><div class="h5"><br>
On Mon 2013-11-18 16:31, Gunnar Morling wrote:<br>
&gt; I think the algorithm should cover for that case, even if we didn&#39;t plan<br>
&gt; for it.<br>
&gt;<br>
&gt; In steps 1 - 4 only message parameters are resolved (against the resource<br>
&gt; bundles and then in step 4 against constraint attributes). Only in step 5<br>
&gt; the EL evaluation is performed. There is no loop back to parameter<br>
&gt; resolution after EL interpolation.<br>
&gt;<br>
&gt; So considering the following example:<br>
&gt;<br>
&gt;     @ThresholdMax(value=10, messageThreshold=50, message=&quot;${validatedValue<br>
&gt; &gt; {messageThreshold} ? &#39;{muchTooLarge.message}&#39; :<br>
&gt; &#39;{aBitTooLarge.message}&#39;}&quot;)<br>
&gt;     int myInt = ...;<br>
&gt;<br>
&gt; Then I&#39;d say algorithm should transform the message like this:<br>
&gt;<br>
&gt; After step 3 (resource bundle replacements): &quot;${validatedValue &gt;<br>
&gt; {messageThreshold} ? &#39;Viel zu groß&#39; : &#39;Zu groß&#39;}&quot;<br>
&gt; After step 4 (resolution of constraint attributes): &quot;${validatedValue &gt; 50<br>
&gt; ? &#39;Viel zu groß&#39; : &#39;Zu groß&#39;}&quot;<br>
&gt; After step 5 (EL evaluation): &quot;Viel zu groß&quot; or &quot;Zu groß&quot;, depending on the<br>
&gt; threshold value<br>
&gt;<br>
&gt; --Gunnar<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; 2013/11/18 Emmanuel Bernard &lt;<a href="mailto:emmanuel@hibernate.org">emmanuel@hibernate.org</a>&gt;<br>
&gt;<br>
&gt; &gt; Depending how the spec is written it might already be too late but I<br>
&gt; &gt; would definitely like something like that to happen.<br>
&gt; &gt;<br>
&gt; &gt; We just need to be careful, which interpolation should happen first or<br>
&gt; &gt; if we want to do them in a loop until the system rests.<br>
&gt; &gt;<br>
&gt; &gt; On Mon 2013-11-18  9:32, Gunnar Morling wrote:<br>
&gt; &gt; &gt; Hi,<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; I came across an interesting case in the HV user forum [1], where a user<br>
&gt; &gt; is<br>
&gt; &gt; &gt; essentially nesting messages parameters within an EL expression:<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;     ${validatedValue &gt; someValue ? &#39;{x.y.z.message}&#39; : &#39;{x.y.w.message}&#39;}<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; The expectation is that at first the two message parameters are resolved<br>
&gt; &gt; &gt; and then based on the conditional expression the outer EL expression<br>
&gt; &gt; either<br>
&gt; &gt; &gt; resolves to one message or the other.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; This is currently not supported in HV, but reading the interpolation<br>
&gt; &gt; &gt; algorithm in the spec [2] I can&#39;t find anything indicating that this case<br>
&gt; &gt; &gt; would prohibited. On the other hand I&#39;m not sure whether we intentionally<br>
&gt; &gt; &gt; meant to support it (at least it never occurred to me); if so, I think we<br>
&gt; &gt; &gt; should provide an example for this in the spec.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; The use case seems valid to me, also for cases where one wants to refer<br>
&gt; &gt; to<br>
&gt; &gt; &gt; constraint attributes in conditional logic. Any thoughts?<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; --Gunnar<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; [1] <a href="https://forum.hibernate.org/viewtopic.php?f=9&amp;t=1029782" target="_blank">https://forum.hibernate.org/viewtopic.php?f=9&amp;t=1029782</a><br>
&gt; &gt; &gt; [2] <a href="http://beanvalidation.org/1.1/spec/#default-resolution-algorithm" target="_blank">http://beanvalidation.org/1.1/spec/#default-resolution-algorithm</a><br>
&gt; &gt;<br>
&gt; &gt; &gt; _______________________________________________<br>
&gt; &gt; &gt; beanvalidation-dev mailing list<br>
&gt; &gt; &gt; <a href="mailto:beanvalidation-dev@lists.jboss.org">beanvalidation-dev@lists.jboss.org</a><br>
&gt; &gt; &gt; <a href="https://lists.jboss.org/mailman/listinfo/beanvalidation-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/beanvalidation-dev</a><br>
&gt; &gt;<br>
&gt; &gt; _______________________________________________<br>
&gt; &gt; beanvalidation-dev mailing list<br>
&gt; &gt; <a href="mailto:beanvalidation-dev@lists.jboss.org">beanvalidation-dev@lists.jboss.org</a><br>
&gt; &gt; <a href="https://lists.jboss.org/mailman/listinfo/beanvalidation-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/beanvalidation-dev</a><br>
&gt; &gt;<br>
<br>
&gt; _______________________________________________<br>
&gt; beanvalidation-dev mailing list<br>
&gt; <a href="mailto:beanvalidation-dev@lists.jboss.org">beanvalidation-dev@lists.jboss.org</a><br>
&gt; <a href="https://lists.jboss.org/mailman/listinfo/beanvalidation-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/beanvalidation-dev</a><br>
<br>
_______________________________________________<br>
beanvalidation-dev mailing list<br>
<a href="mailto:beanvalidation-dev@lists.jboss.org">beanvalidation-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/beanvalidation-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/beanvalidation-dev</a><br>
</div></div></blockquote></div><br></div>