<div dir="ltr">Yes, probably we should not support Optional for fields. Also parameters are dubious (the JDK team discourages that afaik). But supporting it for return values (and getter-based properties) seems reasonable.</div><div class="gmail_extra"><br><div class="gmail_quote">2016-11-21 14:32 GMT+01:00 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"><div style="word-wrap:break-word"><br><div><blockquote type="cite"><div>On 7 Nov 2016, at 23:42, Hendrik Ebbers &lt;<a href="mailto:hendrik.ebbers@me.com" target="_blank">hendrik.ebbers@me.com</a>&gt; wrote:</div><div><div style="word-wrap:break-word"><div><br>I don’t think that support for Optional is that important since having a field of type Optional looks like an anti-pattern to me. Normally Optional should be used as a method return type and not as a type for a field. Supporting it in the bean validation might end in strange model classes. <br><br>Example:<br><br>The following model looks good to me:<br><br><font face="Courier New">public class Model {<br><br><span class="m_-3299357515976426238Apple-tab-span" style="white-space:pre-wrap">        </span>@NotNull<br><span class="m_-3299357515976426238Apple-tab-span" style="white-space:pre-wrap">        </span>private String name; <br><br><span class="m_-3299357515976426238Apple-tab-span" style="white-space:pre-wrap">        </span>public String getName() { return name; }<br><span class="m_-3299357515976426238Apple-tab-span" style="white-space:pre-wrap">        </span><br><span class="m_-3299357515976426238Apple-tab-span" style="white-space:pre-wrap">        </span>public void setName(String name) { <a href="http://this.name" target="_blank">this.name</a> = name; }<br><br><span class="m_-3299357515976426238Apple-tab-span" style="white-space:pre-wrap">        </span>public Optional&lt;String&gt; name() { return Optional.ofNullable(name);}<br><br>}</font><br><br>On the other hand this looks like an anti-pattern to me:<br><br><font face="Courier New">public class Model {<br><br><span class="m_-3299357515976426238Apple-tab-span" style="white-space:pre-wrap">        </span>@NotNull<br><span class="m_-3299357515976426238Apple-tab-span" style="white-space:pre-wrap">        </span>private Optional&lt;String&gt; name; <br><br><span class="m_-3299357515976426238Apple-tab-span" style="white-space:pre-wrap">        </span>public Optional&lt;String&gt; getName() { return name; }<br><span class="m_-3299357515976426238Apple-tab-span" style="white-space:pre-wrap">        </span><br><span class="m_-3299357515976426238Apple-tab-span" style="white-space:pre-wrap">        </span>public void setName(String name) { <a href="http://this.name" target="_blank">this.name</a> = Optional.ofNullable(name); }<br><br>}<br></font></div></div></div></blockquote><br></div><div>Yes Optional on a property is deemed an anti pattern by the JDK team but since Bean Validation supports contraints on method parameters and return values, this is still a valid use case</div><div><br></div><div>Optional&lt;@Email String&gt; getUserEmail(@NotNull UUID userId);</div><div><br></div><div>Emmanuel</div><br></div><br>______________________________<wbr>_________________<br>
beanvalidation-dev mailing list<br>
<a href="mailto:beanvalidation-dev@lists.jboss.org">beanvalidation-dev@lists.<wbr>jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/beanvalidation-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/<wbr>mailman/listinfo/<wbr>beanvalidation-dev</a><br></blockquote></div><br></div>