So after some more investigation it appears that it is a problem with
my local environment (as Adrian stated, but not test :) ). I am
launching from Eclipse using Java Application Configuration instead of
the provided Web Application (because of using GWT 2.0 from trunk). I
asked the question on Google App Engine group.

On Nov 19, 2:55 pm, Tristan <tristan.slomin...@gmail.com> wrote:
> Thanks Adrian,
>
> Although I may not have explained the question properly.
>
> I am not running unit tests. Here's what happens:
>
> Guice starts up, it runs module configuration.
> While it is running module configuration, it comes across the
> following:
>
>     bind(Query.class).annotatedWith(Names.named("PersonQuery"))
>     .toProvider(new Provider<Query>(){
>       @Override
>       public Query get() {
>         return new Query(Person.kind);
>       }
>     });
>
> The problem is that the call: new Query(..) is dependent on
> ApiProxy.Environment. BUT, because the Module is not a servlet, the
> thread that runs it does not have an instance of ApiProxy.Environment
> sent. Hence the error:
>
> 1) Error in custom provider, java.lang.NullPointerException: No API
> environment is registered for this thread.
>   while locating com.google.appengine.api.datastore.Query annotated
> with @com.google.inject.name.Named(value=PersonQuery)
>
> What I need to do is inside the module, inside public void configure
> (), something to the tune of ApiProxy.setEnvironmentForCurrentThread
> (<some environment>) . This is production code, I don't know where to
> get <some environment> from.
>
> Tristan
>
> On Nov 19, 2:01 pm, Adrian Cole <fernc...@gmail.com> wrote:
>
> > guice (even trunk) most certainly works in gae.  This looks like a
> > problem in your unit test.  There's setup needed per gae docs.
>
> >http://code.google.com/appengine/docs/java/howto/unittesting.html
>
> > Cheers,
> > Adrian
> > jclouds
>
> > On Wed, Nov 18, 2009 at 1:07 PM, Tristan <tristan.slomin...@gmail.com> 
> > wrote:
> > > I should clarify that the problem occurs in local Development Mode. I
> > > am yet to put it on GAE itself.
>
> > > On Nov 18, 2:58 pm, Tristan <tristan.slomin...@gmail.com> wrote:
> > >> On Google App Engine,
>
> > >> When attempting to do the following in a Module:
>
> > >>     bind(Query.class).annotatedWith(Names.named("PersonQuery"))
> > >>     .toProvider(new Provider<Query>(){
> > >>       @Override
> > >>       public Query get() {
> > >>         return new Query(Person.kind);
> > >>       }
> > >>     });
>
> > >> I get the following error:
>
> > >> 1) Error in custom provider, java.lang.NullPointerException: No API
> > >> environment is registered for this thread.
> > >>   while locating com.google.appengine.api.datastore.Query annotated
> > >> with @com.google.inject.name.Named(value=PersonQuery)
>
> > >> Is Guice unable to use the Google App Engine API Environment?
>
> > >> -Tristan
>
> > > --
>
> > > You received this message because you are subscribed to the Google Groups 
> > > "google-guice" group.
> > > To post to this group, send email to google-gu...@googlegroups.com.
> > > To unsubscribe from this group, send email to 
> > > google-guice+unsubscr...@googlegroups.com.
> > > For more options, visit this group 
> > > athttp://groups.google.com/group/google-guice?hl=en.
>
>

--

You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To post to this group, send email to google-gu...@googlegroups.com.
To unsubscribe from this group, send email to 
google-guice+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-guice?hl=.


Reply via email to