Yep, Timo wrote the patch, both for OpenJDK and JDT - the JDT one was accepted in the end.
On Tue, Aug 18, 2015 at 2:09 PM, Robert Metzger <rmetz...@apache.org> wrote: > Exactly, Timo opened the thread. > > On Tue, Aug 18, 2015 at 2:04 PM, Kristoffer Sjögren <sto...@gmail.com> > wrote: > >> Yeah, I think I found the thread already... by Timo Walther? >> >> On Tue, Aug 18, 2015 at 2:01 PM, Stephan Ewen <se...@apache.org> wrote: >> > Would have been great. I had high hopes when I saw the trick with the >> > "constant pool", but this is only to make what Flink does already >> applicable >> > to non-serializable lambdas. >> > >> > If you want to help us with this, I'll ping you for some support on the >> > OpenJDK mailing list ;-) >> > >> > On Tue, Aug 18, 2015 at 1:59 PM, Kristoffer Sjögren <sto...@gmail.com> >> > wrote: >> >> >> >> I suspected that you already had looked into this, but it was worth a >> >> try. It would make everything so much easier. >> >> >> >> Thanks for the explanation :-) >> >> >> >> >> >> On Tue, Aug 18, 2015 at 1:50 PM, Stephan Ewen <se...@apache.org> >> wrote: >> >> > Hi Kristoffer! >> >> > >> >> > I looked through the code as well. In fact, Flink currently uses the >> >> > trick >> >> > mentioned for Serializable Lambdas in the gist you sent me. >> >> > >> >> > This works well for lambdas that return simple types (primitives or >> >> > classes >> >> > without generics). The information for the generic parametrization is >> >> > unfortunately really erased, it is in no signature or anything. >> >> > >> >> > Java has the concept of "generic method signatures", which means >> that a >> >> > method gets a signature string that includes the generic types. These >> >> > signatures are generated for regular functions, but OpenJDK and >> >> > OracleJDK do >> >> > not generate them for synthetic methods (like lambdas). >> >> > >> >> > We tried to submit a patch to OpenJDK to add these generic >> signatures to >> >> > lambda methods, but they did not like the fact that we try to figure >> out >> >> > the >> >> > generic types of lambdas. I hope they change their minds at some >> >> > point... >> >> > >> >> > Stephan >> >> > >> >> > >> >> > >> >> > >> >> > On Tue, Aug 18, 2015 at 11:46 AM, Aljoscha Krettek < >> aljos...@apache.org> >> >> > wrote: >> >> >> >> >> >> Unfortunately, this also doesn't work for the same reasons. The >> generic >> >> >> types of generic parameters of a lambda are not stored anywhere. >> >> >> Stephan >> >> >> mentioned to me that the only possibility right now would be to >> look at >> >> >> the >> >> >> code using something like ASM to find a cast in the code to the >> >> >> concrete >> >> >> type of the generic parameter. >> >> >> >> >> >> On Tue, 18 Aug 2015 at 11:35 Kristoffer Sjögren <sto...@gmail.com> >> >> >> wrote: >> >> >>> >> >> >>> How about https://github.com/jhalterman/typetools? >> >> >>> >> >> >>> On Tue, Aug 18, 2015 at 11:16 AM, Aljoscha Krettek >> >> >>> <aljos...@apache.org> >> >> >>> wrote: >> >> >>> > Hi Kristoffer, >> >> >>> > I'm afraid not, but maybe Timo has some further information. In >> this >> >> >>> > extended example we can see the problem: >> >> >>> > https://gist.github.com/aljoscha/84cc363d13cf1dfe9364. The >> output >> >> >>> > is: >> >> >>> > >> >> >>> > Type is: class >> >> >>> > org.apache.flink.examples.java8.wordcount.TypeTest$Thing >> >> >>> > class org.apache.flink.examples.java8.wordcount.TypeTest$Thing >> >> >>> > Type is: class >> >> >>> > org.apache.flink.examples.java8.wordcount.TypeTest$Thing >> >> >>> > class org.apache.flink.examples.java8.wordcount.TypeTest$Thing >> >> >>> > Type is : >> >> >>> > >> >> >>> > >> >> >>> > >> org.apache.flink.examples.java8.wordcount.TypeTest.org.apache.flink.examples.java8.wordcount.TypeTest$Thing<java.lang.String> >> >> >>> > class org.apache.flink.examples.java8.wordcount.TypeTest$Thing >> >> >>> > >> >> >>> > So with the two lambda calls it does not correctly determine the >> >> >>> > generic >> >> >>> > parameter of Thing while it works with the anonymous class. >> >> >>> > >> >> >>> > I was exited when I saw the example because we've been trying >> for so >> >> >>> > long to >> >> >>> > get this to work. Maybe we have to wait for java 19 to get this >> to >> >> >>> > work. ;-) >> >> >>> > >> >> >>> > Thanks a lot for helping, though. :D >> >> >>> > Aljoscha >> >> >>> > >> >> >>> > On Tue, 18 Aug 2015 at 11:01 Kristoffer Sjögren < >> sto...@gmail.com> >> >> >>> > wrote: >> >> >>> >> >> >> >>> >> Hi >> >> >>> >> >> >> >>> >> Potential fix for writing flink jobs using lamdas without >> Eclipse >> >> >>> >> JDT? >> >> >>> >> >> >> >>> >> https://gist.github.com/aslakhellesoy/3678beba60c109eacbe5 >> >> >>> >> >> >> >>> >> Cheers, >> >> >>> >> -Kristoffer >> >> > >> >> > >> > >> > >> > >