<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">I have the same feeling and arguments.<div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 21 Nov 2016, at 17:25, Christian Kaltepoth &lt;<a href="mailto:christian@kaltepoth.de" class="">christian@kaltepoth.de</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">Not sure I like the idea of supporting Optional&lt;T&gt; for return types but not for fields and method parameters. Is there any technical reason for this restriction? I agree that using Optional&lt;T&gt; for fields is an anti-pattern, but I don't see any reason for not supporting it nevertheless.<div class=""><br class=""></div><div class="">Am I missing something here?</div></div><div class="gmail_extra"><br class=""><div class="gmail_quote">2016-11-21 15:18 GMT+01:00 Gunnar Morling <span dir="ltr" class="">&lt;<a href="mailto:gunnar@hibernate.org" target="_blank" class="">gunnar@hibernate.org</a>&gt;</span>:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="">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 class=""><div class="gmail_quote"><div class=""><div class="h5">2016-11-21 14:32 GMT+01:00 Emmanuel Bernard <span dir="ltr" class="">&lt;<a href="mailto:emmanuel@hibernate.org" target="_blank" class="">emmanuel@hibernate.org</a>&gt;</span>:<br class=""></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class=""><div class="h5"><div style="word-wrap:break-word" class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On 7 Nov 2016, at 23:42, Hendrik Ebbers &lt;<a href="mailto:hendrik.ebbers@me.com" target="_blank" class="">hendrik.ebbers@me.com</a>&gt; wrote:</div><div class=""><div style="word-wrap:break-word" class=""><div class=""><br class="">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&nbsp;not as a type for a field. Supporting it in the bean validation might end in strange model classes.&nbsp;<br class=""><br class="">Example:<br class=""><br class="">The following model looks good to me:<br class=""><br class=""><font face="Courier New" class="">public class Model {<br class=""><br class=""><span class="m_-785592884729590593m_-3299357515976426238Apple-tab-span" style="white-space:pre-wrap">        </span>@NotNull<br class=""><span class="m_-785592884729590593m_-3299357515976426238Apple-tab-span" style="white-space:pre-wrap">        </span>private String name;&nbsp;<br class=""><br class=""><span class="m_-785592884729590593m_-3299357515976426238Apple-tab-span" style="white-space:pre-wrap">        </span>public String getName() { return name; }<br class=""><span class="m_-785592884729590593m_-3299357515976426238Apple-tab-span" style="white-space:pre-wrap">        </span><br class=""><span class="m_-785592884729590593m_-3299357515976426238Apple-tab-span" style="white-space:pre-wrap">        </span>public void setName(String name) { <a href="http://this.name/" target="_blank" class="">this.name</a> = name; }<br class=""><br class=""><span class="m_-785592884729590593m_-3299357515976426238Apple-tab-span" style="white-space:pre-wrap">        </span>public Optional&lt;String&gt; name() { return Optional.ofNullable(name);}<br class=""><br class="">}</font><br class=""><br class="">On the other hand this looks like an anti-pattern to me:<br class=""><br class=""><font face="Courier New" class="">public class Model {<br class=""><br class=""><span class="m_-785592884729590593m_-3299357515976426238Apple-tab-span" style="white-space:pre-wrap">        </span>@NotNull<br class=""><span class="m_-785592884729590593m_-3299357515976426238Apple-tab-span" style="white-space:pre-wrap">        </span>private Optional&lt;String&gt; name;&nbsp;<br class=""><br class=""><span class="m_-785592884729590593m_-3299357515976426238Apple-tab-span" style="white-space:pre-wrap">        </span>public Optional&lt;String&gt; getName() { return name; }<br class=""><span class="m_-785592884729590593m_-3299357515976426238Apple-tab-span" style="white-space:pre-wrap">        </span><br class=""><span class="m_-785592884729590593m_-3299357515976426238Apple-tab-span" style="white-space:pre-wrap">        </span>public void setName(String name) { <a href="http://this.name/" target="_blank" class="">this.name</a> = Optional.ofNullable(name); }<br class=""><br class="">}<br class=""></font></div></div></div></blockquote><br class=""></div><div class="">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 class=""><br class=""></div><div class="">Optional&lt;@Email String&gt; getUserEmail(@NotNull UUID userId);</div><div class=""><br class=""></div><div class="">Emmanuel</div><br class=""></div><br class=""></div></div>______________________________<wbr class="">_________________<br class="">
beanvalidation-dev mailing list<br class="">
<a href="mailto:beanvalidation-dev@lists.jboss.org" target="_blank" class="">beanvalidation-dev@lists.jboss<wbr class="">.org</a><br class="">
<a href="https://lists.jboss.org/mailman/listinfo/beanvalidation-dev" rel="noreferrer" target="_blank" class="">https://lists.jboss.org/mailma<wbr class="">n/listinfo/beanvalidation-dev</a><br class=""></blockquote></div><br class=""></div>
<br class="">______________________________<wbr class="">_________________<br class="">
beanvalidation-dev mailing list<br class="">
<a href="mailto:beanvalidation-dev@lists.jboss.org" class="">beanvalidation-dev@lists.<wbr class="">jboss.org</a><br class="">
<a href="https://lists.jboss.org/mailman/listinfo/beanvalidation-dev" rel="noreferrer" target="_blank" class="">https://lists.jboss.org/<wbr class="">mailman/listinfo/<wbr class="">beanvalidation-dev</a><br class=""></blockquote></div><br class=""><br clear="all" class=""><div class=""><br class=""></div>-- <br class=""><div class="gmail_signature" data-smartmail="gmail_signature"><div class="">Christian Kaltepoth</div><div class="">Blog: <a href="http://blog.kaltepoth.de/" target="_blank" class="">http://blog.kaltepoth.de/</a></div><div class="">Twitter: <a href="http://twitter.com/chkal" target="_blank" class="">http://twitter.com/chkal</a></div><div class="">GitHub: <a href="https://github.com/chkal" target="_blank" class="">https://github.com/chkal</a></div><div class=""><br class=""></div></div>
</div>
_______________________________________________<br class="">beanvalidation-dev mailing list<br class=""><a href="mailto:beanvalidation-dev@lists.jboss.org" class="">beanvalidation-dev@lists.jboss.org</a><br class="">https://lists.jboss.org/mailman/listinfo/beanvalidation-dev</div></blockquote></div><br class=""></div></body></html>