You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by an...@apache.org on 2019/08/19 11:22:01 UTC

svn commit: r1865441 [1/2] - in /jackrabbit/oak/trunk: oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ oak-core/src/main/java/org/apache/jackrabbit/oak/security/principal/ oak-core/src/main/java/org/apache/jackrabbit/oak/security/user...

Author: angela
Date: Mon Aug 19 11:22:01 2019
New Revision: 1865441

URL: http://svn.apache.org/viewvc?rev=1865441&view=rev
Log:
OAK-8546 : Nullable/Notnull Annotations for User Management API -> adjust implementations accordingly

Modified:
    jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/FindAuthorizableWithScopeTest.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/principal/PrincipalProviderImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AuthorizableImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/GroupImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/ImpersonationImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/SystemUserImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserManagerImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/AuthorizableImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/AutoSaveEnabledManager.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/GroupImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/UserImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/query/XPathQueryBuilder.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/query/UserQueryManagerTest.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/AuthorizableDelegator.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/GroupDelegator.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/ImpersonationDelegator.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/UserDelegator.java
    jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/UserManagerDelegator.java
    jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/AuthorizableTest.java
    jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/RemappingTest.java
    jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/UserQueryTest.java
    jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/user/action/ClearMembershipActionTest.java

Modified: jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/FindAuthorizableWithScopeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/FindAuthorizableWithScopeTest.java?rev=1865441&r1=1865440&r2=1865441&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/FindAuthorizableWithScopeTest.java (original)
+++ jackrabbit/oak/trunk/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/FindAuthorizableWithScopeTest.java Mon Aug 19 11:22:01 2019
@@ -34,6 +34,7 @@ import org.apache.jackrabbit.commons.jac
 import org.apache.jackrabbit.oak.spi.security.principal.EveryonePrincipal;
 import org.apache.jackrabbit.oak.spi.security.principal.PrincipalImpl;
 import org.apache.jackrabbit.util.Text;
+import org.jetbrains.annotations.NotNull;
 
 public class FindAuthorizableWithScopeTest extends AbstractTest {
 
@@ -119,7 +120,7 @@ public class FindAuthorizableWithScopeTe
 
     private Query createQuery() {
         return new Query() {
-            public <T> void build(QueryBuilder<T> builder) {
+            public <T> void build(@NotNull QueryBuilder<T> builder) {
                 builder.setLimit(0, maxCount);
                 builder.nameMatches("testUser%");
                 if (setScope) {

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/principal/PrincipalProviderImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/principal/PrincipalProviderImpl.java?rev=1865441&r1=1865440&r2=1865441&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/principal/PrincipalProviderImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/principal/PrincipalProviderImpl.java Mon Aug 19 11:22:01 2019
@@ -200,7 +200,7 @@ class PrincipalProviderImpl implements P
                                                      final long limit) throws RepositoryException {
         Query userQuery = new Query() {
             @Override
-            public <T> void build(QueryBuilder<T> builder) {
+            public <T> void build(@NotNull QueryBuilder<T> builder) {
                 builder.setCondition(builder.like('@' +UserConstants.REP_PRINCIPAL_NAME, buildSearchPattern(nameHint)));
                 builder.setSelector(AuthorizableType.getType(searchType).getAuthorizableClass());
                 builder.setSortOrder(UserConstants.REP_PRINCIPAL_NAME, Direction.ASCENDING);

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AuthorizableImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AuthorizableImpl.java?rev=1865441&r1=1865440&r2=1865441&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AuthorizableImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AuthorizableImpl.java Mon Aug 19 11:22:01 2019
@@ -68,21 +68,24 @@ abstract class AuthorizableImpl implemen
 
     abstract void checkValidTree(@NotNull Tree tree) throws RepositoryException;
 
-    static boolean isValidAuthorizableImpl(Authorizable authorizable) {
+    static boolean isValidAuthorizableImpl(@NotNull Authorizable authorizable) {
         return authorizable instanceof AuthorizableImpl;
     }
 
     //-------------------------------------------------------< Authorizable >---
+    @NotNull
     @Override
     public String getID() {
         return id;
     }
 
+    @NotNull
     @Override
     public Iterator<Group> declaredMemberOf() throws RepositoryException {
         return getMembership(false);
     }
 
+    @NotNull
     @Override
     public Iterator<Group> memberOf() throws RepositoryException {
         return getMembership(true);
@@ -99,41 +102,45 @@ abstract class AuthorizableImpl implemen
         getTree().remove();
     }
 
+    @NotNull
     @Override
     public Iterator<String> getPropertyNames() throws RepositoryException {
         return getPropertyNames(".");
     }
 
+    @NotNull
     @Override
-    public Iterator<String> getPropertyNames(String relPath) throws RepositoryException {
+    public Iterator<String> getPropertyNames(@NotNull String relPath) throws RepositoryException {
         return getAuthorizableProperties().getNames(relPath);
     }
 
     @Override
-    public boolean hasProperty(String relPath) throws RepositoryException {
+    public boolean hasProperty(@NotNull String relPath) throws RepositoryException {
         return getAuthorizableProperties().hasProperty(relPath);
     }
 
+    @Nullable
     @Override
-    public Value[] getProperty(String relPath) throws RepositoryException {
+    public Value[] getProperty(@NotNull String relPath) throws RepositoryException {
         return getAuthorizableProperties().getProperty(relPath);
     }
 
     @Override
-    public void setProperty(String relPath, Value value) throws RepositoryException {
+    public void setProperty(@NotNull String relPath, @Nullable Value value) throws RepositoryException {
         getAuthorizableProperties().setProperty(relPath, value);
     }
 
     @Override
-    public void setProperty(String relPath, Value[] values) throws RepositoryException {
+    public void setProperty(@NotNull String relPath, @Nullable Value[] values) throws RepositoryException {
         getAuthorizableProperties().setProperty(relPath, values);
     }
 
     @Override
-    public boolean removeProperty(String relPath) throws RepositoryException {
+    public boolean removeProperty(@NotNull String relPath) throws RepositoryException {
         return getAuthorizableProperties().removeProperty(relPath);
     }
 
+    @NotNull
     @Override
     public String getPath() {
         return userManager.getNamePathMapper().getJcrPath(getTree().getPath());

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/GroupImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/GroupImpl.java?rev=1865441&r1=1865440&r2=1865441&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/GroupImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/GroupImpl.java Mon Aug 19 11:22:01 2019
@@ -65,34 +65,37 @@ class GroupImpl extends AuthorizableImpl
         return true;
     }
 
+    @NotNull
     @Override
     public Principal getPrincipal() throws RepositoryException {
         return new GroupPrincipal(getPrincipalName(), getTree());
     }
 
     //--------------------------------------------------------------< Group >---
+    @NotNull
     @Override
     public Iterator<Authorizable> getDeclaredMembers() throws RepositoryException {
         return getMembers(false);
     }
 
+    @NotNull
     @Override
     public Iterator<Authorizable> getMembers() throws RepositoryException {
         return getMembers(true);
     }
 
     @Override
-    public boolean isDeclaredMember(Authorizable authorizable) throws RepositoryException {
+    public boolean isDeclaredMember(@NotNull Authorizable authorizable) throws RepositoryException {
         return isMember(authorizable, false);
     }
 
     @Override
-    public boolean isMember(Authorizable authorizable) throws RepositoryException {
+    public boolean isMember(@NotNull Authorizable authorizable) throws RepositoryException {
         return isMember(authorizable, true);
     }
 
     @Override
-    public boolean addMember(Authorizable authorizable) throws RepositoryException {
+    public boolean addMember(@NotNull Authorizable authorizable) throws RepositoryException {
         if (!isValidAuthorizableImpl(authorizable)) {
             log.warn("Invalid Authorizable: {}", authorizable);
             return false;
@@ -126,13 +129,14 @@ class GroupImpl extends AuthorizableImpl
         return success;
     }
 
+    @NotNull
     @Override
     public Set<String> addMembers(@NotNull String... memberIds) throws RepositoryException {
         return updateMembers(false, memberIds);
     }
 
     @Override
-    public boolean removeMember(Authorizable authorizable) throws RepositoryException {
+    public boolean removeMember(@NotNull Authorizable authorizable) throws RepositoryException {
         if (!isValidAuthorizableImpl(authorizable)) {
             log.warn("Invalid Authorizable: {}", authorizable);
             return false;
@@ -155,6 +159,7 @@ class GroupImpl extends AuthorizableImpl
         }
     }
 
+    @NotNull
     @Override
     public Set<String> removeMembers(@NotNull String... memberIds) throws RepositoryException {
         return updateMembers(true, memberIds);
@@ -169,6 +174,7 @@ class GroupImpl extends AuthorizableImpl
      * @return Iterator of authorizables being member of this group.
      * @throws RepositoryException If an error occurs.
      */
+    @NotNull
     private Iterator<Authorizable> getMembers(boolean includeInherited) throws RepositoryException {
         UserManagerImpl userMgr = getUserManager();
         if (isEveryone()) {
@@ -203,7 +209,7 @@ class GroupImpl extends AuthorizableImpl
      * member of this group; {@code false} otherwise.
      * @throws RepositoryException If an error occurs.
      */
-    private boolean isMember(Authorizable authorizable, boolean includeInherited) throws RepositoryException {
+    private boolean isMember(@NotNull Authorizable authorizable, boolean includeInherited) throws RepositoryException {
         if (!isValidAuthorizableImpl(authorizable)) {
             return false;
         }
@@ -237,6 +243,7 @@ class GroupImpl extends AuthorizableImpl
      * authorizable.
      * @throws javax.jcr.RepositoryException If another error occurs.
      */
+    @NotNull
     private Set<String> updateMembers(boolean isRemove, @NotNull String... memberIds) throws RepositoryException {
         Set<String> failedIds = Sets.newHashSet(memberIds);
         int importBehavior = UserUtil.getImportBehavior(getUserManager().getConfig());

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/ImpersonationImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/ImpersonationImpl.java?rev=1865441&r1=1865440&r2=1865441&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/ImpersonationImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/ImpersonationImpl.java Mon Aug 19 11:22:01 2019
@@ -36,7 +36,6 @@ import org.apache.jackrabbit.oak.spi.sec
 import org.apache.jackrabbit.oak.spi.security.principal.PrincipalIteratorAdapter;
 import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
 import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -123,7 +122,7 @@ class ImpersonationImpl implements Imper
     }
 
     @Override
-    public boolean allows(@Nullable Subject subject) {
+    public boolean allows(@NotNull Subject subject) {
         if (subject == null) {
             return false;
         }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/SystemUserImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/SystemUserImpl.java?rev=1865441&r1=1865440&r2=1865441&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/SystemUserImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/SystemUserImpl.java Mon Aug 19 11:22:01 2019
@@ -23,6 +23,7 @@ import javax.jcr.UnsupportedRepositoryOp
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.spi.security.user.util.UserUtil;
 import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 
 /**
  * Default implementation for a system user.
@@ -58,12 +59,12 @@ class SystemUserImpl extends UserImpl {
     }
 
     @Override
-    public void changePassword(String password) throws RepositoryException {
+    public void changePassword(@Nullable String password) throws RepositoryException {
         throw new UnsupportedRepositoryOperationException("system user");
     }
 
     @Override
-    public void changePassword(String password, String oldPassword) throws RepositoryException {
+    public void changePassword(@Nullable String password, @NotNull String oldPassword) throws RepositoryException {
         throw new UnsupportedRepositoryOperationException("system user");
     }
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserImpl.java?rev=1865441&r1=1865440&r2=1865441&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserImpl.java Mon Aug 19 11:22:01 2019
@@ -65,6 +65,7 @@ class UserImpl extends AuthorizableImpl
         return false;
     }
 
+    @NotNull
     @Override
     public Principal getPrincipal() throws RepositoryException {
         Tree userTree = getTree();
@@ -88,6 +89,7 @@ class UserImpl extends AuthorizableImpl
         return false;
     }
 
+    @NotNull
     @Override
     public Credentials getCredentials() {
         String pwHash = getPasswordHash();
@@ -98,6 +100,7 @@ class UserImpl extends AuthorizableImpl
         }
     }
 
+    @NotNull
     @Override
     public Impersonation getImpersonation() {
         return new ImpersonationImpl(this);
@@ -117,7 +120,7 @@ class UserImpl extends AuthorizableImpl
     }
 
     @Override
-    public void changePassword(String password, String oldPassword) throws RepositoryException {
+    public void changePassword(@Nullable String password, @NotNull String oldPassword) throws RepositoryException {
         // make sure the old password matches.
         String pwHash = getPasswordHash();
         if (!PasswordUtil.isSame(pwHash, oldPassword)) {
@@ -127,7 +130,7 @@ class UserImpl extends AuthorizableImpl
     }
 
     @Override
-    public void disable(String reason) throws RepositoryException {
+    public void disable(@Nullable String reason) throws RepositoryException {
         if (isAdmin) {
             throw new RepositoryException("The administrator user cannot be disabled.");
         }
@@ -150,6 +153,7 @@ class UserImpl extends AuthorizableImpl
         return getTree().hasProperty(REP_DISABLED);
     }
 
+    @Nullable
     @Override
     public String getDisabledReason() {
         PropertyState disabled = getTree().getProperty(REP_DISABLED);

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserManagerImpl.java?rev=1865441&r1=1865440&r2=1865441&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserManagerImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserManagerImpl.java Mon Aug 19 11:22:01 2019
@@ -106,24 +106,28 @@ public class UserManagerImpl implements
     }
 
     //--------------------------------------------------------< UserManager >---
+    @Nullable
     @Override
-    public Authorizable getAuthorizable(String id) throws RepositoryException {
+    public Authorizable getAuthorizable(@NotNull String id) throws RepositoryException {
         Tree tree = (Strings.isNullOrEmpty(id)) ? null : userProvider.getAuthorizable(id);
         return getAuthorizable(tree);
     }
 
+    @Nullable
     @Override
-    public <T extends Authorizable> T getAuthorizable(String id, Class<T> authorizableClass) throws RepositoryException {
+    public <T extends Authorizable> T getAuthorizable(@NotNull String id, @NotNull Class<T> authorizableClass) throws RepositoryException {
         return UserUtil.castAuthorizable(getAuthorizable(id), authorizableClass);
     }
 
+    @Nullable
     @Override
-    public Authorizable getAuthorizable(Principal principal) throws RepositoryException {
+    public Authorizable getAuthorizable(@NotNull Principal principal) throws RepositoryException {
         return (principal == null) ? null : getAuthorizable(userProvider.getAuthorizableByPrincipal(principal));
     }
 
+    @Nullable
     @Override
-    public Authorizable getAuthorizableByPath(String path) throws RepositoryException {
+    public Authorizable getAuthorizableByPath(@NotNull String path) throws RepositoryException {
         String oakPath = namePathMapper.getOakPath(path);
         if (oakPath == null) {
             throw new RepositoryException("Invalid path " + path);
@@ -131,29 +135,34 @@ public class UserManagerImpl implements
         return getAuthorizableByOakPath(oakPath);
     }
 
+    @NotNull
     @Override
-    public Iterator<Authorizable> findAuthorizables(String relPath, String value) throws RepositoryException {
+    public Iterator<Authorizable> findAuthorizables(@NotNull String relPath, @Nullable String value) throws RepositoryException {
         return findAuthorizables(relPath, value, SEARCH_TYPE_AUTHORIZABLE);
     }
 
+    @NotNull
     @Override
-    public Iterator<Authorizable> findAuthorizables(String relPath, String value, int searchType) throws RepositoryException {
+    public Iterator<Authorizable> findAuthorizables(@NotNull String relPath, @Nullable String value, int searchType) throws RepositoryException {
         return getQueryManager().findAuthorizables(relPath, value, AuthorizableType.getType(searchType));
     }
 
+    @NotNull
     @Override
-    public Iterator<Authorizable> findAuthorizables(Query query) throws RepositoryException {
+    public Iterator<Authorizable> findAuthorizables(@NotNull Query query) throws RepositoryException {
         return getQueryManager().findAuthorizables(query);
     }
 
+    @NotNull
     @Override
-    public User createUser(final String userID, String password) throws RepositoryException {
+    public User createUser(@NotNull final String userID, @Nullable String password) throws RepositoryException {
         Principal principal = new PrincipalImpl(userID);
         return createUser(userID, password, principal, null);
     }
 
+    @NotNull
     @Override
-    public User createUser(String userID, String password, Principal principal,
+    public User createUser(@NotNull String userID, @Nullable String password, @NotNull Principal principal,
                            @Nullable String intermediatePath) throws RepositoryException {
         checkValidId(userID);
         checkValidPrincipal(principal, false);
@@ -174,8 +183,9 @@ public class UserManagerImpl implements
         return user;
     }
 
+    @NotNull
     @Override
-    public User createSystemUser(String userID, String intermediatePath) throws RepositoryException {
+    public User createSystemUser(@NotNull String userID, @Nullable String intermediatePath) throws RepositoryException {
         checkValidId(userID);
         Principal principal = new PrincipalImpl(userID);
         checkValidPrincipal(principal, false);
@@ -189,24 +199,28 @@ public class UserManagerImpl implements
         return user;
     }
 
+    @NotNull
     @Override
-    public Group createGroup(String groupId) throws RepositoryException {
+    public Group createGroup(@NotNull String groupId) throws RepositoryException {
         Principal principal = new PrincipalImpl(groupId);
         return createGroup(groupId, principal, null);
     }
 
+    @NotNull
     @Override
-    public Group createGroup(Principal principal) throws RepositoryException {
+    public Group createGroup(@NotNull Principal principal) throws RepositoryException {
         return createGroup(principal, null);
     }
 
+    @NotNull
     @Override
-    public Group createGroup(Principal principal, @Nullable String intermediatePath) throws RepositoryException {
+    public Group createGroup(@NotNull Principal principal, @Nullable String intermediatePath) throws RepositoryException {
         return createGroup(principal.getName(), principal, intermediatePath);
     }
 
+    @NotNull
     @Override
-    public Group createGroup(String groupID, Principal principal, @Nullable String intermediatePath) throws RepositoryException {
+    public Group createGroup(@NotNull String groupID, @NotNull Principal principal, @Nullable String intermediatePath) throws RepositoryException {
         checkValidId(groupID);
         checkValidPrincipal(principal, true);
 

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/AuthorizableImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/AuthorizableImpl.java?rev=1865441&r1=1865440&r2=1865441&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/AuthorizableImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/AuthorizableImpl.java Mon Aug 19 11:22:01 2019
@@ -23,6 +23,8 @@ import javax.jcr.Value;
 
 import org.apache.jackrabbit.api.security.user.Authorizable;
 import org.apache.jackrabbit.api.security.user.Group;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 
 class AuthorizableImpl implements Authorizable {
 
@@ -43,6 +45,7 @@ class AuthorizableImpl implements Author
     }
 
     //-------------------------------------------------------< Authorizable >---
+    @NotNull
     @Override
     public String getID() throws RepositoryException {
         return dlg.getID();
@@ -53,16 +56,19 @@ class AuthorizableImpl implements Author
         return dlg.isGroup();
     }
 
+    @NotNull
     @Override
     public Principal getPrincipal() throws RepositoryException {
         return dlg.getPrincipal();
     }
 
+    @NotNull
     @Override
     public Iterator<Group> declaredMemberOf() throws RepositoryException {
         return AuthorizableWrapper.createGroupIterator(dlg.declaredMemberOf(), mgr);
     }
 
+    @NotNull
     @Override
     public Iterator<Group> memberOf() throws RepositoryException {
         return AuthorizableWrapper.createGroupIterator(dlg.memberOf(), mgr);
@@ -77,24 +83,26 @@ class AuthorizableImpl implements Author
         }
     }
 
+    @NotNull
     @Override
     public Iterator<String> getPropertyNames() throws RepositoryException {
         return dlg.getPropertyNames();
     }
 
+    @NotNull
     @Override
-    public Iterator<String> getPropertyNames(String s) throws RepositoryException {
+    public Iterator<String> getPropertyNames(@NotNull String s) throws RepositoryException {
         return dlg.getPropertyNames(s);
 
     }
 
     @Override
-    public boolean hasProperty(String s) throws RepositoryException {
+    public boolean hasProperty(@NotNull String s) throws RepositoryException {
         return dlg.hasProperty(s);
     }
 
     @Override
-    public void setProperty(String s, Value value) throws RepositoryException {
+    public void setProperty(@NotNull String s, @Nullable Value value) throws RepositoryException {
         try {
             dlg.setProperty(s, value);
         } finally {
@@ -103,7 +111,7 @@ class AuthorizableImpl implements Author
     }
 
     @Override
-    public void setProperty(String s, Value[] values) throws RepositoryException {
+    public void setProperty(@NotNull String s, @Nullable Value[] values) throws RepositoryException {
         try {
             dlg.setProperty(s, values);
         } finally {
@@ -111,13 +119,14 @@ class AuthorizableImpl implements Author
         }
     }
 
+    @Nullable
     @Override
-    public Value[] getProperty(String s) throws RepositoryException {
+    public Value[] getProperty(@NotNull String s) throws RepositoryException {
         return dlg.getProperty(s);
     }
 
     @Override
-    public boolean removeProperty(String s) throws RepositoryException {
+    public boolean removeProperty(@NotNull String s) throws RepositoryException {
         try {
             return dlg.removeProperty(s);
         } finally {
@@ -125,6 +134,7 @@ class AuthorizableImpl implements Author
         }
     }
 
+    @NotNull
     @Override
     public String getPath() throws RepositoryException {
         return dlg.getPath();

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/AutoSaveEnabledManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/AutoSaveEnabledManager.java?rev=1865441&r1=1865440&r2=1865441&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/AutoSaveEnabledManager.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/AutoSaveEnabledManager.java Mon Aug 19 11:22:01 2019
@@ -64,43 +64,51 @@ public class AutoSaveEnabledManager impl
         this.root = root;
     }
 
+    @Nullable
     @Override
-    public Authorizable getAuthorizable(String id) throws RepositoryException {
+    public Authorizable getAuthorizable(@NotNull String id) throws RepositoryException {
         return wrap(dlg.getAuthorizable(id));
     }
 
+    @Nullable
     @Override
-    public <T extends Authorizable> T getAuthorizable(String id, Class<T> authorizableClass) throws RepositoryException {
+    public <T extends Authorizable> T getAuthorizable(@NotNull String id, @NotNull Class<T> authorizableClass) throws RepositoryException {
         return UserUtil.castAuthorizable(wrap(dlg.getAuthorizable(id)), authorizableClass);
     }
 
+    @Nullable
     @Override
-    public Authorizable getAuthorizable(Principal principal) throws RepositoryException {
+    public Authorizable getAuthorizable(@NotNull Principal principal) throws RepositoryException {
         return wrap(dlg.getAuthorizable(principal));
     }
 
+    @Nullable
     @Override
-    public Authorizable getAuthorizableByPath(String path) throws RepositoryException {
+    public Authorizable getAuthorizableByPath(@NotNull String path) throws RepositoryException {
         return wrap(dlg.getAuthorizableByPath(path));
     }
 
+    @NotNull
     @Override
-    public Iterator<Authorizable> findAuthorizables(String relPath, String value) throws RepositoryException {
+    public Iterator<Authorizable> findAuthorizables(@NotNull String relPath, @Nullable String value) throws RepositoryException {
         return AuthorizableWrapper.createIterator(dlg.findAuthorizables(relPath, value), this);
     }
 
+    @NotNull
     @Override
-    public Iterator<Authorizable> findAuthorizables(String relPath, String value, int searchType) throws RepositoryException {
+    public Iterator<Authorizable> findAuthorizables(@NotNull String relPath, @Nullable String value, int searchType) throws RepositoryException {
         return AuthorizableWrapper.createIterator(dlg.findAuthorizables(relPath, value, searchType), this);
     }
 
+    @NotNull
     @Override
-    public Iterator<Authorizable> findAuthorizables(Query query) throws RepositoryException {
+    public Iterator<Authorizable> findAuthorizables(@NotNull Query query) throws RepositoryException {
         return AuthorizableWrapper.createIterator(dlg.findAuthorizables(query), this);
     }
 
+    @NotNull
     @Override
-    public User createUser(String userID, String password) throws RepositoryException {
+    public User createUser(@NotNull String userID, @Nullable String password) throws RepositoryException {
         try {
             return wrap(dlg.createUser(userID, password));
         } finally {
@@ -108,8 +116,9 @@ public class AutoSaveEnabledManager impl
         }
     }
 
+    @NotNull
     @Override
-    public User createUser(String userID, String password, Principal principal, @Nullable String intermediatePath) throws RepositoryException {
+    public User createUser(@NotNull String userID, @Nullable String password, @NotNull Principal principal, @Nullable String intermediatePath) throws RepositoryException {
         try {
             return wrap(dlg.createUser(userID, password, principal, intermediatePath));
         } finally {
@@ -117,8 +126,9 @@ public class AutoSaveEnabledManager impl
         }
     }
 
+    @NotNull
     @Override
-    public User createSystemUser(String userID, String intermediatePath) throws RepositoryException {
+    public User createSystemUser(@NotNull String userID, @Nullable String intermediatePath) throws RepositoryException {
         try {
             return wrap(dlg.createSystemUser(userID, intermediatePath));
         } finally {
@@ -126,8 +136,9 @@ public class AutoSaveEnabledManager impl
         }
     }
 
+    @NotNull
     @Override
-    public Group createGroup(String groupId) throws RepositoryException {
+    public Group createGroup(@NotNull String groupId) throws RepositoryException {
         try {
             return wrap(dlg.createGroup(groupId));
         } finally {
@@ -135,8 +146,9 @@ public class AutoSaveEnabledManager impl
         }
     }
 
+    @NotNull
     @Override
-    public Group createGroup(Principal principal) throws RepositoryException {
+    public Group createGroup(@NotNull Principal principal) throws RepositoryException {
         try {
             return wrap(dlg.createGroup(principal));
         } finally {
@@ -144,17 +156,19 @@ public class AutoSaveEnabledManager impl
         }
     }
 
+    @NotNull
     @Override
-    public Group createGroup(Principal principal, String groupId) throws RepositoryException {
+    public Group createGroup(@NotNull Principal principal, @Nullable String intermediatePath) throws RepositoryException {
         try {
-            return wrap(dlg.createGroup(principal, groupId));
+            return wrap(dlg.createGroup(principal, intermediatePath));
         } finally {
             autosave();
         }
     }
 
+    @NotNull
     @Override
-    public Group createGroup(String groupID, Principal principal, @Nullable String intermediatePath) throws RepositoryException {
+    public Group createGroup(@NotNull String groupID, @NotNull Principal principal, @Nullable String intermediatePath) throws RepositoryException {
         try {
             return wrap(dlg.createGroup(groupID, principal, intermediatePath));
         } finally {

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/GroupImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/GroupImpl.java?rev=1865441&r1=1865440&r2=1865441&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/GroupImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/GroupImpl.java Mon Aug 19 11:22:01 2019
@@ -34,18 +34,20 @@ class GroupImpl extends AuthorizableImpl
         return (Group) getDlg();
     }
 
+    @NotNull
     @Override
     public Iterator<Authorizable> getDeclaredMembers() throws RepositoryException {
         return AuthorizableWrapper.createIterator(getDelegate().getDeclaredMembers(), getMgr());
     }
 
+    @NotNull
     @Override
     public Iterator<Authorizable> getMembers() throws RepositoryException {
         return AuthorizableWrapper.createIterator(getDelegate().getMembers(), getMgr());
     }
 
     @Override
-    public boolean isDeclaredMember(Authorizable authorizable) throws RepositoryException {
+    public boolean isDeclaredMember(@NotNull Authorizable authorizable) throws RepositoryException {
         if (isValid(authorizable)) {
             return getDelegate().isDeclaredMember(((AuthorizableImpl) authorizable).getDlg());
         } else {
@@ -54,7 +56,7 @@ class GroupImpl extends AuthorizableImpl
     }
 
     @Override
-    public boolean isMember(Authorizable authorizable) throws RepositoryException {
+    public boolean isMember(@NotNull Authorizable authorizable) throws RepositoryException {
         if (isValid(authorizable)) {
             return getDelegate().isMember(((AuthorizableImpl) authorizable).getDlg());
         } else {
@@ -63,7 +65,7 @@ class GroupImpl extends AuthorizableImpl
     }
 
     @Override
-    public boolean addMember(Authorizable authorizable) throws RepositoryException {
+    public boolean addMember(@NotNull Authorizable authorizable) throws RepositoryException {
         try {
             if (isValid(authorizable)) {
                 return getDelegate().addMember(((AuthorizableImpl) authorizable).getDlg());
@@ -75,6 +77,7 @@ class GroupImpl extends AuthorizableImpl
         }
     }
 
+    @NotNull
     @Override
     public Set<String> addMembers(@NotNull String... memberIds) throws RepositoryException {
         try {
@@ -85,7 +88,7 @@ class GroupImpl extends AuthorizableImpl
     }
 
     @Override
-    public boolean removeMember(Authorizable authorizable) throws RepositoryException {
+    public boolean removeMember(@NotNull Authorizable authorizable) throws RepositoryException {
         try {
             if (isValid(authorizable)) {
                 return getDelegate().removeMember(((AuthorizableImpl) authorizable).getDlg());
@@ -97,6 +100,7 @@ class GroupImpl extends AuthorizableImpl
         }
     }
 
+    @NotNull
     @Override
     public Set<String> removeMembers(@NotNull String... memberIds) throws RepositoryException {
         try {
@@ -106,7 +110,7 @@ class GroupImpl extends AuthorizableImpl
         }
     }
 
-    private boolean isValid(Authorizable a) {
+    private boolean isValid(@NotNull Authorizable a) {
         return a instanceof AuthorizableImpl;
     }
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/UserImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/UserImpl.java?rev=1865441&r1=1865440&r2=1865441&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/UserImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/autosave/UserImpl.java Mon Aug 19 11:22:01 2019
@@ -24,6 +24,8 @@ import javax.security.auth.Subject;
 import org.apache.jackrabbit.api.security.principal.PrincipalIterator;
 import org.apache.jackrabbit.api.security.user.Impersonation;
 import org.apache.jackrabbit.api.security.user.User;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 
 class UserImpl extends AuthorizableImpl implements User {
 
@@ -45,18 +47,20 @@ class UserImpl extends AuthorizableImpl
         return getDelegate().isSystemUser();
     }
 
+    @NotNull
     @Override
     public Credentials getCredentials() throws RepositoryException {
         return getDelegate().getCredentials();
     }
 
+    @NotNull
     @Override
     public Impersonation getImpersonation() throws RepositoryException {
         return new ImpersonationImpl(getDelegate().getImpersonation());
     }
 
     @Override
-    public void changePassword(String pw) throws RepositoryException {
+    public void changePassword(@Nullable String pw) throws RepositoryException {
         try {
             getDelegate().changePassword(pw);
         } finally {
@@ -66,7 +70,7 @@ class UserImpl extends AuthorizableImpl
     }
 
     @Override
-    public void changePassword(String pw, String oldPw) throws RepositoryException {
+    public void changePassword(@Nullable String pw, @NotNull String oldPw) throws RepositoryException {
         try {
             getDelegate().changePassword(pw, oldPw);
         } finally {
@@ -75,7 +79,7 @@ class UserImpl extends AuthorizableImpl
     }
 
     @Override
-    public void disable(String msg) throws RepositoryException {
+    public void disable(@Nullable String msg) throws RepositoryException {
         try {
             getDelegate().disable(msg);
         } finally {
@@ -88,6 +92,7 @@ class UserImpl extends AuthorizableImpl
         return getDelegate().isDisabled();
     }
 
+    @Nullable
     @Override
     public String getDisabledReason() throws RepositoryException {
         return getDelegate().getDisabledReason();
@@ -100,13 +105,15 @@ class UserImpl extends AuthorizableImpl
         private ImpersonationImpl(Impersonation dlg) {
             this.dlg = dlg;
         }
+
+        @NotNull
         @Override
         public PrincipalIterator getImpersonators() throws RepositoryException {
             return dlg.getImpersonators();
         }
 
         @Override
-        public boolean grantImpersonation(Principal principal) throws RepositoryException {
+        public boolean grantImpersonation(@NotNull Principal principal) throws RepositoryException {
             try {
                 return dlg.grantImpersonation(principal);
             } finally {
@@ -115,7 +122,7 @@ class UserImpl extends AuthorizableImpl
         }
 
         @Override
-        public boolean revokeImpersonation(Principal principal) throws RepositoryException {
+        public boolean revokeImpersonation(@NotNull Principal principal) throws RepositoryException {
             try {
                 return dlg.revokeImpersonation(principal);
             } finally {
@@ -124,7 +131,7 @@ class UserImpl extends AuthorizableImpl
         }
 
         @Override
-        public boolean allows(Subject subject) throws RepositoryException {
+        public boolean allows(@NotNull Subject subject) throws RepositoryException {
             return dlg.allows(subject);
         }
     }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/query/XPathQueryBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/query/XPathQueryBuilder.java?rev=1865441&r1=1865440&r2=1865441&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/query/XPathQueryBuilder.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/query/XPathQueryBuilder.java Mon Aug 19 11:22:01 2019
@@ -23,6 +23,8 @@ import org.apache.jackrabbit.api.securit
 import org.apache.jackrabbit.api.security.user.QueryBuilder;
 import org.apache.jackrabbit.api.security.user.User;
 import org.apache.jackrabbit.oak.spi.security.user.AuthorizableType;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 
 class XPathQueryBuilder implements QueryBuilder<Condition> {
 
@@ -39,7 +41,7 @@ class XPathQueryBuilder implements Query
 
     //-------------------------------------------------------< QueryBuilder >---
     @Override
-    public void setSelector(Class<? extends Authorizable> selector) {
+    public void setSelector(@NotNull Class<? extends Authorizable> selector) {
         if (User.class.isAssignableFrom(selector)) {
             selectorType = AuthorizableType.USER;
         } else if (Group.class.isAssignableFrom(selector)) {
@@ -50,30 +52,30 @@ class XPathQueryBuilder implements Query
     }
 
     @Override
-    public void setScope(String groupID, boolean declaredOnly) {
+    public void setScope(@NotNull String groupID, boolean declaredOnly) {
         this.groupID = groupID;
         declaredMembersOnly = declaredOnly;
     }
 
     @Override
-    public void setCondition(Condition condition) {
+    public void setCondition(@NotNull Condition condition) {
         this.condition = condition;
     }
 
     @Override
-    public void setSortOrder(String propertyName, Direction direction, boolean ignoreCase) {
+    public void setSortOrder(@NotNull String propertyName, @NotNull Direction direction, boolean ignoreCase) {
         sortProperty = propertyName;
         sortDirection = direction;
         sortIgnoreCase = ignoreCase;
     }
 
     @Override
-    public void setSortOrder(String propertyName, Direction direction) {
+    public void setSortOrder(@NotNull String propertyName, @NotNull Direction direction) {
         setSortOrder(propertyName, direction, false);
     }
 
     @Override
-    public void setLimit(Value bound, long maxCount) {
+    public void setLimit(@Nullable Value bound, long maxCount) {
         // reset the offset before setting bound value/maxCount
         offset = 0;
         this.bound = bound;
@@ -88,78 +90,91 @@ class XPathQueryBuilder implements Query
         setMaxCount(maxCount);
     }
 
+    @NotNull
     @Override
-    public Condition nameMatches(String pattern) {
+    public Condition nameMatches(@NotNull String pattern) {
         return new Condition.Node(pattern);
     }
 
+    @NotNull
     @Override
-    public Condition neq(String relPath, Value value) {
+    public Condition neq(@NotNull String relPath, @NotNull Value value) {
         return new Condition.Property(relPath, RelationOp.NE, value);
     }
 
+    @NotNull
     @Override
-    public Condition eq(String relPath, Value value) {
+    public Condition eq(@NotNull String relPath, @NotNull Value value) {
         return new Condition.Property(relPath, RelationOp.EQ, value);
     }
 
+    @NotNull
     @Override
-    public Condition lt(String relPath, Value value) {
+    public Condition lt(@NotNull String relPath, @NotNull Value value) {
         return new Condition.Property(relPath, RelationOp.LT, value);
     }
 
+    @NotNull
     @Override
-    public Condition le(String relPath, Value value) {
+    public Condition le(@NotNull String relPath, @NotNull Value value) {
         return new Condition.Property(relPath, RelationOp.LE, value);
     }
 
+    @NotNull
     @Override
-    public Condition gt(String relPath, Value value) {
+    public Condition gt(@NotNull String relPath, @NotNull Value value) {
         return new Condition.Property(relPath, RelationOp.GT, value);
     }
 
+    @NotNull
     @Override
-    public Condition ge(String relPath, Value value) {
+    public Condition ge(@NotNull String relPath, @NotNull Value value) {
         return new Condition.Property(relPath, RelationOp.GE, value);
     }
 
+    @NotNull
     @Override
-    public Condition exists(String relPath) {
+    public Condition exists(@NotNull String relPath) {
         return new Condition.Property(relPath, RelationOp.EX);
     }
 
+    @NotNull
     @Override
-    public Condition like(String relPath, String pattern) {
+    public Condition like(@NotNull String relPath, @NotNull String pattern) {
         return new Condition.Property(relPath, RelationOp.LIKE, pattern);
     }
 
+    @NotNull
     @Override
-    public Condition contains(String relPath, String searchExpr) {
+    public Condition contains(@NotNull String relPath, @NotNull String searchExpr) {
         return new Condition.Contains(relPath, searchExpr);
     }
 
+    @NotNull
     @Override
-    public Condition impersonates(String name) {
+    public Condition impersonates(@NotNull String name) {
         return new Condition.Impersonation(name);
     }
 
+    @NotNull
     @Override
-    public Condition not(Condition condition) {
+    public Condition not(@NotNull Condition condition) {
         return new Condition.Not(condition);
     }
 
+    @NotNull
     @Override
-    public Condition and(Condition condition1, Condition condition2) {
+    public Condition and(@NotNull Condition condition1, @NotNull Condition condition2) {
         return new Condition.And(condition1, condition2);
     }
 
+    @NotNull
     @Override
-    public Condition or(Condition condition1, Condition condition2) {
+    public Condition or(@NotNull Condition condition1, @NotNull Condition condition2) {
         return new Condition.Or(condition1, condition2);
     }
 
     //-----------------------------------------------------------< internal >---
-
     Condition property(String relPath, RelationOp op, Value value) {
         return new Condition.Property(relPath, op, value);
     }

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/query/UserQueryManagerTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/query/UserQueryManagerTest.java?rev=1865441&r1=1865440&r2=1865441&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/query/UserQueryManagerTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/query/UserQueryManagerTest.java Mon Aug 19 11:22:01 2019
@@ -256,7 +256,7 @@ public class UserQueryManagerTest extend
     public void testQueryMaxCountZero() throws Exception {
         Query q = new Query() {
             @Override
-            public <T> void build(QueryBuilder<T> queryBuilder) {
+            public <T> void build(@NotNull QueryBuilder<T> queryBuilder) {
                 queryBuilder.setLimit(0, 0);
 
             }
@@ -269,7 +269,7 @@ public class UserQueryManagerTest extend
         String userId = user.getID();
         Query q = new Query() {
             @Override
-            public <T> void build(QueryBuilder<T> builder) {
+            public <T> void build(@NotNull QueryBuilder<T> builder) {
                 builder.setCondition(builder.nameMatches(userId));
                 builder.setScope(EveryonePrincipal.NAME, false);
             }
@@ -288,7 +288,7 @@ public class UserQueryManagerTest extend
 
         Query q = new Query() {
             @Override
-            public <T> void build(QueryBuilder<T> builder) {
+            public <T> void build(@NotNull QueryBuilder<T> builder) {
                 builder.setCondition(builder.eq(propertyName, v));
                 builder.setScope(EveryonePrincipal.NAME, false);
             }
@@ -307,7 +307,7 @@ public class UserQueryManagerTest extend
 
         Query q = new Query() {
             @Override
-            public <T> void build(QueryBuilder<T> builder) {
+            public <T> void build(@NotNull QueryBuilder<T> builder) {
                 builder.setCondition(builder.eq(propertyName, v));
                 builder.setScope("eGroup", false);
             }
@@ -326,7 +326,7 @@ public class UserQueryManagerTest extend
 
         Query q = new Query() {
             @Override
-            public <T> void build(QueryBuilder<T> builder) {
+            public <T> void build(@NotNull QueryBuilder<T> builder) {
                 builder.setCondition(builder.eq(propertyName, v));
             }
         };
@@ -343,7 +343,7 @@ public class UserQueryManagerTest extend
 
         Query q = new Query() {
             @Override
-            public <T> void build(QueryBuilder<T> builder) {
+            public <T> void build(@NotNull QueryBuilder<T> builder) {
                 builder.setCondition(builder.eq(propertyName, v));
                 builder.setScope("g1", false);
             }
@@ -362,7 +362,7 @@ public class UserQueryManagerTest extend
 
         Query q = new Query() {
             @Override
-            public <T> void build(QueryBuilder<T> builder) {
+            public <T> void build(@NotNull QueryBuilder<T> builder) {
                 builder.setCondition(builder.eq(propertyName, v));
                 builder.setScope("g1", false);
             }
@@ -383,7 +383,7 @@ public class UserQueryManagerTest extend
 
         Query q = new Query() {
             @Override
-            public <T> void build(QueryBuilder<T> builder) {
+            public <T> void build(@NotNull QueryBuilder<T> builder) {
                 builder.setCondition(builder.eq(propertyName, v));
                 builder.setScope("g1", true);
             }
@@ -404,7 +404,7 @@ public class UserQueryManagerTest extend
 
         Query q = new Query() {
             @Override
-            public <T> void build(QueryBuilder<T> builder) {
+            public <T> void build(@NotNull QueryBuilder<T> builder) {
                 builder.setCondition(builder.eq(propertyName, v));
                 builder.setScope("g1", false);
             }
@@ -424,7 +424,7 @@ public class UserQueryManagerTest extend
 
         Query q = new Query() {
             @Override
-            public <T> void build(QueryBuilder<T> builder) {
+            public <T> void build(@NotNull QueryBuilder<T> builder) {
                 builder.setLimit(valueFactory.createValue(100), Long.MAX_VALUE);
                 builder.setCondition(builder.gt(propertyName, valueFactory.createValue(20)));
             }
@@ -445,7 +445,7 @@ public class UserQueryManagerTest extend
 
         Query q = new Query() {
             @Override
-            public <T> void build(QueryBuilder<T> builder) {
+            public <T> void build(@NotNull QueryBuilder<T> builder) {
                 builder.setLimit(valueFactory.createValue(100), Long.MAX_VALUE);
                 builder.setSortOrder(propertyName, QueryBuilder.Direction.ASCENDING);
                 builder.setCondition(builder.gt(propertyName, valueFactory.createValue(20)));
@@ -467,7 +467,7 @@ public class UserQueryManagerTest extend
 
         Query q = new Query() {
             @Override
-            public <T> void build(QueryBuilder<T> builder) {
+            public <T> void build(@NotNull QueryBuilder<T> builder) {
                 builder.setLimit(valueFactory.createValue(100), Long.MAX_VALUE);
                 builder.setSortOrder(propertyName, QueryBuilder.Direction.ASCENDING);
             }
@@ -488,7 +488,7 @@ public class UserQueryManagerTest extend
 
         Query q = new Query() {
             @Override
-            public <T> void build(QueryBuilder<T> builder) {
+            public <T> void build(@NotNull QueryBuilder<T> builder) {
                 builder.setCondition(builder.exists(propertyName));
                 builder.setSortOrder(propertyName, QueryBuilder.Direction.DESCENDING, true);
             }
@@ -509,7 +509,7 @@ public class UserQueryManagerTest extend
 
         Query q = new Query() {
             @Override
-            public <T> void build(QueryBuilder<T> builder) {
+            public <T> void build(@NotNull QueryBuilder<T> builder) {
                 builder.setCondition(builder.exists(propertyName));
                 builder.setSortOrder(propertyName, QueryBuilder.Direction.DESCENDING, false);
             }
@@ -526,7 +526,7 @@ public class UserQueryManagerTest extend
 
         Query q = new Query() {
             @Override
-            public <T> void build(QueryBuilder<T> builder) {
+            public <T> void build(@NotNull QueryBuilder<T> builder) {
                 builder.setCondition(builder.nameMatches("group_with_underscore"));
             }
         };
@@ -542,7 +542,7 @@ public class UserQueryManagerTest extend
 
         Query q = new Query() {
             @Override
-            public <T> void build(QueryBuilder<T> builder) {
+            public <T> void build(@NotNull QueryBuilder<T> builder) {
                 builder.setCondition(builder.nameMatches("group_with_underscore"));
             }
         };

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/AuthorizableDelegator.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/AuthorizableDelegator.java?rev=1865441&r1=1865440&r2=1865441&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/AuthorizableDelegator.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/AuthorizableDelegator.java Mon Aug 19 11:22:01 2019
@@ -81,6 +81,7 @@ abstract class AuthorizableDelegator imp
         });
     }
 
+    @NotNull
     @Override
     public String getID() throws RepositoryException {
         return sessionDelegate.perform(new SessionOperation<String>("getID") {
@@ -94,6 +95,7 @@ abstract class AuthorizableDelegator imp
 
 
 
+    @NotNull
     @Override
     public Principal getPrincipal() throws RepositoryException {
         return sessionDelegate.perform(new SessionOperation<Principal>("getPrincipal") {
@@ -105,6 +107,7 @@ abstract class AuthorizableDelegator imp
         });
     }
 
+    @NotNull
     @Override
     public Iterator<Group> declaredMemberOf() throws RepositoryException {
         return sessionDelegate.perform(new SessionOperation<Iterator<Group>>("declaredMemberOf") {
@@ -123,6 +126,7 @@ abstract class AuthorizableDelegator imp
         });
     }
 
+    @NotNull
     @Override
     public Iterator<Group> memberOf() throws RepositoryException {
         return sessionDelegate.perform(new SessionOperation<Iterator<Group>>("memberOf") {
@@ -151,6 +155,7 @@ abstract class AuthorizableDelegator imp
         });
     }
 
+    @NotNull
     @Override
     public Iterator<String> getPropertyNames() throws RepositoryException {
         return sessionDelegate.perform(new SessionOperation<Iterator<String>>("getPropertyNames") {
@@ -162,8 +167,9 @@ abstract class AuthorizableDelegator imp
         });
     }
 
+    @NotNull
     @Override
-    public Iterator<String> getPropertyNames(final String relPath) throws RepositoryException {
+    public Iterator<String> getPropertyNames(@NotNull final String relPath) throws RepositoryException {
         return sessionDelegate.perform(new SessionOperation<Iterator<String>>("getPropertyNames") {
             @NotNull
             @Override
@@ -174,7 +180,7 @@ abstract class AuthorizableDelegator imp
     }
 
     @Override
-    public boolean hasProperty(final String relPath) throws RepositoryException {
+    public boolean hasProperty(@NotNull final String relPath) throws RepositoryException {
         return sessionDelegate.perform(new SessionOperation<Boolean>("hasProperty") {
             @NotNull
             @Override
@@ -185,7 +191,7 @@ abstract class AuthorizableDelegator imp
     }
 
     @Override
-    public void setProperty(final String relPath, final Value value) throws RepositoryException {
+    public void setProperty(@NotNull final String relPath, @Nullable final Value value) throws RepositoryException {
         sessionDelegate.performVoid(new SessionOperation<Void>("setProperty", true) {
             @Override
             public void performVoid() throws RepositoryException {
@@ -195,7 +201,7 @@ abstract class AuthorizableDelegator imp
     }
 
     @Override
-    public void setProperty(final String relPath, final Value[] value) throws RepositoryException {
+    public void setProperty(@NotNull final String relPath, @Nullable final Value[] value) throws RepositoryException {
         sessionDelegate.performVoid(new SessionOperation<Void>("setProperty", true) {
             @Override
             public void performVoid() throws RepositoryException {
@@ -204,19 +210,19 @@ abstract class AuthorizableDelegator imp
         });
     }
 
+    @Nullable
     @Override
-    public Value[] getProperty(final String relPath) throws RepositoryException {
-        return sessionDelegate.perform(new SessionOperation<Value[]>("getProperty") {
-            @NotNull
+    public Value[] getProperty(@NotNull final String relPath) throws RepositoryException {
+        return sessionDelegate.performNullable(new SessionOperation<Value[]>("getProperty") {
             @Override
-            public Value[] perform() throws RepositoryException {
+            public Value[] performNullable() throws RepositoryException {
                 return delegate.getProperty(relPath);
             }
         });
     }
 
     @Override
-    public boolean removeProperty(final String relPath) throws RepositoryException {
+    public boolean removeProperty(@NotNull final String relPath) throws RepositoryException {
         return sessionDelegate.perform(new SessionOperation<Boolean>("removeProperty", true) {
             @NotNull
             @Override
@@ -226,6 +232,7 @@ abstract class AuthorizableDelegator imp
         });
     }
 
+    @NotNull
     @Override
     public String getPath() throws RepositoryException {
         return sessionDelegate.perform(new SessionOperation<String>("getPath") {

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/GroupDelegator.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/GroupDelegator.java?rev=1865441&r1=1865440&r2=1865441&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/GroupDelegator.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/GroupDelegator.java Mon Aug 19 11:22:01 2019
@@ -65,6 +65,7 @@ final class GroupDelegator extends Autho
     }
 
     //--------------------------------------------------------------< Group >---
+    @NotNull
     @Override
     public Iterator<Authorizable> getDeclaredMembers() throws RepositoryException {
         return sessionDelegate.perform(new SessionOperation<Iterator<Authorizable>>("getDeclaredMembers") {
@@ -83,6 +84,7 @@ final class GroupDelegator extends Autho
         });
     }
 
+    @NotNull
     @Override
     public Iterator<Authorizable> getMembers() throws RepositoryException {
         return sessionDelegate.perform(new SessionOperation<Iterator<Authorizable>>("getMembers") {
@@ -102,7 +104,7 @@ final class GroupDelegator extends Autho
     }
 
     @Override
-    public boolean isDeclaredMember(final Authorizable authorizable) throws RepositoryException {
+    public boolean isDeclaredMember(@NotNull final Authorizable authorizable) throws RepositoryException {
         return sessionDelegate.perform(new SessionOperation<Boolean>("isDeclaredMember") {
             @NotNull
             @Override
@@ -113,7 +115,7 @@ final class GroupDelegator extends Autho
     }
 
     @Override
-    public boolean isMember(final Authorizable authorizable) throws RepositoryException {
+    public boolean isMember(@NotNull final Authorizable authorizable) throws RepositoryException {
         return sessionDelegate.perform(new SessionOperation<Boolean>("isMember") {
             @NotNull
             @Override
@@ -124,7 +126,7 @@ final class GroupDelegator extends Autho
     }
 
     @Override
-    public boolean addMember(final Authorizable authorizable) throws RepositoryException {
+    public boolean addMember(@NotNull final Authorizable authorizable) throws RepositoryException {
         return sessionDelegate.perform(new SessionOperation<Boolean>("addMember", true) {
             @NotNull
             @Override
@@ -134,6 +136,7 @@ final class GroupDelegator extends Autho
         });
     }
 
+    @NotNull
     @Override
     public Set<String> addMembers(@NotNull final String... memberIds) throws RepositoryException {
         return sessionDelegate.perform(new SessionOperation<Set<String>>("addMembers", true) {
@@ -146,7 +149,7 @@ final class GroupDelegator extends Autho
     }
 
     @Override
-    public boolean removeMember(final Authorizable authorizable) throws RepositoryException {
+    public boolean removeMember(@NotNull final Authorizable authorizable) throws RepositoryException {
         return sessionDelegate.perform(new SessionOperation<Boolean>("removeMember", true) {
             @NotNull
             @Override
@@ -156,6 +159,7 @@ final class GroupDelegator extends Autho
         });
     }
 
+    @NotNull
     @Override
     public Set<String> removeMembers(@NotNull final String... memberIds) throws RepositoryException {
         return sessionDelegate.perform(new SessionOperation<Set<String>>("removeMembers", true) {

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/ImpersonationDelegator.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/ImpersonationDelegator.java?rev=1865441&r1=1865440&r2=1865441&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/ImpersonationDelegator.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/ImpersonationDelegator.java Mon Aug 19 11:22:01 2019
@@ -55,6 +55,7 @@ final class ImpersonationDelegator imple
         }
     }
 
+    @NotNull
     @Override
     public PrincipalIterator getImpersonators() throws RepositoryException {
         return sessionDelegate.perform(new SessionOperation<PrincipalIterator>("getImpersonators") {
@@ -67,7 +68,7 @@ final class ImpersonationDelegator imple
     }
 
     @Override
-    public boolean grantImpersonation(final Principal principal) throws RepositoryException {
+    public boolean grantImpersonation(@NotNull final Principal principal) throws RepositoryException {
         return sessionDelegate.perform(new SessionOperation<Boolean>("grantImpersonation", true) {
             @NotNull
             @Override
@@ -78,7 +79,7 @@ final class ImpersonationDelegator imple
     }
 
     @Override
-    public boolean revokeImpersonation(final Principal principal) throws RepositoryException {
+    public boolean revokeImpersonation(@NotNull final Principal principal) throws RepositoryException {
         return sessionDelegate.perform(new SessionOperation<Boolean>("revokeImpersonation", true) {
             @NotNull
             @Override
@@ -89,7 +90,7 @@ final class ImpersonationDelegator imple
     }
 
     @Override
-    public boolean allows(final Subject subject) throws RepositoryException {
+    public boolean allows(@NotNull final Subject subject) throws RepositoryException {
         return sessionDelegate.perform(new SessionOperation<Boolean>("allows") {
             @NotNull
             @Override

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/UserDelegator.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/UserDelegator.java?rev=1865441&r1=1865440&r2=1865441&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/UserDelegator.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/UserDelegator.java Mon Aug 19 11:22:01 2019
@@ -26,6 +26,7 @@ import org.apache.jackrabbit.api.securit
 import org.apache.jackrabbit.api.security.user.User;
 import org.apache.jackrabbit.oak.jcr.session.operation.SessionOperation;
 import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 
 /**
  * This implementation of {@code User} delegates back to a
@@ -83,6 +84,7 @@ final class UserDelegator extends Author
         });
     }
 
+    @NotNull
     @Override
     public Credentials getCredentials() {
         return sessionDelegate.safePerform(new SessionOperation<Credentials>("getCredentials") {
@@ -94,6 +96,7 @@ final class UserDelegator extends Author
         });
     }
 
+    @NotNull
     @Override
     public Impersonation getImpersonation() {
         return sessionDelegate.safePerform(new SessionOperation<Impersonation>("getImpersonation") {
@@ -107,7 +110,7 @@ final class UserDelegator extends Author
     }
 
     @Override
-    public void changePassword(final String password) throws RepositoryException {
+    public void changePassword(@Nullable final String password) throws RepositoryException {
         sessionDelegate.performVoid(new SessionOperation<Void>("changePassword", true) {
             @Override
             public void performVoid() throws RepositoryException {
@@ -117,7 +120,7 @@ final class UserDelegator extends Author
     }
 
     @Override
-    public void changePassword(final String password, final String oldPassword) throws RepositoryException {
+    public void changePassword(@Nullable final String password, @NotNull final String oldPassword) throws RepositoryException {
         sessionDelegate.performVoid(new SessionOperation<Void>("changePassword", true) {
             @Override
             public void performVoid() throws RepositoryException {
@@ -127,7 +130,7 @@ final class UserDelegator extends Author
     }
 
     @Override
-    public void disable(final String reason) throws RepositoryException {
+    public void disable(@Nullable final String reason) throws RepositoryException {
         sessionDelegate.performVoid(new SessionOperation<Void>("disable", true) {
             @Override
             public void performVoid() throws RepositoryException {
@@ -147,6 +150,7 @@ final class UserDelegator extends Author
         });
     }
 
+    @Nullable
     @Override
     public String getDisabledReason() throws RepositoryException {
         return sessionDelegate.performNullable(new SessionOperation<String>("getDisabledReason") {

Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/UserManagerDelegator.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/UserManagerDelegator.java?rev=1865441&r1=1865440&r2=1865441&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/UserManagerDelegator.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/UserManagerDelegator.java Mon Aug 19 11:22:01 2019
@@ -56,8 +56,9 @@ public class UserManagerDelegator implem
         this.userManagerDelegate = userManagerDelegate;
     }
 
+    @Nullable
     @Override
-    public Authorizable getAuthorizable(final String id) throws RepositoryException {
+    public Authorizable getAuthorizable(@NotNull final String id) throws RepositoryException {
         return sessionDelegate.performNullable(new UserManagerOperation<Authorizable>(sessionDelegate, "getAuthorizable") {
             @Override
             public Authorizable performNullable() throws RepositoryException {
@@ -67,8 +68,9 @@ public class UserManagerDelegator implem
         });
     }
 
+    @Nullable
     @Override
-    public <T extends Authorizable> T getAuthorizable(final String id, final Class<T> authorizableClass) throws RepositoryException {
+    public <T extends Authorizable> T getAuthorizable(@NotNull final String id, @NotNull final Class<T> authorizableClass) throws RepositoryException {
         return sessionDelegate.performNullable(new UserManagerOperation<T>(sessionDelegate, "getAuthorizable") {
             @Override
             public T performNullable() throws RepositoryException {
@@ -80,8 +82,9 @@ public class UserManagerDelegator implem
         );
     }
 
+    @Nullable
     @Override
-    public Authorizable getAuthorizable(final Principal principal) throws RepositoryException {
+    public Authorizable getAuthorizable(@NotNull final Principal principal) throws RepositoryException {
         return sessionDelegate.performNullable(new UserManagerOperation<Authorizable>(sessionDelegate, "getAuthorizable") {
             @Override
             public Authorizable performNullable() throws RepositoryException {
@@ -91,8 +94,9 @@ public class UserManagerDelegator implem
         });
     }
 
+    @Nullable
     @Override
-    public Authorizable getAuthorizableByPath(final String path) throws RepositoryException {
+    public Authorizable getAuthorizableByPath(@NotNull final String path) throws RepositoryException {
         return sessionDelegate.performNullable(new UserManagerOperation<Authorizable>(sessionDelegate, "getAuthorizableByPath") {
             @Override
             public Authorizable performNullable() throws RepositoryException {
@@ -102,8 +106,9 @@ public class UserManagerDelegator implem
         });
     }
 
+    @NotNull
     @Override
-    public Iterator<Authorizable> findAuthorizables(final String relPath, final String value) throws RepositoryException {
+    public Iterator<Authorizable> findAuthorizables(@NotNull final String relPath, @Nullable final String value) throws RepositoryException {
         return sessionDelegate.perform(new UserManagerOperation<Iterator<Authorizable>>(sessionDelegate, "findAuthorizables") {
             @NotNull
             @Override
@@ -120,8 +125,9 @@ public class UserManagerDelegator implem
         });
     }
 
+    @NotNull
     @Override
-    public Iterator<Authorizable> findAuthorizables(final String relPath, final String value, final int searchType) throws RepositoryException {
+    public Iterator<Authorizable> findAuthorizables(@NotNull final String relPath, @Nullable final String value, final int searchType) throws RepositoryException {
         return sessionDelegate.perform(new UserManagerOperation<Iterator<Authorizable>>(sessionDelegate, "findAuthorizables") {
             @NotNull
             @Override
@@ -138,8 +144,9 @@ public class UserManagerDelegator implem
         });
     }
 
+    @NotNull
     @Override
-    public Iterator<Authorizable> findAuthorizables(final Query query) throws RepositoryException {
+    public Iterator<Authorizable> findAuthorizables(@NotNull final Query query) throws RepositoryException {
         return sessionDelegate.perform(new UserManagerOperation<Iterator<Authorizable>>(sessionDelegate, "findAuthorizables") {
             @NotNull
             @Override
@@ -156,8 +163,9 @@ public class UserManagerDelegator implem
         });
     }
 
+    @NotNull
     @Override
-    public User createUser(final String userID, final String password) throws AuthorizableExistsException, RepositoryException {
+    public User createUser(@NotNull final String userID, @Nullable final String password) throws AuthorizableExistsException, RepositoryException {
         return sessionDelegate.perform(new UserManagerOperation<User>(sessionDelegate, "createUser", true) {
             @NotNull
             @Override
@@ -168,8 +176,9 @@ public class UserManagerDelegator implem
         });
     }
 
+    @NotNull
     @Override
-    public User createUser(final String userID, final String password, final Principal principal, final String intermediatePath) throws RepositoryException {
+    public User createUser(@NotNull final String userID, @Nullable final String password, @NotNull final Principal principal, @Nullable final String intermediatePath) throws RepositoryException {
         return sessionDelegate.perform(new UserManagerOperation<User>(sessionDelegate, "createUser", true) {
             @NotNull
             @Override
@@ -180,8 +189,9 @@ public class UserManagerDelegator implem
         });
     }
 
+    @NotNull
     @Override
-    public User createSystemUser(final String userID, final String intermediatePath) throws RepositoryException {
+    public User createSystemUser(@NotNull final String userID, @Nullable final String intermediatePath) throws RepositoryException {
         return sessionDelegate.perform(new UserManagerOperation<User>(sessionDelegate, "createUser", true) {
             @NotNull
             @Override
@@ -192,8 +202,9 @@ public class UserManagerDelegator implem
         });
     }
 
+    @NotNull
     @Override
-    public Group createGroup(final String groupID) throws RepositoryException {
+    public Group createGroup(@NotNull final String groupID) throws RepositoryException {
         return sessionDelegate.perform(new UserManagerOperation<Group>(sessionDelegate, "createGroup", true) {
             @NotNull
             @Override
@@ -204,8 +215,9 @@ public class UserManagerDelegator implem
         });
     }
 
+    @NotNull
     @Override
-    public Group createGroup(final Principal principal) throws RepositoryException {
+    public Group createGroup(@NotNull final Principal principal) throws RepositoryException {
         return sessionDelegate.perform(new UserManagerOperation<Group>(sessionDelegate, "createGroup", true) {
             @NotNull
             @Override
@@ -216,8 +228,9 @@ public class UserManagerDelegator implem
         });
     }
 
+    @NotNull
     @Override
-    public Group createGroup(final Principal principal, final String intermediatePath) throws RepositoryException {
+    public Group createGroup(@NotNull final Principal principal, @Nullable final String intermediatePath) throws RepositoryException {
         return sessionDelegate.perform(new UserManagerOperation<Group>(sessionDelegate, "createGroup", true) {
             @NotNull
             @Override
@@ -228,8 +241,9 @@ public class UserManagerDelegator implem
         });
     }
 
+    @NotNull
     @Override
-    public Group createGroup(final String groupID, final Principal principal, final String intermediatePath) throws RepositoryException {
+    public Group createGroup(@NotNull final String groupID, @NotNull final Principal principal, @Nullable final String intermediatePath) throws RepositoryException {
         return sessionDelegate.perform(new UserManagerOperation<Group>(sessionDelegate, "createGroup", true) {
             @NotNull
             @Override

Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/AuthorizableTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/AuthorizableTest.java?rev=1865441&r1=1865440&r2=1865441&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/AuthorizableTest.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/AuthorizableTest.java Mon Aug 19 11:22:01 2019
@@ -27,6 +27,7 @@ import org.apache.jackrabbit.api.securit
 import org.apache.jackrabbit.api.security.user.Group;
 import org.apache.jackrabbit.api.security.user.User;
 import org.apache.jackrabbit.test.NotExecutableException;
+import org.jetbrains.annotations.NotNull;
 import org.junit.Test;
 
 /**
@@ -86,6 +87,7 @@ public class AuthorizableTest extends Ab
 
         Authorizable user3 = new Authorizable() {
 
+            @NotNull
             public String getID() throws RepositoryException {
                 return user.getID();
             }
@@ -94,14 +96,17 @@ public class AuthorizableTest extends Ab
                 return user.isGroup();
             }
 
+            @NotNull
             public Principal getPrincipal() throws RepositoryException {
                 return user.getPrincipal();
             }
 
+            @NotNull
             public Iterator<Group> declaredMemberOf() throws RepositoryException {
                 return user.declaredMemberOf();
             }
 
+            @NotNull
             public Iterator<Group> memberOf() throws RepositoryException {
                 return user.memberOf();
             }
@@ -110,34 +115,37 @@ public class AuthorizableTest extends Ab
                 user.remove();
             }
 
+            @NotNull
             public Iterator<String> getPropertyNames() throws RepositoryException {
                 return user.getPropertyNames();
             }
 
-            public Iterator<String> getPropertyNames(String relPath) throws RepositoryException {
+            @NotNull
+            public Iterator<String> getPropertyNames(@NotNull String relPath) throws RepositoryException {
                 return user.getPropertyNames(relPath);
             }
 
-            public boolean hasProperty(String name) throws RepositoryException {
+            public boolean hasProperty(@NotNull String name) throws RepositoryException {
                 return user.hasProperty(name);
             }
 
-            public void setProperty(String name, Value value) throws RepositoryException {
+            public void setProperty(@NotNull String name, Value value) throws RepositoryException {
                 user.setProperty(name, value);
             }
 
-            public void setProperty(String name, Value[] values) throws RepositoryException {
+            public void setProperty(@NotNull String name, Value[] values) throws RepositoryException {
                 user.setProperty(name, values);
             }
 
-            public Value[] getProperty(String name) throws RepositoryException {
+            public Value[] getProperty(@NotNull String name) throws RepositoryException {
                 return user.getProperty(name);
             }
 
-            public boolean removeProperty(String name) throws RepositoryException {
+            public boolean removeProperty(@NotNull String name) throws RepositoryException {
                 return user.removeProperty(name);
             }
 
+            @NotNull
             public String getPath() throws RepositoryException {
                 return user.getPath();
             }

Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/RemappingTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/RemappingTest.java?rev=1865441&r1=1865440&r2=1865441&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/RemappingTest.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/RemappingTest.java Mon Aug 19 11:22:01 2019
@@ -32,6 +32,7 @@ import org.apache.jackrabbit.api.securit
 import org.apache.jackrabbit.api.security.user.UserManager;
 import org.apache.jackrabbit.oak.spi.namespace.NamespaceConstants;
 import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
+import org.jetbrains.annotations.NotNull;
 import org.junit.Test;
 
 /**
@@ -147,7 +148,7 @@ public class RemappingTest extends Abstr
     @Test
     public void testQuery() throws Exception {
         Iterator<Authorizable> result = getUserManager(session).findAuthorizables(new Query() {
-            public <T> void build(QueryBuilder<T> builder) {
+            public <T> void build(@NotNull QueryBuilder<T> builder) {
                 builder.setCondition(builder.
                             eq("@my:property", vf.createValue("value")));
             }