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

Reply via email to