Author: angela
Date: Wed May 15 08:49:40 2019
New Revision: 1859279

URL: http://svn.apache.org/viewvc?rev=1859279&view=rev
Log:
OAK-8315 : Missing nullability annotations in package 
o.a.j.oak.security.authentication.token and 
o.a.j.oak.spi.security.authentication.token

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/CommitMarker.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenAuthentication.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImpl.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenProviderImpl.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenValidatorProvider.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/AbstractTokenTest.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenAuthenticationTest.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenCleanupTest.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImplTest.java
    
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenConfiguration.java
    
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenProvider.java
    
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/TokenConfiguration.java
    
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/package-info.java
    
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenConfigurationTest.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/CommitMarker.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/CommitMarker.java?rev=1859279&r1=1859278&r2=1859279&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/CommitMarker.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/CommitMarker.java
 Wed May 15 08:49:40 2019
@@ -35,6 +35,7 @@ final class CommitMarker {
 
     private static final CommitMarker INSTANCE = new CommitMarker();
 
+    @NotNull
     static Map<String, Object> asCommitAttributes() {
         return Collections.<String, Object>singletonMap(CommitMarker.KEY, 
CommitMarker.INSTANCE);
     }

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenAuthentication.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenAuthentication.java?rev=1859279&r1=1859278&r2=1859279&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenAuthentication.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenAuthentication.java
 Wed May 15 08:49:40 2019
@@ -46,14 +46,14 @@ class TokenAuthentication implements Aut
     private final TokenProvider tokenProvider;
     private TokenInfo tokenInfo;
 
-    TokenAuthentication(TokenProvider tokenProvider) {
+    TokenAuthentication(@NotNull TokenProvider tokenProvider) {
         this.tokenProvider = tokenProvider;
     }
 
     //-----------------------------------------------------< Authentication 
>---
     @Override
     public boolean authenticate(@Nullable Credentials credentials) throws 
LoginException {
-        if (tokenProvider != null && credentials instanceof TokenCredentials) {
+        if (credentials instanceof TokenCredentials) {
             TokenCredentials tc = (TokenCredentials) credentials;
             if (!validateCredentials(tc)) {
                 throw new LoginException("Invalid token credentials.");
@@ -61,7 +61,7 @@ class TokenAuthentication implements Aut
                 return true;
             }
         }
-        // no tokenProvider or other credentials implementation -> not handled 
here.
+        // other credentials implementation -> not handled here.
         return false;
     }
 
@@ -97,7 +97,7 @@ class TokenAuthentication implements Aut
     }
 
     //------------------------------------------------------------< private 
>---
-    private boolean validateCredentials(TokenCredentials tokenCredentials) {
+    private boolean validateCredentials(@NotNull TokenCredentials 
tokenCredentials) {
         // credentials without userID -> check if attributes provide
         // sufficient information for successful authentication.
         String token = tokenCredentials.getToken();

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImpl.java?rev=1859279&r1=1859278&r2=1859279&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImpl.java
 Wed May 15 08:49:40 2019
@@ -157,11 +157,12 @@ public class TokenConfigurationImpl exte
      */
     @NotNull
     @Override
-    public TokenProvider getTokenProvider(Root root) {
+    public TokenProvider getTokenProvider(@NotNull Root root) {
         UserConfiguration uc = 
getSecurityProvider().getConfiguration(UserConfiguration.class);
         return new TokenProviderImpl(root, getParameters(), uc, 
newCredentialsSupport());
     }
 
+    @NotNull
     private CredentialsSupport newCredentialsSupport() {
         int size = credentialsSupport.size();
         if (size == 0) {

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenProviderImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenProviderImpl.java?rev=1859279&r1=1859278&r2=1859279&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenProviderImpl.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenProviderImpl.java
 Wed May 15 08:49:40 2019
@@ -207,6 +207,7 @@ class TokenProviderImpl implements Token
      * @return A new {@code TokenInfo} or {@code null} if the token could not
      *         be created.
      */
+    @Nullable
     @Override
     public TokenInfo createToken(@NotNull String userId, @NotNull Map<String, 
?> attributes) {
         String error = "Failed to create login token. {}";
@@ -262,6 +263,7 @@ class TokenProviderImpl implements Token
      *         {@code null} of the corresponding information does not exist or 
is not
      *         associated with a valid user.
      */
+    @Nullable
     @Override
     public TokenInfo getTokenInfo(@NotNull String token) {
         int pos = token.indexOf(DELIM);

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenValidatorProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenValidatorProvider.java?rev=1859279&r1=1859278&r2=1859279&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenValidatorProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenValidatorProvider.java
 Wed May 15 08:49:40 2019
@@ -59,6 +59,7 @@ class TokenValidatorProvider extends Val
         return new TokenValidator(before, after, commitInfo);
     }
 
+    @NotNull
     private static CommitFailedException constraintViolation(int code, 
@NotNull String message) {
         return new CommitFailedException(CommitFailedException.CONSTRAINT, 
code, message);
     }

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/AbstractTokenTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/AbstractTokenTest.java?rev=1859279&r1=1859278&r2=1859279&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/AbstractTokenTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/AbstractTokenTest.java
 Wed May 15 08:49:40 2019
@@ -20,11 +20,15 @@ import javax.jcr.AccessDeniedException;
 
 import org.apache.jackrabbit.JcrConstants;
 import org.apache.jackrabbit.oak.AbstractSecurityTest;
+import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.plugins.identifier.IdentifierManager;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
+import 
org.apache.jackrabbit.oak.spi.security.authentication.credentials.CredentialsSupport;
+import 
org.apache.jackrabbit.oak.spi.security.authentication.credentials.SimpleCredentialsSupport;
 import 
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenConstants;
 import org.apache.jackrabbit.oak.spi.security.authentication.token.TokenInfo;
+import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
 import org.apache.jackrabbit.oak.util.NodeUtil;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
@@ -42,9 +46,7 @@ public abstract class AbstractTokenTest
         super.before();
 
         root = adminSession.getLatestRoot();
-        tokenProvider = new TokenProviderImpl(root,
-                getTokenConfig(),
-                getUserConfiguration());
+        tokenProvider = createTokenProvider(root, getUserConfiguration());
     }
 
     @Override
@@ -56,6 +58,16 @@ public abstract class AbstractTokenTest
         }
     }
 
+    @NotNull
+    TokenProviderImpl createTokenProvider(@NotNull Root root, @NotNull 
UserConfiguration userConfiguration) {
+        return createTokenProvider(root, getTokenConfig(), userConfiguration, 
SimpleCredentialsSupport.getInstance());
+    }
+
+    @NotNull
+    TokenProviderImpl createTokenProvider(@NotNull Root root, @NotNull 
ConfigurationParameters options, @NotNull UserConfiguration userConfiguration, 
@NotNull CredentialsSupport credentialsSupport) {
+        return new TokenProviderImpl(root, options, userConfiguration, 
credentialsSupport);
+    }
+
     ConfigurationParameters getTokenConfig() {
         return ConfigurationParameters.EMPTY;
     }
@@ -78,4 +90,11 @@ public abstract class AbstractTokenTest
         tree.setProperty(tokenTree.getProperty(TOKEN_ATTRIBUTE_EXPIRY));
         return tree;
     }
+
+    void waitUntilExpired(@NotNull TokenInfo info) {
+        long now = System.currentTimeMillis();
+        while (!info.isExpired(now)) {
+            now = waitForSystemTimeIncrement(now);
+        }
+    }
 }

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenAuthenticationTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenAuthenticationTest.java?rev=1859279&r1=1859278&r2=1859279&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenAuthenticationTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenAuthenticationTest.java
 Wed May 15 08:49:40 2019
@@ -29,7 +29,6 @@ import com.google.common.collect.Immutab
 import 
org.apache.jackrabbit.api.security.authentication.token.TokenCredentials;
 import org.apache.jackrabbit.oak.AbstractSecurityTest;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
-import org.apache.jackrabbit.oak.spi.security.authentication.Authentication;
 import 
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenConstants;
 import org.apache.jackrabbit.oak.spi.security.authentication.token.TokenInfo;
 import 
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenProvider;
@@ -44,19 +43,22 @@ import static org.junit.Assert.assertNot
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
-
-public class TokenAuthenticationTest extends AbstractSecurityTest {
-
-    TokenAuthentication authentication;
-    TokenProviderImpl tokenProvider;
-    String userId;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public class TokenAuthenticationTest extends AbstractTokenTest {
+
+    private TokenAuthentication authentication;
+    private TokenProviderImpl tokenProvider;
+    private String userId;
 
     @Before
     public void before() throws Exception {
         super.before();
-        tokenProvider = new TokenProviderImpl(root,
-                ConfigurationParameters.EMPTY,
-                getUserConfiguration());
+        tokenProvider = createTokenProvider(root, getUserConfiguration());
 
         root.commit();
         authentication = new TokenAuthentication(tokenProvider);
@@ -64,13 +66,6 @@ public class TokenAuthenticationTest ext
     }
 
     @Test
-    public void testAuthenticateWithoutTokenProvider() throws Exception {
-        Authentication authentication = new TokenAuthentication(null);
-
-        assertFalse(authentication.authenticate(new 
TokenCredentials("token")));
-    }
-
-    @Test
     public void testAuthenticateWithInvalidCredentials() throws Exception {
         List<Credentials> invalid = new ArrayList<Credentials>();
         invalid.add(new GuestCredentials());
@@ -118,7 +113,7 @@ public class TokenAuthenticationTest ext
     }
 
     @Test
-    public void testAuthenticateNotMatchingToken() throws Exception {
+    public void testAuthenticateNotMatchingToken() {
         TokenInfo info = tokenProvider.createToken(userId, 
ImmutableMap.of(TokenConstants.TOKEN_ATTRIBUTE + "_mandatory", "val"));
         try {
             authentication.authenticate(new TokenCredentials(info.getToken()));
@@ -129,7 +124,7 @@ public class TokenAuthenticationTest ext
     }
 
     @Test
-    public void testAuthenticateExpiredToken() throws Exception {
+    public void testAuthenticateExpiredToken() {
         TokenProvider tp = new TokenProviderImpl(root,
                 
ConfigurationParameters.of(TokenProvider.PARAM_TOKEN_EXPIRATION, 1),
                 getUserConfiguration());
@@ -148,13 +143,6 @@ public class TokenAuthenticationTest ext
         assertNull(tp.getTokenInfo(info.getToken()));
     }
 
-    private void waitUntilExpired(@NotNull TokenInfo info) {
-        long now = System.currentTimeMillis();
-        while (!info.isExpired(now)) {
-            now = waitForSystemTimeIncrement(now);
-        }
-    }
-
     @Test(expected = IllegalStateException.class)
     public void testGetUserIdBeforeLogin() {
         authentication.getUserId();
@@ -180,19 +168,32 @@ public class TokenAuthenticationTest ext
     }
 
     @Test
+    public void testGetUserPrincipalNonDefaultProvider() throws Exception {
+        TokenInfo info = mock(TokenInfo.class);
+        when(info.isExpired(anyLong())).thenReturn(false);
+        when(info.matches(any(TokenCredentials.class))).thenReturn(true);
+
+        TokenProvider tp = 
when(mock(TokenProvider.class).getTokenInfo(anyString())).thenReturn(info).getMock();
+        TokenAuthentication ta = new TokenAuthentication(tp);
+
+        assertTrue(ta.authenticate(new TokenCredentials("token")));
+        assertNull(ta.getUserPrincipal());
+    }
+
+    @Test
     public void testAuthenticateRefreshToken() throws Exception {
         TokenCredentials tc = new TokenCredentials("token");
-        TokenProvider tp = Mockito.mock(TokenProvider.class);
-        TokenInfo ti = Mockito.mock(TokenInfo.class);
+        TokenProvider tp = mock(TokenProvider.class);
+        TokenInfo ti = mock(TokenInfo.class);
 
-        Mockito.when(tp.getTokenInfo(Mockito.anyString())).thenReturn(ti);
-        Mockito.when(ti.isExpired(Mockito.anyLong())).thenReturn(false);
-        Mockito.when(ti.matches(tc)).thenReturn(true);
+        when(tp.getTokenInfo(anyString())).thenReturn(ti);
+        when(ti.isExpired(anyLong())).thenReturn(false);
+        when(ti.matches(tc)).thenReturn(true);
 
         TokenAuthentication auth = new TokenAuthentication(tp);
         try {
             assertTrue(auth.authenticate(tc));
-            Mockito.verify(ti).resetExpiration(Mockito.anyLong());
+            Mockito.verify(ti).resetExpiration(anyLong());
         } catch (LoginException e) {
             fail(e.getMessage());
         }
@@ -203,30 +204,30 @@ public class TokenAuthenticationTest ext
         TokenCredentials tc = new TokenCredentials("token");
         tc.setAttribute(TokenConstants.TOKEN_SKIP_REFRESH, "");
 
-        TokenProvider tp = Mockito.mock(TokenProvider.class);
-        TokenInfo ti = Mockito.mock(TokenInfo.class);
+        TokenProvider tp = mock(TokenProvider.class);
+        TokenInfo ti = mock(TokenInfo.class);
 
-        Mockito.when(tp.getTokenInfo(Mockito.anyString())).thenReturn(ti);
-        Mockito.when(ti.isExpired(Mockito.anyLong())).thenReturn(false);
-        Mockito.when(ti.matches(tc)).thenReturn(true);
+        when(tp.getTokenInfo(anyString())).thenReturn(ti);
+        when(ti.isExpired(anyLong())).thenReturn(false);
+        when(ti.matches(tc)).thenReturn(true);
 
         TokenAuthentication auth = new TokenAuthentication(tp);
         try {
             assertTrue(auth.authenticate(tc));
-            Mockito.verify(ti, 
Mockito.never()).resetExpiration(Mockito.anyLong());
+            Mockito.verify(ti, Mockito.never()).resetExpiration(anyLong());
         } catch (LoginException e) {
             fail(e.getMessage());
         }
     }
 
     @Test
-    public void testAuthenticateExpiredTokenMock() throws Exception {
+    public void testAuthenticateExpiredTokenMock() {
         TokenCredentials tc = new TokenCredentials("token");
-        TokenProvider tp = Mockito.mock(TokenProvider.class);
-        TokenInfo ti = Mockito.mock(TokenInfo.class);
+        TokenProvider tp = mock(TokenProvider.class);
+        TokenInfo ti = mock(TokenInfo.class);
 
-        Mockito.when(tp.getTokenInfo(Mockito.anyString())).thenReturn(ti);
-        Mockito.when(ti.isExpired(Mockito.anyLong())).thenReturn(true);
+        when(tp.getTokenInfo(anyString())).thenReturn(ti);
+        when(ti.isExpired(anyLong())).thenReturn(true);
 
         TokenAuthentication auth = new TokenAuthentication(tp);
         try {
@@ -236,7 +237,7 @@ public class TokenAuthenticationTest ext
             // success
         }
 
-        Mockito.verify(ti, Mockito.never()).matches(Mockito.any());
-        Mockito.verify(ti, Mockito.never()).resetExpiration(Mockito.anyLong());
+        Mockito.verify(ti, Mockito.never()).matches(any());
+        Mockito.verify(ti, Mockito.never()).resetExpiration(anyLong());
     }
 }

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenCleanupTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenCleanupTest.java?rev=1859279&r1=1859278&r2=1859279&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenCleanupTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenCleanupTest.java
 Wed May 15 08:49:40 2019
@@ -47,7 +47,7 @@ public class TokenCleanupTest extends Ab
         assertEquals(expectedNumber, 
tokenParent.getChildrenCount(expectedNumber*2));
     }
 
-    private void createExpiredTokens(int numberOfTokens) throws Exception {
+    private void createExpiredTokens(int numberOfTokens) {
         for (int i = 0; i < numberOfTokens; i++) {
             TokenInfo tokenInfo = tokenProvider.createToken(userId, 
ImmutableMap.of(TokenProvider.PARAM_TOKEN_EXPIRATION, 2));
             // wait until the info created has expired
@@ -57,7 +57,7 @@ public class TokenCleanupTest extends Ab
         }
     }
 
-    private int createTokensUntilCleanup() throws Exception {
+    private int createTokensUntilCleanup() {
         int tkn = 0;
         boolean clean = false;
         while (!clean && tkn < 50) {
@@ -68,13 +68,6 @@ public class TokenCleanupTest extends Ab
         return tkn;
     }
 
-    private void waitUntilExpired(@NotNull TokenInfo info) {
-        long now = System.currentTimeMillis();
-        while (!info.isExpired(now)) {
-            now = waitForSystemTimeIncrement(now);
-        }
-    }
-
     @Test
     public void testExpiredBelowThreshold() throws Exception {
         createExpiredTokens(4);

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImplTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImplTest.java?rev=1859279&r1=1859278&r2=1859279&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImplTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/authentication/token/TokenConfigurationImplTest.java
 Wed May 15 08:49:40 2019
@@ -16,21 +16,34 @@
  */
 package org.apache.jackrabbit.oak.security.authentication.token;
 
-import java.security.Principal;
-import java.util.List;
-
+import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
 import org.apache.jackrabbit.oak.AbstractSecurityTest;
 import org.apache.jackrabbit.oak.spi.commit.MoveTracker;
 import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
+import 
org.apache.jackrabbit.oak.spi.security.authentication.credentials.CredentialsSupport;
+import 
org.apache.jackrabbit.oak.spi.security.authentication.credentials.SimpleCredentialsSupport;
 import 
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenConfiguration;
 import 
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenProvider;
 import org.junit.Test;
 
+import javax.jcr.Credentials;
+import javax.jcr.SimpleCredentials;
+import java.security.Principal;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import static 
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenConstants.TOKEN_ATTRIBUTE;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
+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 TokenConfigurationImplTest extends AbstractSecurityTest {
 
@@ -87,4 +100,66 @@ public class TokenConfigurationImplTest
         TokenProvider tp = tc.getTokenProvider(root);
         assertTrue(tp instanceof TokenProviderImpl);
     }
+
+    @Test
+    public void testBindNoCredentialsSupport() {
+        tc.unbindCredentialsSupport(SimpleCredentialsSupport.getInstance());
+
+        // fallback to default: simplecredentials support
+        TokenProvider tp = tc.getTokenProvider(root);
+
+        assertFalse(tp.doCreateToken(new TestCredentialsSupport.Creds()));
+
+        SimpleCredentials sc = new SimpleCredentials("uid", new char[0]);
+        assertFalse(tp.doCreateToken(sc));
+
+        sc.setAttribute(TOKEN_ATTRIBUTE, "");
+        assertTrue(tp.doCreateToken(sc));
+    }
+
+    @Test
+    public void testBindSingleCredentialsSupport() {
+        Credentials creds = mock(Credentials.class);
+        CredentialsSupport cs = mock(CredentialsSupport.class);
+        
when(cs.getCredentialClasses()).thenReturn(Collections.singleton(creds.getClass()));
+
+        tc.bindCredentialsSupport(cs);
+
+        TokenProvider tp = tc.getTokenProvider(root);
+        assertFalse(tp.doCreateToken(creds));
+
+        Map attMap = ImmutableMap.of(TOKEN_ATTRIBUTE, "");
+        when(cs.getAttributes(creds)).thenReturn(attMap);
+        assertTrue(tp.doCreateToken(creds));
+
+        assertFalse(tp.doCreateToken(new SimpleCredentials("id", new 
char[0])));
+
+        verify(cs, times(3)).getCredentialClasses();
+        verify(cs, times(2)).getAttributes(creds);
+    }
+
+    @Test
+    public void testBindMultipleCredentialsSupport() {
+        Credentials creds = mock(Credentials.class);
+        CredentialsSupport cs = mock(CredentialsSupport.class);
+        
when(cs.getCredentialClasses()).thenReturn(Collections.singleton(creds.getClass()));
+
+        tc.bindCredentialsSupport(cs);
+        tc.bindCredentialsSupport(new TestCredentialsSupport());
+
+        TokenProvider tp = tc.getTokenProvider(root);
+        assertFalse(tp.doCreateToken(creds));
+
+        Map attMap = ImmutableMap.of(TOKEN_ATTRIBUTE, "");
+        when(cs.getAttributes(creds)).thenReturn(attMap);
+        assertTrue(tp.doCreateToken(creds));
+
+        assertTrue(tp.doCreateToken(new TestCredentialsSupport.Creds()));
+
+        assertFalse(tp.doCreateToken(new SimpleCredentials("id", new 
char[0])));
+
+        verify(cs, times(4)).getCredentialClasses();
+        verify(cs, times(2)).getAttributes(creds);
+
+    }
 }
\ No newline at end of file

Modified: 
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenConfiguration.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenConfiguration.java?rev=1859279&r1=1859278&r2=1859279&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenConfiguration.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenConfiguration.java
 Wed May 15 08:49:40 2019
@@ -39,7 +39,7 @@ public class CompositeTokenConfiguration
 
     @NotNull
     @Override
-    public TokenProvider getTokenProvider(final Root root) {
+    public TokenProvider getTokenProvider(@NotNull final Root root) {
         List<TokenProvider> providers = Lists.transform(getConfigurations(), 
new Function<TokenConfiguration, TokenProvider>() {
             @Override
             public TokenProvider apply(TokenConfiguration tokenConfiguration) {

Modified: 
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenProvider.java?rev=1859279&r1=1859278&r2=1859279&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenProvider.java
 Wed May 15 08:49:40 2019
@@ -24,6 +24,7 @@ import javax.jcr.Credentials;
 import com.google.common.collect.ImmutableList;
 
 import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 
 /**
  * Aggregates a collection of {@link TokenProvider}s into a single
@@ -61,6 +62,7 @@ public final class CompositeTokenProvide
         return false;
     }
 
+    @Nullable
     @Override
     public TokenInfo createToken(@NotNull Credentials credentials) {
         for (TokenProvider tp : providers) {
@@ -72,6 +74,7 @@ public final class CompositeTokenProvide
         return null;
     }
 
+    @Nullable
     @Override
     public TokenInfo createToken(@NotNull String userId, @NotNull Map<String, 
?> attributes) {
         for (TokenProvider tp : providers) {
@@ -83,6 +86,7 @@ public final class CompositeTokenProvide
         return null;
     }
 
+    @Nullable
     @Override
     public TokenInfo getTokenInfo(@NotNull String token) {
         for (TokenProvider tp : providers) {
@@ -100,16 +104,19 @@ public final class CompositeTokenProvide
             return false;
         }
 
+        @Nullable
         @Override
         public TokenInfo createToken(@NotNull Credentials credentials) {
             return null;
         }
 
+        @Nullable
         @Override
         public TokenInfo createToken(@NotNull String userId, @NotNull 
Map<String, ?> attributes) {
             return null;
         }
 
+        @Nullable
         @Override
         public TokenInfo getTokenInfo(@NotNull String token) {
             return null;

Modified: 
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/TokenConfiguration.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/TokenConfiguration.java?rev=1859279&r1=1859278&r2=1859279&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/TokenConfiguration.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/TokenConfiguration.java
 Wed May 15 08:49:40 2019
@@ -34,5 +34,5 @@ public interface TokenConfiguration exte
      * @return A new instance of {@link 
org.apache.jackrabbit.oak.spi.security.authentication.token.TokenProvider}.
      */
     @NotNull
-    TokenProvider getTokenProvider(Root root);
+    TokenProvider getTokenProvider(@NotNull Root root);
 }

Modified: 
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/package-info.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/package-info.java?rev=1859279&r1=1859278&r2=1859279&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/package-info.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/token/package-info.java
 Wed May 15 08:49:40 2019
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-@Version("1.6.0")
+@Version("1.6.1")
 package org.apache.jackrabbit.oak.spi.security.authentication.token;
 
 import org.osgi.annotation.versioning.Version;

Modified: 
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenConfigurationTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenConfigurationTest.java?rev=1859279&r1=1859278&r2=1859279&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenConfigurationTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-security-spi/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/token/CompositeTokenConfigurationTest.java
 Wed May 15 08:49:40 2019
@@ -145,7 +145,7 @@ public class CompositeTokenConfiguration
 
         @NotNull
         @Override
-        public TokenProvider getTokenProvider(Root root) {
+        public TokenProvider getTokenProvider(@NotNull Root root) {
             return Mockito.mock(TokenProvider.class);
         }
     }


Reply via email to