On Wednesday 03 July 2013 12:07:07 Martin Grigorov wrote: > Here are the commits for WELD-1441: > > https://github.com/weld/core/commit/569c8efc5f0dd1dcc9c942fd3dd8c1f6 5a216b9e > https://github.com/weld/core/commit/9e248b5306b382f88f41cca1325178e d6fbe4306 > > What bothers me is > https://github.com/weld/core/commit/569c8efc5f0dd1dcc9c942fd3dd8c1f6 5a216b9e > #L1R55 It throws CreationException for abstract classes and non-static- inner > ones. Anonymous are not even mentioned in this ticket and its commits. And > Weld 2.0 does fail when processing an anonymous class!
Wicket will never call produce(), as that's the method to get (create/resolve) an instance of the bean. > I'm just saying that after reverting this change Wicket+Weld 2.0.2 users > will see their apps failing again, no matter whether they use your pattern > for DI in anonymous classes or not. Weld 2.0.1 throws exception no matter > whether there are @Inject-ed members in the anonymous class or not. Weld 2.0.1 is broken and broken frameworks break your application. Weld 2.0.2 users should be fine. We should however look at the wicket code and see if we can cache the InjectionTarget instances. According to the weld devs, get a new target over and over again for the same class is a bad idea. But that's something that can go into 6.10 Emond > > > > On Wed, Jul 3, 2013 at 11:53 AM, Emond Papegaaij <[email protected] > > wrote: > > > > Here's my vote: > > [X] Yes, revert 5226 and release 6.9.1 > > > > Emond > > > > On Wednesday 03 July 2013 10:09:33 Emond Papegaaij wrote: > > > Hi all, > > > > > > The changes made for WICKET-5226 (no longer injecting anonymous > > > > inner > > > > > classes) breaks our applications badly, and I suspect we are not the > > > > only > > > > > one. The following pattern is quite common: > > > > > > add(new Link<Void>("rest") { > > > > > > @Inject > > > private AccountRestResourceClient accountClient; > > > > > > @Override > > > public void onClick() {....} > > > > > > } > > > > > > In Wicket 6.9.0, this no longer works: accountClient will not get > > > > injected > > > > > because the Link is an anonymous inner class. To make things worse, > > > > even > > > > > in concrete classes, you can't rely on injection to work, because > > > > someone > > > > > could subclass your class as an anonymous inner class and injection will > > > again not work. > > > > > > This change was made because Weld 2.0 throws an exception when > > > > trying > > > > > to create an InjectionTarget for anonymous classes. This will be reduced > > > > to > > > > > a log-warning in 2.0.2: https://issues.jboss.org/browse/WELD-1441 > > > > > > As there is no workaround for this problem and it is likely to break all > > > applications using wicket-cdi, I'm starting a vote to revert the changes > > > made for 5226 and release 6.9.1: > > > > > > [ ] Yes, revert 5226 and release 6.9.1 > > > [ ] No, revert 5226 but not release 6.9.1 > > > [ ] No, keep as is > > > > > > See WICKET-5264 > > > > > > Best regards, > > > Emond
