java.lang.NullPointerException

Atlassian JIRA | Fabian Krämer | 5 years ago
  1. 0

    The fix for [CONF-22553|https://jira.atlassian.com/browse/CONF-22553] prevents the user search failing if usernames have been retrieved from the search index which don't exist in an Embedded Crowd directory (cache, cwd_user) anymore. The bug manifests as {code} java.lang.NullPointerException at com.atlassian.confluence.plugins.rest.entities.builders.PersonalInformationContentEntityBuilder.setThumbnailLink(PersonalInformationContentEntityBuilder.java:47) at com.atlassian.confluence.plugins.rest.entities.builders.PersonalInformationContentEntityBuilder.setUserProperties(PersonalInformationContentEntityBuilder.java:91) at com.atlassian.confluence.plugins.rest.entities.builders.PersonalInformationContentEntityBuilder.build(PersonalInformationContentEntityBuilder.java:84) at com.atlassian.confluence.plugins.rest.service.DefaultRestSearchService.toSearchResultEntity(DefaultRestSearchService.java:218) at com.atlassian.confluence.plugins.rest.service.DefaultRestSearchService.makeSearchResultsEntityList(DefaultRestSearchService.java:190) at com.atlassian.confluence.plugins.rest.service.DefaultRestSearchService.userSearch(DefaultRestSearchService.java:61) at com.atlassian.confluence.plugins.rest.resources.SearchService.doUserSearch(SearchService.java:187) {code} and was caused by [CONF-25470|https://jira.atlassian.com/browse/CONF-25470]. The fix was to put the following check into com.atlassian.confluence.plugins.rest.entities.builders.PersonalInformationContentEntityBuilder.setThumbnailLink(ContentEntity, String): {code} User user = userAccessor.getUser(username); if (user == null) { user = new UnknownUser(username); } contentEntity.setTitle(user.getFullName()); {code} This approach is unsatisfactory, as it will return users which are irrelevant for the search (see unknown-user.png). One does not want to share a page with a non-existent user, and also not with a user who does not have use permission (unless you want him to send an invite URL). Imo we should not perform a search for users in that context on the search index. The point being is that the database is the source of truth, and the index could potentially be out of sync anyway. For a user search, the relevant columns are lower_user_name, lower_display_name, lower_email_address, lower_first_name and lower_last_name in the cwd_user table. All of these columns have indices (see cwd_user-indices.png). This information should probably be joined/scoped to users who have use permission for Confluence and view permission for the page to share in question (probably better to select them as well but tell the reason why sharing a page with them would not make sense).

    Atlassian JIRA | 5 years ago | Fabian Krämer
    java.lang.NullPointerException
  2. 0

    The fix for [CONF-22553|https://jira.atlassian.com/browse/CONF-22553] prevents the user search failing if usernames have been retrieved from the search index which don't exist in an Embedded Crowd directory (cache, cwd_user) anymore. The bug manifests as {code} java.lang.NullPointerException at com.atlassian.confluence.plugins.rest.entities.builders.PersonalInformationContentEntityBuilder.setThumbnailLink(PersonalInformationContentEntityBuilder.java:47) at com.atlassian.confluence.plugins.rest.entities.builders.PersonalInformationContentEntityBuilder.setUserProperties(PersonalInformationContentEntityBuilder.java:91) at com.atlassian.confluence.plugins.rest.entities.builders.PersonalInformationContentEntityBuilder.build(PersonalInformationContentEntityBuilder.java:84) at com.atlassian.confluence.plugins.rest.service.DefaultRestSearchService.toSearchResultEntity(DefaultRestSearchService.java:218) at com.atlassian.confluence.plugins.rest.service.DefaultRestSearchService.makeSearchResultsEntityList(DefaultRestSearchService.java:190) at com.atlassian.confluence.plugins.rest.service.DefaultRestSearchService.userSearch(DefaultRestSearchService.java:61) at com.atlassian.confluence.plugins.rest.resources.SearchService.doUserSearch(SearchService.java:187) {code} and was caused by [CONF-25470|https://jira.atlassian.com/browse/CONF-25470]. The fix was to put the following check into com.atlassian.confluence.plugins.rest.entities.builders.PersonalInformationContentEntityBuilder.setThumbnailLink(ContentEntity, String): {code} User user = userAccessor.getUser(username); if (user == null) { user = new UnknownUser(username); } contentEntity.setTitle(user.getFullName()); {code} This approach is unsatisfactory, as it will return users which are irrelevant for the search (see unknown-user.png). One does not want to share a page with a non-existent user, and also not with a user who does not have use permission (unless you want him to send an invite URL). Imo we should not perform a search for users in that context on the search index. The point being is that the database is the source of truth, and the index could potentially be out of sync anyway. For a user search, the relevant columns are lower_user_name, lower_display_name, lower_email_address, lower_first_name and lower_last_name in the cwd_user table. All of these columns have indices (see cwd_user-indices.png). This information should probably be joined/scoped to users who have use permission for Confluence and view permission for the page to share in question (probably better to select them as well but tell the reason why sharing a page with them would not make sense).

    Atlassian JIRA | 5 years ago | Fabian Krämer
    java.lang.NullPointerException
  3. 0

    In a rare turn of event, a customer discovered the Share Page feature tries to autocomplete usernames to their disabled LDAP users. So for example, we have two LDAP usernames: Vicky and Vincent. Vicky is disabled but Vincent still exists. When typing {*}Vi{*}ncent, Confluence will produce a stack trace in catalina.out like below as it tries to search for Vicky as well: {code} Apr 28, 2011 1:51:02 PM com.sun.jersey.server.impl.application.WebApplicationImpl onException SEVERE: Internal server error java.lang.NullPointerException at com.atlassian.confluence.plugins.rest.entities.builders.PersonalInformationContentEntityBuilder.setThumbnailLink(PersonalInformationContentEntityBuilder.java:47) at com.atlassian.confluence.plugins.rest.entities.builders.PersonalInformationContentEntityBuilder.setUserProperties(PersonalInformationContentEntityBuilder.java:91) at com.atlassian.confluence.plugins.rest.entities.builders.PersonalInformationContentEntityBuilder.build(PersonalInformationContentEntityBuilder.java:84) at com.atlassian.confluence.plugins.rest.service.DefaultRestSearchService.toSearchResultEntity(DefaultRestSearchService.java:197) at com.atlassian.confluence.plugins.rest.service.DefaultRestSearchService.makeSearchResultsEntityList(DefaultRestSearchService.java:169) at com.atlassian.confluence.plugins.rest.service.DefaultRestSearchService.userSearch(DefaultRestSearchService.java:63) at com.atlassian.confluence.plugins.rest.resources.SearchService.doUserSearch(SearchService.java:172) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker$1.invoke(DispatchProviderHelper.java:206) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$1.intercept(DispatchProviderHelper.java:90) at com.atlassian.plugins.rest.common.interceptor.impl.DefaultMethodInvocation.invoke(DefaultMethodInvocation.java:61) at com.atlassian.plugins.rest.common.expand.interceptor.ExpandInterceptor.intercept(ExpandInterceptor.java:38) at com.atlassian.plugins.rest.common.interceptor.impl.DefaultMethodInvocation.invoke(DefaultMethodInvocation.java:61) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper.invokeMethodWithInterceptors(DispatchProviderHelper.java:98) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper.access$100(DispatchProviderHelper.java:28) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker._dispatch(DispatchProviderHelper.java:202) at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:67) at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:163) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:111) at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:71) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:111) at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:63) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:654) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:612) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:603) at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:309) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:425) at com.atlassian.plugins.rest.module.RestDelegatingServletFilter$JerseyOsgiServletContainer.doFilter(RestDelegatingServletFilter.java:128) at com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:689) at com.atlassian.plugins.rest.module.RestDelegatingServletFilter.doFilter(RestDelegatingServletFilter.java:62) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66) at com.atlassian.plugins.rest.module.servlet.RestServletUtilsUpdaterFilter.doFilterInternal(RestServletUtilsUpdaterFilter.java:26) at com.atlassian.plugins.rest.module.servlet.RestServletUtilsUpdaterFilter.doFilter(RestServletUtilsUpdaterFilter.java:40) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66) at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:25) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:118) at com.atlassian.confluence.util.profiling.ProfilingPageFilter.parsePage(ProfilingPageFilter.java:84) at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:54) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.atlassian.core.filters.ServletContextThreadLocalFilter.doFilter(ServletContextThreadLocalFilter.java:19) at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.atlassian.confluence.util.LoggingContextFilter.doFilter(LoggingContextFilter.java:40) at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.atlassian.seraph.filter.SecurityFilter.doFilter(SecurityFilter.java:213) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.atlassian.security.auth.trustedapps.filter.TrustedApplicationsFilter.doFilter(TrustedApplicationsFilter.java:98) at com.atlassian.confluence.util.AbstractBootstrapHotSwappingFilter.doFilter(AbstractBootstrapHotSwappingFilter.java:30) at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.atlassian.seraph.filter.BaseLoginFilter.doFilter(BaseLoginFilter.java:144) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66) at com.atlassian.oauth.serviceprovider.internal.servlet.OAuthFilter.doFilter(OAuthFilter.java:71) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66) at com.atlassian.plugins.rest.module.servlet.RestSeraphFilter.doFilter(RestSeraphFilter.java:44) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.atlassian.confluence.util.ClusterHeaderFilter.doFilter(ClusterHeaderFilter.java:34) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.springframework.orm.hibernate.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:170) at com.atlassian.spring.filter.FlushingSpringSessionInViewFilter.doFilterInternal(FlushingSpringSessionInViewFilter.java:29) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.atlassian.confluence.util.AccessLogFilter.doFilter(AccessLogFilter.java:45) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.atlassian.gzipfilter.GzipFilter.doFilterInternal(GzipFilter.java:81) at com.atlassian.gzipfilter.GzipFilter.doFilter(GzipFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.atlassian.core.filters.cache.AbstractCachingFilter.doFilter(AbstractCachingFilter.java:33) at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66) at com.atlassian.confluence.extra.webdav.servlet.filter.ReverseProxyFilter.doFilter(ReverseProxyFilter.java:427) at com.atlassian.confluence.extra.webdav.servlet.filter.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:34) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.atlassian.confluence.web.filter.validateparam.RequestParamValidationFilter.doFilter(RequestParamValidationFilter.java:58) at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.atlassian.confluence.plugin.servlet.filter.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:71) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.atlassian.confluence.web.filter.LanguageExtractionFilter.doFilter(LanguageExtractionFilter.java:52) at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.atlassian.confluence.util.RequestCacheThreadLocalFilter.doFilter(RequestCacheThreadLocalFilter.java:25) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.atlassian.core.filters.HeaderSanitisingFilter.doFilter(HeaderSanitisingFilter.java:44) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.atlassian.confluence.servlet.FourOhFourErrorLoggingFilter.doFilter(FourOhFourErrorLoggingFilter.java:65) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:662) {code}

    Atlassian JIRA | 6 years ago | Roy Hartono [Atlassian]
    java.lang.NullPointerException
  4. Speed up your debug routine!

    Automated exception search integrated into your IDE

  5. 0

    *Steps to reproduce (I have only tried this on OnDemand):* # Create 2 users, 'fred1' and 'fred2' # Hit https://instance/wiki/rest/prototype/1/search/user.json?query=fred until both users come back in the result. # Delete user fred2. # Hit https://instance/wiki/rest/prototype/1/search/user.json?query=fred a few times - observe an HTTP 500 response instead of the search result. This breaks sharing, which relies on REST search calls, and persists across re-indexes and restarts. This issue was encountered by an OnDemand customer. The only workaround I found was to modify/remove the lingering USERINFO entry associated with the deleted user in the {{content}} table, and then re-index. Note that the exception that provokes the HTTP 500 is not logged out-of-the-box, due to https://ecosystem.atlassian.net/browse/REST-198. The problem is an NPE when building a PersonalInformationContentEntity: {noformat} java.lang.NullPointerException at com.atlassian.confluence.plugins.rest.entities.builders.PersonalInformationContentEntityBuilder.setThumbnailLink(PersonalInformationContentEntityBuilder.java:48) at com.atlassian.confluence.plugins.rest.entities.builders.PersonalInformationContentEntityBuilder.setUserProperties(PersonalInformationContentEntityBuilder.java:92) at com.atlassian.confluence.plugins.rest.entities.builders.PersonalInformationContentEntityBuilder.build(PersonalInformationContentEntityBuilder.java:85) at com.atlassian.confluence.plugins.rest.service.DefaultRestSearchService.toSearchResultEntity(DefaultRestSearchService.java:218) at com.atlassian.confluence.plugins.rest.service.DefaultRestSearchService.makeSearchResultsEntityList(DefaultRestSearchService.java:190) at com.atlassian.confluence.plugins.rest.service.DefaultRestSearchService.userSearch(DefaultRestSearchService.java:61) at com.atlassian.confluence.plugins.rest.resources.SearchService.doUserSearch(SearchService.java:187) at sun.reflect.GeneratedMethodAccessor332.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker$1.invoke(DispatchProviderHelper.java:206) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$1.intercept(DispatchProviderHelper.java:92) at com.atlassian.plugins.rest.common.interceptor.impl.DefaultMethodInvocation.invoke(DefaultMethodInvocation.java:61) at com.atlassian.plugins.rest.common.expand.interceptor.ExpandInterceptor.intercept(ExpandInterceptor.java:38) at com.atlassian.plugins.rest.common.interceptor.impl.DefaultMethodInvocation.invoke(DefaultMethodInvocation.java:61) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper.invokeMethodWithInterceptors(DispatchProviderHelper.java:100) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper.access$100(DispatchProviderHelper.java:30) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker._dispatch(DispatchProviderHelper.java:202) at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) ... {noformat}

    Atlassian JIRA | 5 years ago | Robin Fernandes [Atlassian]
    java.lang.NullPointerException
  6. 0

    *Steps to reproduce (I have only tried this on OnDemand):* # Create 2 users, 'fred1' and 'fred2' # Hit https://instance/wiki/rest/prototype/1/search/user.json?query=fred until both users come back in the result. # Delete user fred2. # Hit https://instance/wiki/rest/prototype/1/search/user.json?query=fred a few times - observe an HTTP 500 response instead of the search result. This breaks sharing, which relies on REST search calls, and persists across re-indexes and restarts. This issue was encountered by an OnDemand customer. The only workaround I found was to modify/remove the lingering USERINFO entry associated with the deleted user in the {{content}} table, and then re-index. Note that the exception that provokes the HTTP 500 is not logged out-of-the-box, due to https://ecosystem.atlassian.net/browse/REST-198. The problem is an NPE when building a PersonalInformationContentEntity: {noformat} java.lang.NullPointerException at com.atlassian.confluence.plugins.rest.entities.builders.PersonalInformationContentEntityBuilder.setThumbnailLink(PersonalInformationContentEntityBuilder.java:48) at com.atlassian.confluence.plugins.rest.entities.builders.PersonalInformationContentEntityBuilder.setUserProperties(PersonalInformationContentEntityBuilder.java:92) at com.atlassian.confluence.plugins.rest.entities.builders.PersonalInformationContentEntityBuilder.build(PersonalInformationContentEntityBuilder.java:85) at com.atlassian.confluence.plugins.rest.service.DefaultRestSearchService.toSearchResultEntity(DefaultRestSearchService.java:218) at com.atlassian.confluence.plugins.rest.service.DefaultRestSearchService.makeSearchResultsEntityList(DefaultRestSearchService.java:190) at com.atlassian.confluence.plugins.rest.service.DefaultRestSearchService.userSearch(DefaultRestSearchService.java:61) at com.atlassian.confluence.plugins.rest.resources.SearchService.doUserSearch(SearchService.java:187) at sun.reflect.GeneratedMethodAccessor332.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker$1.invoke(DispatchProviderHelper.java:206) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$1.intercept(DispatchProviderHelper.java:92) at com.atlassian.plugins.rest.common.interceptor.impl.DefaultMethodInvocation.invoke(DefaultMethodInvocation.java:61) at com.atlassian.plugins.rest.common.expand.interceptor.ExpandInterceptor.intercept(ExpandInterceptor.java:38) at com.atlassian.plugins.rest.common.interceptor.impl.DefaultMethodInvocation.invoke(DefaultMethodInvocation.java:61) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper.invokeMethodWithInterceptors(DispatchProviderHelper.java:100) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper.access$100(DispatchProviderHelper.java:30) at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker._dispatch(DispatchProviderHelper.java:202) at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) ... {noformat}

    Atlassian JIRA | 5 years ago | Robin Fernandes [back 12th Sept]
    java.lang.NullPointerException

    Not finding the right solution?
    Take a tour to get the most out of Samebug.

    Tired of useless tips?

    Automated exception search integrated into your IDE

    Root Cause Analysis

    1. java.lang.NullPointerException

      No message provided

      at com.atlassian.confluence.plugins.rest.entities.builders.PersonalInformationContentEntityBuilder.setThumbnailLink()
    2. com.atlassian.confluence
      SearchService.doUserSearch
      1. com.atlassian.confluence.plugins.rest.entities.builders.PersonalInformationContentEntityBuilder.setThumbnailLink(PersonalInformationContentEntityBuilder.java:47)
      2. com.atlassian.confluence.plugins.rest.entities.builders.PersonalInformationContentEntityBuilder.setUserProperties(PersonalInformationContentEntityBuilder.java:91)
      3. com.atlassian.confluence.plugins.rest.entities.builders.PersonalInformationContentEntityBuilder.build(PersonalInformationContentEntityBuilder.java:84)
      4. com.atlassian.confluence.plugins.rest.service.DefaultRestSearchService.toSearchResultEntity(DefaultRestSearchService.java:218)
      5. com.atlassian.confluence.plugins.rest.service.DefaultRestSearchService.makeSearchResultsEntityList(DefaultRestSearchService.java:190)
      6. com.atlassian.confluence.plugins.rest.service.DefaultRestSearchService.userSearch(DefaultRestSearchService.java:61)
      7. com.atlassian.confluence.plugins.rest.resources.SearchService.doUserSearch(SearchService.java:187)
      7 frames