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