Author: angela
Date: Thu May  2 12:34:12 2019
New Revision: 1858534

URL: http://svn.apache.org/viewvc?rev=1858534&view=rev
Log:
OAK-8293 : PrincipalProviderImpl.findPrincipals my return null values in result 
iterator

Added:
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/principal/PrincipalProviderImplErrorTest.java
   (with props)
Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/principal/PrincipalProviderImpl.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/principal/AbstractPrincipalProviderTest.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/principal/PrincipalProviderImplTest.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderTest.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderWithCacheTest.java

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=1858534&r1=1858533&r2=1858534&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
 Thu May  2 12:34:12 2019
@@ -18,7 +18,6 @@ package org.apache.jackrabbit.oak.securi
 
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
-import com.google.common.base.Predicates;
 import com.google.common.collect.Iterators;
 import org.apache.jackrabbit.api.security.principal.ItemBasedPrincipal;
 import org.apache.jackrabbit.api.security.principal.PrincipalManager;
@@ -46,6 +45,7 @@ import java.security.Principal;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Objects;
 import java.util.Set;
 
 /**
@@ -146,9 +146,7 @@ class PrincipalProviderImpl implements P
         }
         try {
             Iterator<Authorizable> authorizables = findAuthorizables(nameHint, 
searchType, offset, limit);
-            Iterator<Principal> principals = Iterators.transform(
-                    Iterators.filter(authorizables, Predicates.notNull()),
-                    new AuthorizableToPrincipal());
+            Iterator<Principal> principals = 
Iterators.filter(Iterators.transform(authorizables, new 
AuthorizableToPrincipal()), Objects::nonNull);
 
             // everyone is injected only in complete set, not on pages
             boolean noRange = offset == 0 && limit == Long.MAX_VALUE;
@@ -255,9 +253,9 @@ class PrincipalProviderImpl implements P
     private static final class EveryonePredicate implements 
Predicate<Principal> {
         private boolean servedEveryone = false;
         @Override
-        public boolean apply(@Nullable Principal principal) {
-            String pName = (principal == null) ? null : principal.getName();
-            if (EveryonePrincipal.NAME.equals(pName)) {
+        public boolean apply(Principal principal) {
+            // principal must never be null as the result was already filtered 
for null.
+            if (EveryonePrincipal.NAME.equals(principal.getName())) {
                 if (servedEveryone) {
                     return false;
                 } else {

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/principal/AbstractPrincipalProviderTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/principal/AbstractPrincipalProviderTest.java?rev=1858534&r1=1858533&r2=1858534&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/principal/AbstractPrincipalProviderTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/principal/AbstractPrincipalProviderTest.java
 Thu May  2 12:34:12 2019
@@ -27,6 +27,7 @@ import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
 
+import com.google.common.collect.Iterators;
 import org.apache.jackrabbit.api.security.principal.GroupPrincipal;
 import org.apache.jackrabbit.api.security.principal.ItemBasedPrincipal;
 import org.apache.jackrabbit.api.security.principal.PrincipalManager;
@@ -42,6 +43,7 @@ import org.apache.jackrabbit.oak.spi.sec
 import org.apache.jackrabbit.oak.spi.security.principal.PrincipalProvider;
 import org.apache.jackrabbit.oak.spi.security.principal.SystemUserPrincipal;
 import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
+import org.jetbrains.annotations.NotNull;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
@@ -110,16 +112,18 @@ public abstract class AbstractPrincipalP
         }
     }
 
+    @NotNull
     protected abstract PrincipalProvider createPrincipalProvider();
 
     @Test
-    public void testGetPrincipals() throws Exception {
+    public void testGetPrincipals() {
         String adminId = adminSession.getAuthInfo().getUserID();
         Set<? extends Principal> principals = 
principalProvider.getPrincipals(adminId);
 
         assertNotNull(principals);
         assertFalse(principals.isEmpty());
         assertTrue(principals.contains(EveryonePrincipal.getInstance()));
+        assertEquals(adminSession.getAuthInfo().getPrincipals(), principals);
 
         for (Principal principal : principals) {
             assertNotNull(principalProvider.getPrincipal(principal.getName()));
@@ -127,6 +131,28 @@ public abstract class AbstractPrincipalP
     }
 
     @Test
+    public void testGetPrincipalsNonExistingId() throws Exception {
+        assertNull(getUserManager(root).getAuthorizable("nonExisting"));
+        assertTrue(principalProvider.getPrincipals("nonExisting").isEmpty());
+    }
+
+    @Test
+    public void testGetPrincipalsForGroup() throws Exception {
+        Authorizable group = null;
+        try {
+            group = getUserManager(root).createGroup("testGroup");
+            root.commit();
+
+            
assertTrue(principalProvider.getPrincipals(group.getID()).isEmpty());
+        } finally {
+            if (group != null) {
+                group.remove();
+                root.commit();
+            }
+        }
+    }
+
+    @Test
     public void testGetItemBasedPrincipal() throws Exception {
         assertTrue(userPrincipal instanceof ItemBasedPrincipal);
         String jcrPath = ((ItemBasedPrincipal) userPrincipal).getPath();
@@ -149,7 +175,7 @@ public abstract class AbstractPrincipalP
     }
 
     @Test
-    public void testGetitemBasedPrincipalPropertyPath() throws Exception {
+    public void testGetItemBasedPrincipalPropertyPath() throws Exception {
         String propPath = PathUtils.concat(((ItemBasedPrincipal) 
userPrincipal).getPath(), UserConstants.REP_PRINCIPAL_NAME);
         
assertNull(principalProvider.getItemBasedPrincipal(getNamePathMapper().getOakPath(propPath)));
     }
@@ -435,4 +461,18 @@ public abstract class AbstractPrincipalP
         }
         return l;
     }
+
+    @Test
+    public void testFindRangeNegativeOffset() {
+        List<String> expected = Arrays.asList(groupId, groupId2, groupId3);
+        Collections.sort(expected);
+
+        for (int limit = -1; limit < expected.size() + 2; limit++) {
+            Iterator<? extends Principal> i1 = 
principalProvider.findPrincipals("testGroup", false,
+                    PrincipalManager.SEARCH_TYPE_ALL, -1, limit);
+            Iterator<? extends Principal> i2 = 
principalProvider.findPrincipals("testGroup", true,
+                    PrincipalManager.SEARCH_TYPE_ALL, 0, limit);
+            assertTrue(Iterators.elementsEqual(i1, i2));
+        }
+    }
 }

Added: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/principal/PrincipalProviderImplErrorTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/principal/PrincipalProviderImplErrorTest.java?rev=1858534&view=auto
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/principal/PrincipalProviderImplErrorTest.java
 (added)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/principal/PrincipalProviderImplErrorTest.java
 Thu May  2 12:34:12 2019
@@ -0,0 +1,180 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.security.principal;
+
+import com.google.common.collect.Iterators;
+import com.google.common.collect.Sets;
+import org.apache.jackrabbit.api.security.principal.PrincipalManager;
+import org.apache.jackrabbit.api.security.user.Query;
+import org.apache.jackrabbit.api.security.user.User;
+import org.apache.jackrabbit.api.security.user.UserManager;
+import org.apache.jackrabbit.oak.AbstractSecurityTest;
+import org.apache.jackrabbit.oak.api.Root;
+import org.apache.jackrabbit.oak.namepath.NamePathMapper;
+import org.apache.jackrabbit.oak.spi.security.principal.EveryonePrincipal;
+import org.apache.jackrabbit.oak.spi.security.principal.PrincipalImpl;
+import org.apache.jackrabbit.oak.spi.security.principal.PrincipalProvider;
+import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
+import org.jetbrains.annotations.NotNull;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+
+import javax.jcr.RepositoryException;
+
+import java.security.Principal;
+import java.util.Iterator;
+
+import static org.apache.jackrabbit.oak.namepath.NamePathMapper.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.withSettings;
+
+public class PrincipalProviderImplErrorTest extends AbstractSecurityTest {
+
+    private User testUser;
+    private UserManager umMock;
+    private PrincipalProviderImpl principalProvider;
+
+    @Before
+    public void before() throws Exception {
+        super.before();
+
+        testUser = getTestUser();
+
+        Answer throwingAnswer = (Answer<Object>) invocation -> {
+            throw new RepositoryException();
+        };
+        umMock = mock(UserManager.class, throwingAnswer);
+        principalProvider = createPrincipalProvider(umMock);
+    }
+
+    private PrincipalProviderImpl createPrincipalProvider(@NotNull UserManager 
um) {
+        UserConfiguration uc = 
when(mock(UserConfiguration.class).getUserManager(any(Root.class), 
any(NamePathMapper.class))).thenReturn(um).getMock();
+        return new PrincipalProviderImpl(root, uc, DEFAULT);
+    }
+
+    @Test
+    public void testGetPrincipal() throws Exception {
+        String principalName = testUser.getPrincipal().getName();
+        
assertNull(principalProvider.getPrincipal(getTestUser().getPrincipal().getName()));
+
+        verify(umMock, times(1)).getAuthorizable(new 
PrincipalImpl(principalName));
+    }
+
+    @Test
+    public void testGetPrincipalFailsOnUser() throws Exception {
+        String principalName = testUser.getPrincipal().getName();
+        Principal p = new PrincipalImpl(principalName);
+
+        User userMock = when(mock(User.class).getPrincipal()).thenThrow(new 
RepositoryException()).getMock();
+        UserManager um = 
when(mock(UserManager.class).getAuthorizable(p)).thenReturn(userMock).getMock();
+
+        
assertNull(createPrincipalProvider(um).getPrincipal(getTestUser().getPrincipal().getName()));
+        verify(um, times(1)).getAuthorizable(p);
+        verify(userMock, times(1)).getPrincipal();
+    }
+
+    @Test
+    public void testGetEveryone() throws Exception {
+        assertSame(EveryonePrincipal.getInstance(), 
principalProvider.getPrincipal(EveryonePrincipal.NAME));
+
+        verify(umMock, times(1)).getAuthorizable(new 
PrincipalImpl(EveryonePrincipal.NAME));
+    }
+
+    @Test
+    public void testGetItemBasedPrincipal() throws Exception {
+        String jcrPath = getTestUser().getPath();
+        String oakPath = getNamePathMapper().getOakPath(jcrPath);
+        assertNotNull(oakPath);
+        assertNull(principalProvider.getItemBasedPrincipal(oakPath));
+
+        verify(umMock, times(1)).getAuthorizableByPath(jcrPath);
+    }
+
+    @Test
+    public void testGetMembershipPrincipals() throws Exception {
+        
assertTrue(principalProvider.getMembershipPrincipals(testUser.getPrincipal()).isEmpty());
+
+        verify(umMock, times(1)).getAuthorizable(testUser.getPrincipal());
+    }
+
+    @Test
+    public void testGetMembershipPrincipalsFailsOnUser() throws Exception {
+        Principal p = testUser.getPrincipal();
+
+        User userMock = when(mock(User.class).memberOf()).thenThrow(new 
RepositoryException()).getMock();
+        UserManager um = 
when(mock(UserManager.class).getAuthorizable(p)).thenReturn(userMock).getMock();
+
+        assertEquals(Sets.newHashSet(EveryonePrincipal.getInstance()), 
createPrincipalProvider(um).getMembershipPrincipals(p));
+
+        verify(um, times(1)).getAuthorizable(p);
+        verify(userMock, times(1)).memberOf();
+    }
+
+    @Test
+    public void testGetPrincipals() throws Exception {
+        
assertTrue(principalProvider.getPrincipals(testUser.getID()).isEmpty());
+
+        verify(umMock, times(1)).getAuthorizable(testUser.getID());
+    }
+
+    @Test
+    public void testFindByTypeUser() throws Exception {
+        
assertFalse(principalProvider.findPrincipals(PrincipalManager.SEARCH_TYPE_NOT_GROUP).hasNext());
+
+        verify(umMock, times(1)).findAuthorizables(any(Query.class));
+    }
+
+    @Test
+    public void testFindByTypeGroup() throws Exception {
+        
assertFalse(principalProvider.findPrincipals(PrincipalManager.SEARCH_TYPE_GROUP).hasNext());
+
+        verify(umMock, times(1)).findAuthorizables(any(Query.class));
+    }
+
+    @Test
+    public void testFind() throws Exception {
+        
assertFalse(principalProvider.findPrincipals(testUser.getPrincipal().getName(), 
false, PrincipalManager.SEARCH_TYPE_NOT_GROUP, 0, Long.MAX_VALUE).hasNext());
+
+        verify(umMock, times(1)).findAuthorizables(any(Query.class));
+    }
+
+    @Test
+    public void testFindFailsOnUser() throws Exception {
+        Principal p = testUser.getPrincipal();
+
+        User userMock = when(mock(User.class).getPrincipal()).thenThrow(new 
RepositoryException()).getMock();
+        UserManager um = 
when(mock(UserManager.class).findAuthorizables(any(Query.class))).thenReturn(Iterators.singletonIterator(userMock)).getMock();
+
+        Iterator it = 
createPrincipalProvider(um).findPrincipals(PrincipalManager.SEARCH_TYPE_NOT_GROUP);
+        assertFalse(it.hasNext());
+
+        verify(userMock, times(1)).getPrincipal();
+    }
+}
\ No newline at end of file

Propchange: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/principal/PrincipalProviderImplErrorTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/principal/PrincipalProviderImplTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/principal/PrincipalProviderImplTest.java?rev=1858534&r1=1858533&r2=1858534&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/principal/PrincipalProviderImplTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/principal/PrincipalProviderImplTest.java
 Thu May  2 12:34:12 2019
@@ -17,29 +17,56 @@
 package org.apache.jackrabbit.oak.security.principal;
 
 import java.security.Principal;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Set;
 
 import com.google.common.collect.ImmutableSet;
 
+import com.google.common.collect.Iterators;
+import com.google.common.collect.Lists;
 import org.apache.jackrabbit.api.security.principal.GroupPrincipal;
 import org.apache.jackrabbit.api.security.principal.PrincipalManager;
+import org.apache.jackrabbit.api.security.user.Authorizable;
 import org.apache.jackrabbit.api.security.user.Group;
+import org.apache.jackrabbit.api.security.user.Query;
+import org.apache.jackrabbit.api.security.user.User;
 import org.apache.jackrabbit.api.security.user.UserManager;
+import org.apache.jackrabbit.oak.api.Root;
+import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.oak.spi.security.principal.EveryonePrincipal;
+import org.apache.jackrabbit.oak.spi.security.principal.PrincipalImpl;
 import org.apache.jackrabbit.oak.spi.security.principal.PrincipalProvider;
+import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
+import org.jetbrains.annotations.NotNull;
 import org.junit.Test;
 
+import static org.apache.jackrabbit.oak.namepath.NamePathMapper.DEFAULT;
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
 public class PrincipalProviderImplTest extends AbstractPrincipalProviderTest {
 
+    @NotNull
+    @Override
     protected PrincipalProvider createPrincipalProvider() {
         return new PrincipalProviderImpl(root, getUserConfiguration(), 
namePathMapper);
     }
 
+    private PrincipalProviderImpl createPrincipalProvider(@NotNull UserManager 
um) {
+        UserConfiguration uc = 
when(mock(UserConfiguration.class).getUserManager(any(Root.class), 
any(NamePathMapper.class))).thenReturn(um).getMock();
+        return new PrincipalProviderImpl(root, uc, DEFAULT);
+    }
+
     @Test
     public void testEveryoneMembers() throws Exception {
         Principal everyone = 
principalProvider.getPrincipal(EveryonePrincipal.NAME);
@@ -71,4 +98,52 @@ public class PrincipalProviderImplTest e
             }
         }
     }
+
+    @Test
+    public void testGetGroupMembershipNonGroupPrincipal() throws Exception {
+        // Group.getPrincipal doesn't return a GroupPrincipal
+        Group gr = when(mock(Group.class).getPrincipal()).thenReturn(new 
PrincipalImpl("group")).getMock();
+        Authorizable mockAuthorizable = 
when(mock(User.class).memberOf()).thenReturn(Iterators.singletonIterator(gr)).getMock();
+        UserManager umMock = 
when(mock(UserManager.class).getAuthorizable(any(Principal.class))).thenReturn(mockAuthorizable).getMock();
+
+        Set<Principal> membership = 
createPrincipalProvider(umMock).getMembershipPrincipals(new 
PrincipalImpl("userPrincipal"));
+        assertEquals(ImmutableSet.of(EveryonePrincipal.getInstance()), 
membership);
+    }
+
+    @Test
+    public void testGetItemBasedPrincipalNotItemBased() throws Exception {
+        Authorizable mockUser = 
when(mock(User.class).getPrincipal()).thenReturn(new 
PrincipalImpl("noPath")).getMock();
+        UserManager umMock = mock(UserManager.class);
+        when(umMock.getAuthorizableByPath(anyString())).thenReturn(mockUser);
+
+        
createPrincipalProvider(umMock).getItemBasedPrincipal("/path/to/authorizable");
+        verify(umMock, 
times(1)).getAuthorizableByPath("/path/to/authorizable");
+    }
+
+    @Test
+    public void testFindWithUnexpectedNullAuthorizable() throws Exception {
+        List<Authorizable> l = new ArrayList<>();
+        l.add(null);
+        UserManager umMock = mock(UserManager.class);
+        
when(umMock.findAuthorizables(any(Query.class))).thenReturn(l.iterator());
+
+        Iterator<? extends Principal> result = 
createPrincipalProvider(umMock).findPrincipals(PrincipalManager.SEARCH_TYPE_NOT_GROUP);
+        assertFalse(result.hasNext());
+
+        result = 
createPrincipalProvider(umMock).findPrincipals(PrincipalManager.SEARCH_TYPE_GROUP);
+        
assertTrue(Iterators.elementsEqual(Iterators.singletonIterator(EveryonePrincipal.getInstance()),
 result));
+    }
+
+    @Test
+    public void testFindWithUnexpectedNullPrincipal() throws Exception {
+        Authorizable userMock = 
when(mock(Authorizable.class).getPrincipal()).thenReturn(null).getMock();
+        UserManager umMock = mock(UserManager.class);
+        
when(umMock.findAuthorizables(any(Query.class))).thenReturn(Iterators.singletonIterator(userMock));
+
+        Iterator<? extends Principal> result = 
createPrincipalProvider(umMock).findPrincipals(PrincipalManager.SEARCH_TYPE_NOT_GROUP);
+        assertFalse(result.hasNext());
+
+        result = 
createPrincipalProvider(umMock).findPrincipals(PrincipalManager.SEARCH_TYPE_GROUP);
+        
assertTrue(Iterators.elementsEqual(Iterators.singletonIterator(EveryonePrincipal.getInstance()),
 result));
+    }
 }
\ No newline at end of file

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderTest.java?rev=1858534&r1=1858533&r2=1858534&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderTest.java
 Thu May  2 12:34:12 2019
@@ -30,12 +30,14 @@ import org.apache.jackrabbit.oak.securit
 import org.apache.jackrabbit.oak.spi.security.principal.AdminPrincipal;
 import org.apache.jackrabbit.oak.spi.security.principal.EveryonePrincipal;
 import org.apache.jackrabbit.oak.spi.security.principal.PrincipalProvider;
+import org.jetbrains.annotations.NotNull;
 import org.junit.Test;
 
 import static org.junit.Assert.assertTrue;
 
 public class UserPrincipalProviderTest extends AbstractPrincipalProviderTest {
 
+    @NotNull
     @Override
     protected PrincipalProvider createPrincipalProvider() {
         return new UserPrincipalProvider(root, getUserConfiguration(), 
namePathMapper);

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderWithCacheTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderWithCacheTest.java?rev=1858534&r1=1858533&r2=1858534&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderWithCacheTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderWithCacheTest.java
 Thu May  2 12:34:12 2019
@@ -53,6 +53,7 @@ import org.apache.jackrabbit.oak.spi.sec
 import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
 import org.apache.jackrabbit.oak.util.NodeUtil;
 import org.apache.jackrabbit.oak.plugins.tree.TreeUtil;
+import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 import org.junit.Test;
 
@@ -103,6 +104,7 @@ public class UserPrincipalProviderWithCa
         );
     }
 
+    @NotNull
     @Override
     protected PrincipalProvider createPrincipalProvider() {
         return createPrincipalProvider(root);


Reply via email to