<div dir="ltr">I like the idea of using Optionals. But I think we would need to enhance all our APIs to use this (to be consistent). <div><br></div><div>Maybe you could come up with a small proposition of API changes? It might not work correctly (we can just mock them) but I would love to see some examples and &quot;feel&quot; the semantics.</div></div><br><div class="gmail_quote"><div dir="ltr">On Fri, Mar 31, 2017 at 10:00 AM Tristan Tarrant &lt;<a href="mailto:ttarrant@redhat.com">ttarrant@redhat.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I was about to say the same: in the typical use case of returning an<br class="gmail_msg">
optional and using it immediately it would probably end up on the stack<br class="gmail_msg">
anyway...<br class="gmail_msg">
<br class="gmail_msg">
Tristan<br class="gmail_msg">
<br class="gmail_msg">
On 31/03/2017 09:57, Radim Vansa wrote:<br class="gmail_msg">
&gt; I secretly hope that all these allocations would be inlined and<br class="gmail_msg">
&gt; eliminated. If we find out that it really allocates the objects (from<br class="gmail_msg">
&gt; JFR&#39;s allocation stats), it&#39;s a reason to rewrite that piece of code to<br class="gmail_msg">
&gt; the dull optionless version.<br class="gmail_msg">
&gt; TBH I am rather afraid that the JVM will allocate the consumer which<br class="gmail_msg">
&gt; will need some captured variables. Maybe I trust C2 compiler too much,<br class="gmail_msg">
&gt; believing that if the handler isn&#39;t too big, it will generate similar<br class="gmail_msg">
&gt; instructions with nicer source code :-/<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt; R.<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt; On 03/30/2017 11:08 PM, Sanne Grinovero wrote:<br class="gmail_msg">
&gt;&gt; I&#39;m for &quot;at discretion&quot; and &quot;avoid if not really needed&quot; : not cool to<br class="gmail_msg">
&gt;&gt; allocate objects for no reason.<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt; On 30 Mar 2017 16:57, &quot;Radim Vansa&quot; &lt;<a href="mailto:rvansa@redhat.com" class="gmail_msg" target="_blank">rvansa@redhat.com</a><br class="gmail_msg">
&gt;&gt; &lt;mailto:<a href="mailto:rvansa@redhat.com" class="gmail_msg" target="_blank">rvansa@redhat.com</a>&gt;&gt; wrote:<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt;      Hi,<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt;      I was wondering what&#39;s the common attitude towards using Optional in<br class="gmail_msg">
&gt;&gt;      APIs, and what naming pattern should we use. As an example, I dislike<br class="gmail_msg">
&gt;&gt;      calling<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt;      if (entry.getMetadata() != null &amp;&amp; entry.getMetadata().version()<br class="gmail_msg">
&gt;&gt;      != null) {<br class="gmail_msg">
&gt;&gt;           foo.use(entry.getMetadata().version())<br class="gmail_msg">
&gt;&gt;      }<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt;      where I could just do<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt;      entry.metadata().flatMap(Metadata::optionalVersion).ifPresent(foo::use)<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt;      Here I have proposed metadata() method returning Optional&lt;Metadata&gt;<br class="gmail_msg">
&gt;&gt;      (regular getter method is called getMetadata()) and annoying<br class="gmail_msg">
&gt;&gt;      optionalVersion() as version() is the regular getter.<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt;      Shall we adopt some common stance (use/don&#39;t use/use at developer&#39;s<br class="gmail_msg">
&gt;&gt;      discretion) and naming conventions? Is it acceptable to start adding<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt;      default Optional&lt;Foo&gt; foo() { Optional.ofNullable(getFoo()); }<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt;      whenever we feel the urge to chain Optionals?<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt;      Radim<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt;      --<br class="gmail_msg">
&gt;&gt;      Radim Vansa &lt;<a href="mailto:rvansa@redhat.com" class="gmail_msg" target="_blank">rvansa@redhat.com</a> &lt;mailto:<a href="mailto:rvansa@redhat.com" class="gmail_msg" target="_blank">rvansa@redhat.com</a>&gt;&gt;<br class="gmail_msg">
&gt;&gt;      JBoss Performance Team<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt;      _______________________________________________<br class="gmail_msg">
&gt;&gt;      infinispan-dev mailing list<br class="gmail_msg">
&gt;&gt;      <a href="mailto:infinispan-dev@lists.jboss.org" class="gmail_msg" target="_blank">infinispan-dev@lists.jboss.org</a> &lt;mailto:<a href="mailto:infinispan-dev@lists.jboss.org" class="gmail_msg" target="_blank">infinispan-dev@lists.jboss.org</a>&gt;<br class="gmail_msg">
&gt;&gt;      <a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a><br class="gmail_msg">
&gt;&gt;      &lt;<a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a>&gt;<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt; _______________________________________________<br class="gmail_msg">
&gt;&gt; infinispan-dev mailing list<br class="gmail_msg">
&gt;&gt; <a href="mailto:infinispan-dev@lists.jboss.org" class="gmail_msg" target="_blank">infinispan-dev@lists.jboss.org</a><br class="gmail_msg">
&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a><br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt;<br class="gmail_msg">
<br class="gmail_msg">
--<br class="gmail_msg">
Tristan Tarrant<br class="gmail_msg">
Infinispan Lead<br class="gmail_msg">
JBoss, a division of Red Hat<br class="gmail_msg">
_______________________________________________<br class="gmail_msg">
infinispan-dev mailing list<br class="gmail_msg">
<a href="mailto:infinispan-dev@lists.jboss.org" class="gmail_msg" target="_blank">infinispan-dev@lists.jboss.org</a><br class="gmail_msg">
<a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a><br class="gmail_msg">
</blockquote></div>