This is an automated email from the ASF dual-hosted git repository.

buhhunyx pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cxf-fediz.git


The following commit(s) were added to refs/heads/master by this push:
     new a08ab0b  fediz-oidc: minor ClientRegistrationService improvements
a08ab0b is described below

commit a08ab0b35d569ba72188f1ea39d721f566d6255e
Author: Alexey Markevich <[email protected]>
AuthorDate: Tue Feb 25 13:41:45 2020 +0300

    fediz-oidc: minor ClientRegistrationService improvements
---
 services/oidc/pom.xml                              |  6 --
 .../service/oidc/clients/ClientCodeGrants.java     | 12 ++--
 .../oidc/clients/ClientRegistrationService.java    | 73 +++++++---------------
 .../fediz/service/oidc/clients/ClientTokens.java   | 16 ++---
 .../fediz/service/oidc/logout/LogoutService.java   | 16 ++---
 5 files changed, 45 insertions(+), 78 deletions(-)

diff --git a/services/oidc/pom.xml b/services/oidc/pom.xml
index b4bd2f8..771dddf 100644
--- a/services/oidc/pom.xml
+++ b/services/oidc/pom.xml
@@ -30,12 +30,6 @@
     <packaging>war</packaging>
     <dependencies>
         <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
             <groupId>javax.servlet</groupId>
             <artifactId>javax.servlet-api</artifactId>
             <version>${servlet.version}</version>
diff --git 
a/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/clients/ClientCodeGrants.java
 
b/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/clients/ClientCodeGrants.java
index 8520908..c7b16c9 100644
--- 
a/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/clients/ClientCodeGrants.java
+++ 
b/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/clients/ClientCodeGrants.java
@@ -18,16 +18,16 @@
  */
 package org.apache.cxf.fediz.service.oidc.clients;
 
-import java.util.LinkedList;
-import java.util.List;
+import java.util.Collection;
+import java.util.Collections;
 
 import org.apache.cxf.rs.security.oauth2.common.Client;
 import 
org.apache.cxf.rs.security.oauth2.grants.code.ServerAuthorizationCodeGrant;
 
 public class ClientCodeGrants {
     private Client client;
-    private List<ServerAuthorizationCodeGrant> codeGrants = new LinkedList<>();
-    public ClientCodeGrants(Client c, List<ServerAuthorizationCodeGrant> 
codeGrants) {
+    private Collection<ServerAuthorizationCodeGrant> codeGrants = 
Collections.emptyList();
+    public ClientCodeGrants(Client c, Collection<ServerAuthorizationCodeGrant> 
codeGrants) {
         this.client = c;
         this.codeGrants = codeGrants;
     }
@@ -37,10 +37,10 @@ public class ClientCodeGrants {
     public void setClient(Client client) {
         this.client = client;
     }
-    public List<ServerAuthorizationCodeGrant> getCodeGrants() {
+    public Collection<ServerAuthorizationCodeGrant> getCodeGrants() {
         return codeGrants;
     }
-    public void setCodeGrants(List<ServerAuthorizationCodeGrant> codeGrants) {
+    public void setCodeGrants(Collection<ServerAuthorizationCodeGrant> 
codeGrants) {
         this.codeGrants = codeGrants;
     }
 
diff --git 
a/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/clients/ClientRegistrationService.java
 
b/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/clients/ClientRegistrationService.java
index b9a5f77..8d063b1 100644
--- 
a/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/clients/ClientRegistrationService.java
+++ 
b/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/clients/ClientRegistrationService.java
@@ -22,15 +22,12 @@ package org.apache.cxf.fediz.service.oidc.clients;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -61,6 +58,7 @@ import org.apache.cxf.common.util.StringUtils;
 import org.apache.cxf.fediz.service.oidc.CSRFUtils;
 import org.apache.cxf.jaxrs.ext.MessageContext;
 import org.apache.cxf.jaxrs.utils.ExceptionUtils;
+import org.apache.cxf.rs.security.oauth2.common.AccessToken;
 import org.apache.cxf.rs.security.oauth2.common.Client;
 import org.apache.cxf.rs.security.oauth2.common.ServerAccessToken;
 import org.apache.cxf.rs.security.oauth2.common.UserSubject;
@@ -78,11 +76,11 @@ public class ClientRegistrationService {
 
     private static final Logger LOG = 
LogUtils.getL7dLogger(ClientRegistrationService.class);
 
-    private Map<String, Collection<Client>> registrations = new HashMap<>();
-    private Map<String, Set<String>> clientNames = new HashMap<>();
+    private final Map<String, Collection<Client>> registrations = new 
HashMap<>();
+    private final Map<String, Set<String>> clientNames = new HashMap<>();
     private OAuthDataProvider dataProvider;
     private ClientRegistrationProvider clientProvider;
-    private Map<String, String> homeRealms = new LinkedHashMap<>();
+    private Map<String, String> homeRealms = Collections.emptyMap();
     private boolean protectIdTokenWithClientSecret;
     private Map<String, String> clientScopes;
 
@@ -183,14 +181,12 @@ public class ClientRegistrationService {
     }
 
     protected ClientTokens doGetClientIssuedTokens(Client c) {
-        Comparator<ServerAccessToken> tokenComp = new TokenComparator();
+        Comparator<AccessToken> tokenComp = 
Comparator.comparingLong(AccessToken::getIssuedAt);
         UserSubject subject = new OidcUserSubject(getUserName());
-        List<ServerAccessToken> accessTokens =
-            new ArrayList<>(dataProvider.getAccessTokens(c, subject));
-        Collections.sort(accessTokens, tokenComp);
-        List<RefreshToken> refreshTokens =
-                new ArrayList<>(dataProvider.getRefreshTokens(c, subject));
-        Collections.sort(refreshTokens, tokenComp);
+        Collection<ServerAccessToken> accessTokens = new TreeSet<>(tokenComp);
+        accessTokens.addAll(dataProvider.getAccessTokens(c, subject));
+        Collection<RefreshToken> refreshTokens = new TreeSet<>(tokenComp);
+        refreshTokens.addAll(dataProvider.getRefreshTokens(c, subject));
         return new ClientTokens(c, accessTokens, refreshTokens);
     }
     @POST
@@ -241,9 +237,9 @@ public class ClientRegistrationService {
                 throwInvalidRegistrationException("The client id is invalid");
             }
             UserSubject subject = new OidcUserSubject(getUserName());
-            List<ServerAuthorizationCodeGrant> codeGrants = new ArrayList<>(
-               ((AuthorizationCodeDataProvider)dataProvider).getCodeGrants(c, 
subject));
-            Collections.sort(codeGrants, new CodeGrantComparator());
+            Collection<ServerAuthorizationCodeGrant> codeGrants = new 
TreeSet<>(
+                
Comparator.comparingLong(ServerAuthorizationCodeGrant::getIssuedAt));
+            
codeGrants.addAll(((AuthorizationCodeDataProvider)dataProvider).getCodeGrants(c,
 subject));
             return new ClientCodeGrants(c, codeGrants);
         }
         return null;
@@ -325,7 +321,7 @@ public class ClientRegistrationService {
             // Client Redirect URIs
             if (!StringUtils.isEmpty(redirectURI)) {
                 String[] allUris = redirectURI.trim().split(" ");
-                List<String> redirectUris = new LinkedList<>();
+                List<String> redirectUris = new ArrayList<>(allUris.length);
                 for (String uri : allUris) {
                     if (!StringUtils.isEmpty(uri)) {
                         if (!isValidURI(uri, false)) {
@@ -353,7 +349,7 @@ public class ClientRegistrationService {
             // Client Audience URIs
             if (!StringUtils.isEmpty(audience)) {
                 String[] auds = audience.trim().split(" ");
-                List<String> registeredAuds = new LinkedList<>();
+                List<String> registeredAuds = new ArrayList<>(auds.length);
                 for (String aud : auds) {
                     if (!StringUtils.isEmpty(aud)) {
                         if (!isValidURI(aud, true)) {
@@ -368,7 +364,7 @@ public class ClientRegistrationService {
 
             // Client Scopes
             if (clientScopes != null && !clientScopes.isEmpty()) {
-                newClient.setRegisteredScopes(new 
ArrayList<String>(clientScopes.keySet()));
+                newClient.setRegisteredScopes(new 
ArrayList<>(clientScopes.keySet()));
             }
             return Response.ok(registerNewClient(newClient)).build();
         } catch (InvalidRegistrationException ex) {
@@ -400,9 +396,9 @@ public class ClientRegistrationService {
         throw new InvalidRegistrationException(error);
     }
 
-    private boolean isValidURI(String uri, boolean requireHttps) {
+    private static boolean isValidURI(String uri, boolean requireHttps) {
 
-        UrlValidator urlValidator = null;
+        final UrlValidator urlValidator;
 
         if (requireHttps) {
             String[] schemes = {"https"};
@@ -479,7 +475,9 @@ public class ClientRegistrationService {
     protected Collection<Client> getClientRegistrations(String userName) {
         Collection<Client> userClientRegs = registrations.get(userName);
         if (userClientRegs == null) {
-            userClientRegs = new TreeSet<>(new ClientComparator());
+            // or the registration date comparison - this can be driven from UI
+            // example, Sort Clients By Name/Date/etc
+            userClientRegs = new 
TreeSet<>(Comparator.comparing(Client::getApplicationName));
             registrations.put(userName, userClientRegs);
         }
         return userClientRegs;
@@ -536,9 +534,8 @@ public class ClientRegistrationService {
         // Support additional top level domains
         if (additionalTLDs != null && !additionalTLDs.isEmpty()) {
             try {
-                String[] tldsToAddArray = additionalTLDs.toArray(new 
String[0]);
-                LOG.info("Adding the following additional Top Level Domains: " 
+ Arrays.toString(tldsToAddArray));
-                DomainValidator.updateTLDOverride(ArrayType.GENERIC_PLUS, 
tldsToAddArray);
+                LOG.info("Adding the following additional Top Level Domains: " 
+ additionalTLDs);
+                DomainValidator.updateTLDOverride(ArrayType.GENERIC_PLUS, 
additionalTLDs.toArray(new String[0]));
             } catch (IllegalStateException ex) {
                 //
             }
@@ -549,30 +546,4 @@ public class ClientRegistrationService {
         this.userRole = userRole;
     }
 
-    private static class ClientComparator implements Comparator<Client> {
-
-        @Override
-        public int compare(Client c1, Client c2) {
-            // or the registration date comparison - this can be driven from UI
-            // example, Sort Clients By Name/Date/etc
-            return c1.getApplicationName().compareTo(c2.getApplicationName());
-        }
-
-    }
-    private static class TokenComparator implements 
Comparator<ServerAccessToken> {
-
-        @Override
-        public int compare(ServerAccessToken t1, ServerAccessToken t2) {
-            return Long.compare(t1.getIssuedAt(), t2.getIssuedAt());
-        }
-
-    }
-    private static class CodeGrantComparator implements 
Comparator<ServerAuthorizationCodeGrant> {
-
-        @Override
-        public int compare(ServerAuthorizationCodeGrant g1, 
ServerAuthorizationCodeGrant g2) {
-            return Long.compare(g1.getIssuedAt(), g2.getIssuedAt());
-        }
-
-    }
 }
diff --git 
a/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/clients/ClientTokens.java
 
b/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/clients/ClientTokens.java
index 03f6a1b..90a0992 100644
--- 
a/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/clients/ClientTokens.java
+++ 
b/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/clients/ClientTokens.java
@@ -18,8 +18,8 @@
  */
 package org.apache.cxf.fediz.service.oidc.clients;
 
-import java.util.LinkedList;
-import java.util.List;
+import java.util.Collection;
+import java.util.Collections;
 
 import org.apache.cxf.rs.security.oauth2.common.Client;
 import org.apache.cxf.rs.security.oauth2.common.ServerAccessToken;
@@ -27,11 +27,11 @@ import 
org.apache.cxf.rs.security.oauth2.tokens.refresh.RefreshToken;
 
 public class ClientTokens {
     private Client client;
-    private List<ServerAccessToken> accessTokens = new LinkedList<>();
-    private List<RefreshToken> refreshTokens = new LinkedList<>();
+    private Collection<ServerAccessToken> accessTokens = 
Collections.emptyList();
+    private Collection<RefreshToken> refreshTokens = Collections.emptyList();
     public ClientTokens(Client c,
-                              List<ServerAccessToken> accessTokens,
-                              List<RefreshToken> refreshTokens) {
+        Collection<ServerAccessToken> accessTokens,
+        Collection<RefreshToken> refreshTokens) {
         this.client = c;
         this.accessTokens = accessTokens;
         this.refreshTokens = refreshTokens;
@@ -39,10 +39,10 @@ public class ClientTokens {
     public Client getClient() {
         return client;
     }
-    public List<ServerAccessToken> getAccessTokens() {
+    public Collection<ServerAccessToken> getAccessTokens() {
         return accessTokens;
     }
-    public List<RefreshToken> getRefreshTokens() {
+    public Collection<RefreshToken> getRefreshTokens() {
         return refreshTokens;
     }
 }
diff --git 
a/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/logout/LogoutService.java
 
b/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/logout/LogoutService.java
index 920843a..a3e7df0 100644
--- 
a/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/logout/LogoutService.java
+++ 
b/services/oidc/src/main/java/org/apache/cxf/fediz/service/oidc/logout/LogoutService.java
@@ -110,12 +110,13 @@ public class LogoutService extends JoseJwtConsumer {
         }
         return new IdToken(token.getClaims());
     }
-    private URI getClientLogoutUri(Client client, MultivaluedMap<String, 
String> params) {
+
+    private static URI getClientLogoutUri(final Client client, final 
MultivaluedMap<String, String> params) {
         String logoutUriProp = client.getProperties().get(CLIENT_LOGOUT_URIS);
         // logoutUriProp is guaranteed to be not null at this point
         String[] uris = logoutUriProp.split(" ");
-        String uriStr = null;
         String clientLogoutUriParam = params.getFirst(CLIENT_LOGOUT_URI);
+        final String uriStr;
         if (uris.length > 1) {
             if (clientLogoutUriParam == null
                     || !new 
HashSet<>(Arrays.asList(uris)).contains(clientLogoutUriParam)) {
@@ -154,11 +155,12 @@ public class LogoutService extends JoseJwtConsumer {
         }
         return c;
     }
-    private URI getAbsoluteIdpLogoutUri(Client client, MultivaluedMap<String, 
String> params) {
-        UriBuilder ub = mc.getUriInfo().getAbsolutePathBuilder();
-        ub.path(relativeIdpLogoutUri);
-        ub.queryParam("wreply", getClientLogoutUri(client, params));
-        ub.queryParam(OAuthConstants.CLIENT_ID, client.getClientId());
+
+    private URI getAbsoluteIdpLogoutUri(final Client client, final 
MultivaluedMap<String, String> params) {
+        UriBuilder ub = mc.getUriInfo().getAbsolutePathBuilder()
+            .path(relativeIdpLogoutUri)
+            .queryParam("wreply", getClientLogoutUri(client, params))
+            .queryParam(OAuthConstants.CLIENT_ID, client.getClientId());
         return ub.build().normalize();
     }
 

Reply via email to