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;
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? )