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.

> -Vincent
> 
>>> 2. How do I get the initialized PersonServiceXW instance from  
>>> XWSocialModule?
>> com.xpn.xwiki.web.Utils.getComponent(PersonServiceXW.class)

-- 
Sergiu Dumitriu
http://purl.org/net/sergiu/
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to