On 14 Oct 2015 at 09:00:15, vinc...@massol.net (vinc...@massol.net(mailto:vinc...@massol.net)) wrote:
> > > On 14 Oct 2015 at 06:43:36, Marius Dumitru Florea > (mariusdumitru.flo...@xwiki.com(mailto:mariusdumitru.flo...@xwiki.com)) wrote: > > > Hi Debajit, > > > > On Oct 14, 2015 01:17, "Debajit Adhikary" wrote: > > > > > > I created an XWiki component which is available as a jar file. > > > > > > I have a ScriptService class for the component too: > > > > > > ---- > > > > > > @Role > > > public interface SearchClient > > > { > > > String search(); > > > } > > > > > > ---- > > > > > > @Component > > > @Singleton > > > public class InternalSearchClient implements SearchClient > > > { > > > public String search() > > > { > > > return "test search results"; > > > } > > > } > > > > > > ---- > > > > > > @Component > > > @Named("internalSearch") > > > @Singleton > > > public class InternalSearchScriptService implements ScriptService > > > { > > > > > @Inject > > > private InternalSearchClient searchClient; > > > > You need to "inject" the role (interface), not directly the implementation. > > That's why you use the Component Manager. Othewise you could have simply > > used the "new" operator to instantiate yourself the component. > > Good catch, didn’t see it when I replied yesterday! :) > > I guess we could catch this in the AnnotationComponentLoader and report an > error. Actually, the Component Manager should raise an error if it fails to inject a field. I was sure it was doing that, strange. I’ll debug it. Thanks -Vincent > Thanks > -Vincent > > > Hope this helps, > > Marius > > > > > > > > public String search() > > > { > > > return this.searchClient.search(); > > > } > > > } > > > > > > ---- > > > > > > I've added all the above files into their own jar with a components.txt > > > file: > > > > > > com.mycompany.wiki.search.InternalSearchClient > > > com.mycompany.wiki.search.InternalSearchScriptService > > > > > > and in my Wiki's pom.xml, I have the following: > > > > > > > > > org.xwiki.commons > > > xwiki-commons-script > > > ${commons.version} > > > > > > > > > > > > Now from my Wiki page, when I do the following: > > > > > > {{groovy}} > > > println(services.internalSearch.search()) > > > {{/groovy}} > > > > > > I get an error message saying "java.lang.NullPointerException: Cannot > > > invoke method search() on null object" > > > > > > What am I doing wrong here? > > > > > > (I followed the directions in > > > http://platform.xwiki.org/xwiki/bin/view/DevGuide/WritingComponents — have > > > these directions changed, and/or is there anything else I need to do? ) > _______________________________________________ users mailing list users@xwiki.org http://lists.xwiki.org/mailman/listinfo/users