Hi Debajit, On Oct 14, 2015 01:17, "Debajit Adhikary" <[email protected]> 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. 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:
<dependency> <groupId>org.xwiki.commons</groupId> <artifactId>xwiki-commons-script</artifactId> <version>${commons.version}</version> </dependency>
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 [email protected] http://lists.xwiki.org/mailman/listinfo/users