On Mon, Aug 10, 2009 at 2:51 PM, Vincent Massol <vinc...@massol.net> wrote:

>
> On Aug 10, 2009, at 1:31 PM, Sergiu Dumitriu wrote:
>
> > Vincent Massol wrote:
> >> On Aug 10, 2009, at 12:41 PM, Sergiu Dumitriu wrote:
> >>
> >>> Anamaria Stoica wrote:
> >>>> It looks like you can bind an instance to type in Guice. This is
> >>>> done either
> >>>> with Instance Bindings,
> >>>> @Provides Methods or Provider Bindings, depending on the complexity
> >>>> of the
> >>>> class.
> >>>> (http://code.google.com/p/google-guice/wiki/Bindings)
> >>>>
> >>>> All bindings are defined in a class that extends AbstractModule,
> >>>> this would
> >>>> be
> >>>> XWSocialModule in my code (
> >>>>
> https://svn.xwiki.org/svnroot/xwiki/sandbox/gsoc/opensocial/xwiki-social-opensocial/src/main/java/org/xwiki/opensocial/social/XWSocialModule.java
> )
> >>>> .
> >>>>
> >>>>
> >>>> These modules are then passed as arguments to
> >>>> Guice.createInjector(), which
> >>>> builds the injector.
> >>>> In my application, the injector is build by
> >>>> GuiceServletContextListener (
> >>>>
> http://svn.apache.org/repos/asf/incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/servlet/GuiceServletContextListener.java
> )
> >>>> This servlet takes the context parameters defined in my web.xml;
> >>>> these are:
> >>>>
> >>>> <context-param>
> >>>>   <param-name>guice-modules</param-name>
> >>>>   <param-value>
> >>>>     org.apache.shindig.common.PropertiesModule:
> >>>>     org.apache.shindig.gadgets.DefaultGuiceModule:
> >>>>     org.apache.shindig.gadgets.oauth.OAuthModule:
> >>>>     org.apache.shindig.common.cache.ehcache.EhCacheModule:
> >>>>     org.xwiki.opensocial.social.XWSocialModule
> >>>>   </param-value>
> >>>> </context-param>
> >>>>
> >>>> <listener>
> >>>>
> >>>> <listener-
> >>>> class>org.xwiki.container.servlet.XWikiServletContextListener</
> >>>> listener-class>
> >>>> </listener>
> >>>>
> >>>> Now, all I need to do is bind the instance of PersonServiceXW after
> >>>> it has
> >>>> been initialized by XWiki's Component Manager.
> >>>> The binding will be done in XWSocialModule, using one of the
> >>>> instance
> >>>> binding methods (Instance Bindings,
> >>>> @Provides Methods or Provider Bindings).
> >>>>
> >>>> My questions are:
> >>>> 1. How do I make sure PersonServiceXW has been initialized already
> >>>> by the
> >>>> XWiki CM before binding it for Guice ?
> >>> List GuiceServletContextListener AFTER XWikiServletContextListener
> >>> in
> >>> web.xml. The servlet spec specifies that listeners are called in the
> >>> order they are encountered in web.xml, and
> >>> XWikiServletContextListener
> >>> is the one that starts our component manager.
> >>
> >> For the future: we should not use other servlet context listener
> >> other
> >> than the xwiki one. We need it to init the CM but once this is done
> >> everything else should be done with it.
> >>
> >> So ideally you should instead create an EventListener that listen for
> >> the application start event and initizalize shindig in there rather
> >> than use an environment-specific servlet context listener.
> >
> > I'm not sure, but I think that Shindig works this way, there's nothing
> > we can do about it.
>
> Just checked
>
> http://svn.apache.org/repos/asf/incubator/shindig/trunk/java/common/src/main/java/org/apache/shindig/common/servlet/GuiceServletContextListener.java
>
> It doesn't do much, just init Guice in a few lines.


The important part is creating the injector:

Injector injector = Guice.createInjector(Stage.PRODUCTION, modules);

I don't know how setting/registering the context part works though.


>
>
> Thanks
> -Vincent
>
> >> -Vincent
> >>
> >>>> 2. How do I get the initialized PersonServiceXW instance from
> >>>> XWSocialModule?
> >>> com.xpn.xwiki.web.Utils.getComponent(PersonServiceXW.class)
> _______________________________________________
> devs mailing list
> devs@xwiki.org
> http://lists.xwiki.org/mailman/listinfo/devs
>
_______________________________________________
devs mailing list
devs@xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to