Details
Description
I see often errors in the logs about this NPE when the XWikiGuest user is checked if it is part of a group:
WARN c.x.x.a.User - Unhandled exception while checking if user XWiki.XWikiGuest belongs to group XWiki.XWikiDevGroup java.lang.NullPointerException: null at com.xpn.xwiki.user.impl.xwiki.XWikiGroupServiceImpl.getAllGroupsReferencesForMember(XWikiGroupServiceImpl.java:756) at com.xpn.xwiki.user.api.XWikiUser.isUserInGroup(XWikiUser.java:398) at com.xpn.xwiki.api.User.isUserInGroup(User.java:124) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) ...
Can be reproduced by executing with a guest user the following:
$xwiki.getUser().isUserInGroup('XWiki.XWikiAllGroup')
It would seem that the check we had for null users (like it would sound reasonable for guest users) does no longer apply. For XWikiGuest users, the api.User object is initialized with an XWikiUser object having a null DocumentReference, while the check expected it to be initialized with a null XWikiUser object altogether. https://github.com/xwiki/xwiki-platform/blob/fc1ca29a2d829e7b9fb0b7fb2c0cdad6433675b0/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/api/User.java#L121