Asking the question here as the developer community is not letting me post there.
--
Good Day!
I'm following a tutorial to develop a Jira Plugin but am stuck at the REST API and getting a NullPointerException.
I am trying to search for users with the UserSearchService interface and its method findUserNames(), but I’m getting the exception.
Any help to avoid this exception and get the users is much appreciated!
Following is my code snippet from the rest directory:
package io.codeclou.kitchen.duty.rest;
import io.codeclou.kitchen.duty.config.MyPluginJavaConfig;
...
Named
Path("/user")
public class UserSearchResource {
public MyPluginJavaConfig myPluginJavaConfig;
Autowired
public UserSearchResource(MyPluginJavaConfig myPluginJavaConfig) {
this.myPluginJavaConfig = myPluginJavaConfig;
}
GET
Path("/search")
Produces({MediaType.APPLICATION_JSON})
public Response searchUsersQueryParam("query") final String userQuery,
Context HttpServletRequest request) {
List<UserSearchResourceModel> users = findUsers(userQuery);
return Response.ok(users).build();
}
private List<UserSearchResourceModel> findUsers(String query) {
List<UserSearchResourceModel> userSearchResourceModels = new ArrayList<>();
UserSearchParams searchParams = UserSearchParams.builder()
.includeActive(true)
.sorted(true)
.build();
List<String> users = this.myPluginJavaConfig.userSearchService.findUserNames(query, searchParams);
if (users != null) {
for (String user : users) {
userSearchResourceModels.add(new UserSearchResourceModel(user, user));
}
}
return userSearchResourceModels;
}
}
Config File:
package io.codeclou.kitchen.duty.config;
import com.atlassian.jira.bc.user.search.UserSearchService;
import com.atlassian.plugin.spring.scanner.annotation.imports.ComponentImport;
...
Configuration
Import({
ModuleFactoryBean.class,
PluginAccessorBean.class
})
public class MyPluginJavaConfig {
Bean
public ApplicationProperties applicationProperties() {
return importOsgiService(ApplicationProperties.class);
}
Bean
public MyPluginComponent myPluginComponent(ApplicationProperties applicationProperties) {
return new MyPluginComponentImpl(applicationProperties);
}
Bean
public FactoryBean<ServiceRegistration> registerMyDelegatingService(
final MyPluginComponent mypluginComponent) {
return exportOsgiService(mypluginComponent, null, MyPluginComponent.class);
}
ComponentImport
public UserSearchService userSearchService;
}
Logs:
[INFO] [talledLocalContainer] Nov 28, 2024 4:02:08 PM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate
[INFO] [talledLocalContainer] INFO: Initiating Jersey application, version 'Jersey: 1.19 02/11/2015 03:25 AM'
[INFO] [talledLocalContainer] Nov 28, 2024 4:02:08 PM com.sun.jersey.api.wadl.config.WadlGeneratorLoader loadWadlGenerator
[INFO] [talledLocalContainer] INFO: Loading wadlGenerator com.sun.jersey.server.wadl.generators.WadlGeneratorApplicationDoc
[INFO] [talledLocalContainer] Nov 28, 2024 4:02:08 PM com.sun.jersey.api.wadl.config.WadlGeneratorLoader loadWadlGenerator
[INFO] [talledLocalContainer] INFO: Loading wadlGenerator com.atlassian.plugins.rest.doclet.generators.grammars.WadlGrammarsAdaptor
[INFO] [talledLocalContainer] Nov 28, 2024 4:02:08 PM com.sun.jersey.api.wadl.config.WadlGeneratorLoader loadWadlGenerator
[INFO] [talledLocalContainer] INFO: Loading wadlGenerator com.atlassian.plugins.rest.doclet.generators.resourcedoc.AtlassianWadlGeneratorResourceDocSupport
[INFO] [talledLocalContainer] 2024-11-28 16:02:11,644 http-nio-2990-exec-2 ERROR admin 962x12382x1 11mu90j 0:0:0:0:0:0:0:1 /rest/kitchenduty/1.0/user/search [c.a.p.r.c.error.jersey.ThrowableExceptionMapper] Uncaught exception thrown by REST service: null
[INFO] [talledLocalContainer] java.lang.NullPointerException
[INFO] [talledLocalContainer] at io.codeclou.kitchen.duty.rest.UserSearchResource.findUsers(UserSearchResource.java:68)
[INFO] [talledLocalContainer] at io.codeclou.kitchen.duty.rest.UserSearchResource.searchUsers(UserSearchResource.java:58)