Dan, Thanks. I've got unittests running now, but the WicketFilter doesn't seem to be processing. All I get when I run the applicaiton shows a jetty produced directory listing.
In the snippet you provided before I think that CustomFilter and CustomeWicketFilter should be the same thing. Is that right? In my previous approach, when I bound the WicketFilter I included some parameters, like this: filter("/*").through(WicketFilter.class, createWicketFilterInitParams()); With this function private Map<String, String> createWicketFilterInitParams() { Map<String, String> wicketFilterParams = new HashMap<String, String>(); wicketFilterParams.put(WicketFilter.FILTER_MAPPING_PARAM, "/*"); wicketFilterParams.put("applicationClassName", "com.hp.honeybadger.web.WicketApplication"); return wicketFilterParams; } I'm now trying to figure out how to make sure that the wicket filter is called... Daniel On Fri, Oct 12, 2012 at 11:03 AM, Dan Retzlaff <dretzl...@gmail.com> wrote: > I follow you. WicketTester doesn't know about GuiceFilter, so you'll need a > different way of getting your Injector into your Wicket Application. Rather > than getting the Injector from your servlet context attributes, I'm > suggesting that you let Guice instantiate your Application so you can > @Inject the injector like any other dependency. The binding code I posted > previously does the (non-test) setup; for the test itself it's as simple as > https://gist.github.com/3880246. > > Hope that helps. By the way, I enjoyed your Wicket+EC2 article. Thanks for > that. :) > > On Fri, Oct 12, 2012 at 4:08 PM, Daniel Watrous > <daniel.watr...@gmail.com>wrote: > >> Dan, >> >> I'm not talking about my application. I'm talking about unittests. >> I've followed the Guice recommended way to integrate with servlets >> using the GuiceFilter. >> >> Now I'm trying to make the Wicket unittests work and I need the >> injector to be available in WicketTester. >> >> Daniel >> >> On Thu, Oct 11, 2012 at 6:10 PM, Dan Retzlaff <dretzl...@gmail.com> wrote: >> > For what it's worth, we instantiate our applications through Guice. >> Having >> > your application "go get" its Injector kind of violates the DI concept. >> > >> > filter("/*").through(WicketFilter.class); >> > bind(WebApplication.class).to(CustomWebApplication.class); >> > bind(WicketFilter.class).to(CustomWicketFilter.class); >> > >> > @Singleton >> > private static class CustomFilter extends WicketFilter { >> > @Inject private Provider<WebApplication> webApplicationProvider; >> > @Override >> > protected IWebApplicationFactory getApplicationFactory() { >> > return new IWebApplicationFactory() { >> > @Override >> > public WebApplication createApplication(WicketFilter filter) { >> > return webApplicationProvider.get(); >> > } >> > @Override >> > public void destroy(WicketFilter filter) { >> > } >> > }; >> > } >> > } >> > >> > On Thu, Oct 11, 2012 at 11:49 PM, Daniel Watrous >> > <daniel.watr...@gmail.com>wrote: >> > >> >> Dan, >> >> >> >> I think you're right. Since in the WicketApplication init() function I >> >> attempt to get the bootStrapInjector like this: >> >> Injector bootStrapInjector = (Injector) >> >> this.getServletContext().getAttribute(Injector.class.getName()); >> >> >> >> I just can't figure out how to get the injector into the >> >> ServletContext before init() is run in my WicketApplication. >> >> >> >> Daniel >> >> >> >> On Wed, Oct 10, 2012 at 6:10 PM, Dan Retzlaff <dretzl...@gmail.com> >> wrote: >> >> > Daniel, >> >> > >> >> > What you're doing should work, but I think you're giving >> >> > your GuiceComponentInjector a null Injector. Unit tests don't go >> through >> >> > web.xml to set up its context listeners, so >> >> > your GuiceServletContextListener never has a chance to construct and >> >> > register an Injector with the ServletContext. >> >> > >> >> > Dan >> >> > >> >> > On Wed, Oct 10, 2012 at 5:30 PM, Daniel Watrous < >> >> daniel.watr...@gmail.com>wrote: >> >> > >> >> >> Hi, >> >> >> >> >> >> I've integrated Guice into Wicket successfully, but I'm struggling >> >> >> with the unittests. I'm not sure how to get the injector into my >> >> >> HomePage class. Here's my setup. >> >> >> >> >> >> I'm using GuiceFilter with a GuiceServletContextListener. That >> creates >> >> >> the injector and a ServletModule which defines the WicketApplication. >> >> >> I followed: >> >> >> http://code.google.com/p/google-guice/wiki/ServletModule >> >> >> >> >> >> Here's some of MyGuiceServletConfig extends >> GuiceServletContextListener >> >> >> >> >> >> @Override >> >> >> protected Injector getInjector() { >> >> >> return Guice.createInjector(createServletModule(), new >> >> >> MongoHoneybadgerModule()); >> >> >> } >> >> >> >> >> >> private ServletModule createServletModule() { >> >> >> return new ServletModule() { >> >> >> ... >> >> >> >> >> >> In my WicketApplication extends WebApplication I have this init() >> method >> >> >> >> >> >> @Override >> >> >> public void init() >> >> >> { >> >> >> super.init(); >> >> >> Injector bootStrapInjector = (Injector) >> >> >> this.getServletContext().getAttribute(Injector.class.getName()); >> >> >> getComponentInstantiationListeners().add(new >> >> >> GuiceComponentInjector(this, bootStrapInjector)); >> >> >> } >> >> >> >> >> >> Now, in my HomePage.java class I have >> >> >> >> >> >> public class HomePage extends WebPage { >> >> >> private static final long serialVersionUID = 1L; >> >> >> @Inject private Injector injector; >> >> >> >> >> >> public HomePage(final PageParameters parameters) { >> >> >> super(parameters); >> >> >> SomeType myobj = injector.getInstance(SomeType.class); >> >> >> >> >> >> add(new Label("version", myobj.getValue())); >> >> >> } >> >> >> } >> >> >> >> >> >> This all runs great inside a web container as a servlet. >> >> >> >> >> >> The PROBLEM: I'm getting a NullPointerException on the line where I >> >> >> reference the injector: >> >> >> SomeType myobj = injector.getInstance(SomeType.class); >> >> >> >> >> >> My test class is what was generated by the wicket quickstart. I'm not >> >> >> sure how to make an injector available in setUp. >> >> >> >> >> >> @Before >> >> >> public void setUp() { >> >> >> tester = new WicketTester(new WicketApplication()); >> >> >> } >> >> >> >> >> >> Any ideas? >> >> >> >> >> >> Thanks, >> >> >> Daniel >> >> >> >> >> >> --------------------------------------------------------------------- >> >> >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >> >> >> For additional commands, e-mail: users-h...@wicket.apache.org >> >> >> >> >> >> >> >> >> >> --------------------------------------------------------------------- >> >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >> >> For additional commands, e-mail: users-h...@wicket.apache.org >> >> >> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >> For additional commands, e-mail: users-h...@wicket.apache.org >> >> --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org