Here are two options I can come up with off the top of my head, assuming I understand your problem correctly.
You can do a static injection of UserDb in the JPASocialModule which means the field will have to be static. Or, you can modify the @Injected constructor for PersonServiceDb to have an @Named("shindig.signing.global-callback-url") param that you can then pass along to UserDb when you instanstiate it, assuming you are instanstiating it. If UserDb is a singleton then I would go with the static injection approach. Best regards, -Stanton From: Evgeny Bogdanov <evgeny.bogda...@epfl.ch> To: dev@shindig.apache.org, Date: 12/22/2011 08:42 Subject: Re: Guice problem in persistence On 22.12.11 13:53, Stanton Sievers wrote: > Hi, > > How is your UserDb class being injected? Make sure it's not being > injected before the PropertiesModule, which by default is injected via the > web.xml. The thing is I am not very comfortable with Guice injection mechanism. So I do not know if it is injected or not. This I have currently 1. In web.xml (JPA module is after Properties) org.apache.shindig.common.PropertiesModule: org.apache.shindig.gadgets.DefaultGuiceModule: org.apache.shindig.social.core.config.SocialApiGuiceModule: org.apache.shindig.graaasp.jpa.spi.JPASocialModule: 2. In JPA I have explicit injection bind(PersonService.class).to(PersonServiceDb.class).in(Scopes.SINGLETON); 3. In PersonServiceDb I import the class UserDb.java: import org.apache.shindig.social.core.model.UserDb; So, I believe it does not do any injection for UserDb this way. Then the question is how do I inject UserDb or how do I pass the data from PropertiesModule to my UserDb.java class. > > If your class isn't being injected at all you can request a static > injection in an existing guice module (or your own). > requestStaticInjection(UserDb.class) I tried to add it in JPASocialModule, but it does not seem to be working. The field CALLBACK_URL is still null. > > I also prefer method injection to field injection for setting values. I'm > not sure if one is preferred over the other in the broader community or > not. Could you give a small example how you do it. > > -Stanton > > > > From: Evgeny Bogdanov<evgeny.bogda...@epfl.ch> > To: dev@shindig.apache.org, > Date: 12/22/2011 06:30 > Subject: Guice problem in persistence > > > > Hi > > I have small problem, maybe somebody can point out where it is. > > I have this line in shindig.properties: > shindig.signing.global-callback-url=http://localhost:8080/gadgets/oauthcallback > I want to access it from my db class. > > Properties file is read in PropertiesModule.java and Guice's Named > annotation is created with > Names.bindProperties(this.binder(), getProperties()); > > Then I try to access it as following in my UserDb.java class > @Transient > @Inject @Named("shindig.signing.global-callback-url") String > CALLBACK_URL; > > For some reason, it is always null. > Could somebody explain why I can't do it? What is the workaround. I > don't want to read properties file again, > since it's done in PropertiesModule.java already. > > Any suggestions? > > Best > Evgeny > > >