Yes, CustomFilter = CustomWicketFilter... Those aren't our actual names.
And yes, we provide filter parameters too. I just omitted them since they
weren't relevant to the Guice-based application instantiation I was
describing.

Do you have this in your web.xml?
<filter>
<filter-name>guiceFilter</filter-name>
<filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>guiceFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

On Fri, Oct 12, 2012 at 6:01 PM, Daniel Watrous <daniel.watr...@gmail.com>wrote:

> 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
>
>

Reply via email to