For the short term I think we should handle this by a fix in autobeans. For the long term we could introduce a version of getMethods(flag) that allows to specify which methods you want and the parameterless version defaults to Java 7 behaviour.
On Wednesday, July 13, 2016 at 7:37:00 AM UTC-7, Thomas Broyer wrote: > > +cc Colin, Goktug > > On Tuesday, July 12, 2016 at 12:48:58 PM UTC+2, Ross Drever wrote: >> >> Calling remove on an iterator from list within an request factory entity >> proxy results in an UnsupportedOperationException. >> >> I have isolated it to commit 288cc03 Hide Java 8 interfaces methods to >> generators. If I revert that commit it works properly. Seems like it is >> picking up the wrong implementation of iterator.remove() when it generates >> the proxies. >> >> >> Iterator<SomeProxy> iterator = someEntityProxy.getSomeList().iterator(); >> iterator.next(); >> iterator.remove(); //throws UnsupportedOperationException >> >> > Ah right; this is "actually" because Iterator#remove *became* a `default` > method in Java 8: > > https://docs.oracle.com/javase/7/docs/api/java/util/Iterator.html#remove%28%29 > > vs. > https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html#remove-- > Really not sure what would be the best outcome here; but I think we need > to re-investigate this decision of *hiding* default methods to generators, > as there might be other similar cases either in the JDK or in third-party > libs moving to Java 8. > In the short-term, we may want to maybe add an annotation to ask GWT to > expose a `default` method as if it were 'abstract', only for > backwards-compatibility for cases like this. > For AutoBeans specifically, one possibility would be to *not* generate the > IteratorAutoBean and instead provide one that implements the remove() > method; or to special-case java.util.Iterator to have the generated shim > extend a provided base class. > In the medium/long-term, AutoBeans would probably be rewritten as an > annotation processor anyway (which could also unify the JVM vs. GWT > implementations, instead of using java.lang.reflect.Proxy in the JVM). > -- You received this message because you are subscribed to the Google Groups "GWT Contributors" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/google-web-toolkit-contributors/d3353d5c-cbc1-407b-b2f6-8df8b809a862%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
