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 > >> > > >> > > > > > >