[ 
https://issues.apache.org/jira/browse/WICKET-2887?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12880101#action_12880101
 ] 

Martin Grigorov commented on WICKET-2887:
-----------------------------------------

And the fix looks pretty much the same:


Index: GuiceWebApplicationFactory.java
===================================================================
--- GuiceWebApplicationFactory.java     (revision 955869)
+++ GuiceWebApplicationFactory.java     (working copy)
@@ -174,6 +174,7 @@
                                        "To use GuiceWebApplicationFactory, you 
must specify either an 'injectorContextAttribute' or a 'module' init-param.");
                }
                WebApplication app = injector.getInstance(WebApplication.class);
+               Application.set(app);
                app.addComponentInstantiationListener(new 
GuiceComponentInjector(app, injector));
                return app;
        }


No one responded to my earlier comment/question in this ticket...
I think this is the right fix because otherwise the user will not have benefit 
of using org.apache.wicket.protocol.http.IWebApplicationFactory - (s)he could 
just register the ComponentInstantiationListener in MyApplication#init().

Wicket-Spring implementation of IWebApplicationFactory is even more "broken" in 
this context because it doesn't register the listener for you. It just prepares 
the Spring's ApplicationContext and Wicket's WebApplication but then you (the 
user) have to add addComponentInstantiationListener(new 
SpringComponentInjector(this)); in MyApplication#init()

> Bootstraping wicket with GuiceWebApplicationFactory fails with exception
> ------------------------------------------------------------------------
>
>                 Key: WICKET-2887
>                 URL: https://issues.apache.org/jira/browse/WICKET-2887
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket-guice
>    Affects Versions: 1.4.8, 1.4.9
>            Reporter: Zilvinas Kybartas
>         Attachments: WICKET-2887-1.4.9.patch
>
>
> There seems to be some sort of chicken-egg problem:
> org.apache.wicket.WicketRuntimeException: There is no application attached to 
> current thread main
>       at org.apache.wicket.Application.get(Application.java:179) 
> [wicket-1.4.9.jar:1.4.9]
>       at 
> org.apache.wicket.injection.web.InjectorHolder.setInjector(InjectorHolder.java:88)
>  [wicket-ioc-1.4.9.jar:1.4.9]
>       at 
> org.apache.wicket.guice.GuiceComponentInjector.<init>(GuiceComponentInjector.java:102)
>  [wicket-guice-1.4.9.jar:1.4.9]
>       at 
> org.apache.wicket.guice.GuiceWebApplicationFactory.createApplication(GuiceWebApplicationFactory.java:177)
>  [wicket-guice-1.4.9.jar:1.4.9]
>       at 
> org.apache.wicket.protocol.http.WicketFilter.init(WicketFilter.java:701) 
> [wicket-1.4.9.jar:1.4.9]
> After some digging i found that it is actually a regression made by this 
> issue fix - WICKET-2761.
> If I rollback wicket-guice to 1.4.7, everything starts to work just fine.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to