[java-oidc-common] branch main updated: Null cleanup of profile-api.

Scott Cantor cantor.2 at osu.edu
Wed Nov 8 19:27:19 UTC 2023


This is an automated email from the git hooks/post-receive script.

scantor pushed a commit to branch main
in repository java-oidc-common.

View the commit online:
http://git.shibboleth.net/view/?p=java-oidc-common.git;a=commit;h=77bed0f635a66108e08f7c6448c94390b0f1155b

The following commit(s) were added to refs/heads/main by this push:
     new 77bed0f  Null cleanup of profile-api.
77bed0f is described below

commit 77bed0f635a66108e08f7c6448c94390b0f1155b
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Wed Nov 8 14:27:16 2023 -0500

    Null cleanup of profile-api.
---
 ...thenticationContextClassReferencePrincipal.java |  4 +--
 .../shibboleth/oidc/profile/audit/AuditFields.java |  2 +-
 .../profile/config/CredentialsListFactory.java     | 21 ++++++++--------
 .../AttributeConsentFlowEnabledPredicate.java      |  8 ++++--
 ...ClientInformationStringValueLookupFunction.java |  3 +--
 .../JWEDataEncryptionAlgorithmsLookupFunction.java | 28 ++++++++++-----------
 ...ransportEncryptionAlgorithmsLookupFunction.java | 23 +++++++++--------
 .../JWKCredentialsToPublishLookupStrategy.java     | 29 ++++++++++++++--------
 .../JWSSignatureAlgorithmsLookupFunction.java      | 23 +++++++++--------
 ...ProviderMetadataStringValuesLookupFunction.java | 19 +++++++-------
 ...nticationContextClassRequestLookupFunction.java | 17 ++++++-------
 ...ticationContextClassResponseLookupFunction.java | 20 +++++++--------
 ...edRegistrationMetadataPolicyLookupFunction.java | 13 +++++-----
 .../navigate/RevocationLifetimeLookupFunction.java | 19 +++++++++-----
 ...AuthenticationContextClassReferenceSupport.java | 19 +++++++-------
 ...ticationContextClassReferencePrincipalTest.java |  1 +
 ...iderMetadataStringValuesLookupFunctionTest.java | 10 +++++---
 ...thenticationContextClassLookupFunctionTest.java |  7 +++---
 ...tionContextClassResponseLookupFunctionTest.java | 24 +++++++++++-------
 19 files changed, 160 insertions(+), 130 deletions(-)

diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/authn/principal/AuthenticationContextClassReferencePrincipal.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/authn/principal/AuthenticationContextClassReferencePrincipal.java
index 1d41656..1594339 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/authn/principal/AuthenticationContextClassReferencePrincipal.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/authn/principal/AuthenticationContextClassReferencePrincipal.java
@@ -47,7 +47,6 @@ public final class AuthenticationContextClassReferencePrincipal implements Clone
     }
 
     /** {@inheritDoc} */
-    @Override
     @Nonnull
     @NotEmpty
     public String getName() {
@@ -86,8 +85,7 @@ public final class AuthenticationContextClassReferencePrincipal implements Clone
     }
 
     /** {@inheritDoc} */
-    @Override
-    public AuthenticationContextClassReferencePrincipal clone() throws CloneNotSupportedException {
+    @Nonnull public AuthenticationContextClassReferencePrincipal clone() throws CloneNotSupportedException {
         final AuthenticationContextClassReferencePrincipal copy =
                 (AuthenticationContextClassReferencePrincipal) super.clone();
         copy.authnContextClassReference = authnContextClassReference;
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/audit/AuditFields.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/audit/AuditFields.java
index db22d4c..7726f17 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/audit/AuditFields.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/audit/AuditFields.java
@@ -27,7 +27,7 @@ import net.shibboleth.shared.annotation.constraint.NotEmpty;
  * @since 2.2.0
  */
 public final class AuditFields {
-	
+
     /** OIDC client ID. */
     @Nonnull @NotEmpty public static final String CLIENT_ID = SAMLAuditFields.SERVICE_PROVIDER;
     
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/CredentialsListFactory.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/CredentialsListFactory.java
index b5d3cff..10258ca 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/CredentialsListFactory.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/CredentialsListFactory.java
@@ -14,7 +14,6 @@
 
 package net.shibboleth.oidc.profile.config;
 
-import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
@@ -23,6 +22,8 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
 import net.shibboleth.oidc.security.jose.SignatureSigningConfiguration;
+import net.shibboleth.shared.annotation.constraint.NullableElements;
+import net.shibboleth.shared.collection.CollectionSupport;
 
 import org.opensaml.security.credential.Credential;
 import org.springframework.beans.factory.config.AbstractFactoryBean;
@@ -38,31 +39,31 @@ import org.springframework.beans.factory.config.AbstractFactoryBean;
 public class CredentialsListFactory extends AbstractFactoryBean<List<Credential>> {
     
     /** The credentials which may contain {@literal null} elements. */
-    @Nonnull private List<Credential> credentials;
+    @Nonnull @NullableElements private List<Credential> credentials;
     
     /**
      * Constructor.
      *
      * @param creds the credentials, which can be {@literal null} and may contain {@literal null} elements.
      */
-    public CredentialsListFactory(@Nullable final List<Credential> creds){
+    public CredentialsListFactory(@Nullable @NullableElements final List<Credential> creds){
         if (creds == null) {
-            credentials = Collections.emptyList();
+            credentials = CollectionSupport.emptyList();
         } else {
             credentials = creds;
         }
     }
 
     /** {@inheritDoc} */
-    @Override
-    public Class<?> getObjectType() {
+    @Nonnull public Class<?> getObjectType() {
         return List.class;
     }
 
     /** {@inheritDoc} */
-    @Override
-    protected List<Credential> createInstance() throws Exception {
-        return credentials.stream().filter(Objects::nonNull).collect(Collectors.toList());
+    @Nonnull protected List<Credential> createInstance() throws Exception {
+        return credentials.stream()
+                .filter(Objects::nonNull)
+                .collect(CollectionSupport.nonnullCollector(Collectors.toList())).get();
     }
 
-}
+}
\ No newline at end of file
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/AttributeConsentFlowEnabledPredicate.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/AttributeConsentFlowEnabledPredicate.java
index 9025530..5b03a20 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/AttributeConsentFlowEnabledPredicate.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/logic/AttributeConsentFlowEnabledPredicate.java
@@ -14,6 +14,8 @@
 
 package net.shibboleth.oidc.profile.config.logic;
 
+import java.util.Collection;
+
 import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
@@ -30,6 +32,8 @@ public class AttributeConsentFlowEnabledPredicate extends AbstractRelyingPartyPr
     /** {@inheritDoc} */
     public boolean test(@Nullable final ProfileRequestContext input) {
         final PostAuthenticationFlowsLookupFunction postAuthnFlowsLookup = new PostAuthenticationFlowsLookupFunction();
-        return postAuthnFlowsLookup.apply(input).contains("attribute-release");
+        final Collection<String> flows = postAuthnFlowsLookup.apply(input); 
+        return flows != null && flows.contains("attribute-release");
     }
-}
+
+}
\ No newline at end of file
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ClientInformationStringValueLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ClientInformationStringValueLookupFunction.java
index 09ea0f8..bf53aee 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ClientInformationStringValueLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ClientInformationStringValueLookupFunction.java
@@ -20,12 +20,12 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import com.nimbusds.openid.connect.sdk.rp.OIDCClientInformation;
 
 import net.shibboleth.shared.annotation.ParameterName;
 import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
 
 /**
  * Fetches the value for the configured key as {@link String}. May be {@code null} if the value is not found or the 
@@ -49,7 +49,6 @@ public class ClientInformationStringValueLookupFunction implements Function<OIDC
     }
 
     /** {@inheritDoc} */
-    @Override
     @Nullable public String apply(@Nullable final OIDCClientInformation information) {
         if (information == null || information.getOIDCMetadata() == null) {
             log.trace("No client information/metadata available");
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWEDataEncryptionAlgorithmsLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWEDataEncryptionAlgorithmsLookupFunction.java
index 869c0cb..f674568 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWEDataEncryptionAlgorithmsLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWEDataEncryptionAlgorithmsLookupFunction.java
@@ -14,17 +14,17 @@
 
 package net.shibboleth.oidc.profile.config.navigate;
 
-import java.util.Collections;
 import java.util.List;
 
-import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 import org.opensaml.security.config.SecurityConfiguration;
 
+import net.shibboleth.profile.config.ProfileConfiguration;
 import net.shibboleth.profile.context.RelyingPartyContext;
 import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.oidc.profile.config.JSONSecurityConfiguration;
 import net.shibboleth.oidc.security.jose.EncryptionConfiguration;
 
@@ -42,21 +42,21 @@ import net.shibboleth.oidc.security.jose.EncryptionConfiguration;
 public class JWEDataEncryptionAlgorithmsLookupFunction extends AbstractRelyingPartyLookupFunction<List<String>> {
 
     /** {@inheritDoc} */
-    @Override
-    @Nonnull
-    public List<String> apply(@Nullable final ProfileRequestContext input) {
+    @Nullable public List<String> apply(@Nullable final ProfileRequestContext input) {
         final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
-        if (rpc != null && rpc.getProfileConfig() != null
-                && rpc.getProfileConfig().getSecurityConfiguration(input) != null) {
-            final SecurityConfiguration secConfig = rpc.getProfileConfig().getSecurityConfiguration(input);
-            if (secConfig instanceof JSONSecurityConfiguration) {
-                final EncryptionConfiguration encryptionConfig =
-                    ((JSONSecurityConfiguration) secConfig).getJwtEncryptionConfiguration();
-                if (encryptionConfig != null && encryptionConfig.getDataEncryptionAlgorithms() != null) {
-                    return encryptionConfig.getDataEncryptionAlgorithms();
+        if (rpc != null) {
+            final ProfileConfiguration pc = rpc.getProfileConfig();
+            if (pc != null) {
+                final SecurityConfiguration secConfig = pc.getSecurityConfiguration(input);
+                if (secConfig instanceof JSONSecurityConfiguration jsc) {
+                    final EncryptionConfiguration encryptionConfig = jsc.getJwtEncryptionConfiguration();
+                    if (encryptionConfig != null && encryptionConfig.getDataEncryptionAlgorithms() != null) {
+                        return encryptionConfig.getDataEncryptionAlgorithms();
+                    }
                 }
             }
         }
-        return Collections.emptyList();
+        return CollectionSupport.emptyList();
     }
+
 }
\ No newline at end of file
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWEKeyTransportEncryptionAlgorithmsLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWEKeyTransportEncryptionAlgorithmsLookupFunction.java
index 568b547..0483036 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWEKeyTransportEncryptionAlgorithmsLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWEKeyTransportEncryptionAlgorithmsLookupFunction.java
@@ -14,7 +14,6 @@
 
 package net.shibboleth.oidc.profile.config.navigate;
 
-import java.util.Collections;
 import java.util.List;
 
 import javax.annotation.Nonnull;
@@ -23,8 +22,10 @@ import javax.annotation.Nullable;
 import org.opensaml.profile.context.ProfileRequestContext;
 import org.opensaml.security.config.SecurityConfiguration;
 
+import net.shibboleth.profile.config.ProfileConfiguration;
 import net.shibboleth.profile.context.RelyingPartyContext;
 import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.oidc.profile.config.JSONSecurityConfiguration;
 import net.shibboleth.oidc.security.jose.EncryptionConfiguration;
 
@@ -47,17 +48,19 @@ public class JWEKeyTransportEncryptionAlgorithmsLookupFunction
     @Nonnull
     public List<String> apply(@Nullable final ProfileRequestContext input) {
         final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
-        if (rpc != null && rpc.getProfileConfig() != null
-                && rpc.getProfileConfig().getSecurityConfiguration(input) != null) {
-            final SecurityConfiguration secConfig = rpc.getProfileConfig().getSecurityConfiguration(input);
-            if (secConfig instanceof JSONSecurityConfiguration) {
-                final EncryptionConfiguration encryptionConfig =
-                    ((JSONSecurityConfiguration) secConfig).getJwtEncryptionConfiguration();
-                if (encryptionConfig != null && encryptionConfig.getKeyTransportEncryptionAlgorithms() != null) {
-                    return encryptionConfig.getKeyTransportEncryptionAlgorithms();
+        if (rpc != null) {
+            final ProfileConfiguration pc = rpc.getProfileConfig();
+            if (pc != null) {
+                final SecurityConfiguration secConfig = pc.getSecurityConfiguration(input);
+                if (secConfig instanceof JSONSecurityConfiguration jsc) {
+                    final EncryptionConfiguration encryptionConfig = jsc.getJwtEncryptionConfiguration();
+                    if (encryptionConfig != null && encryptionConfig.getKeyTransportEncryptionAlgorithms() != null) {
+                        return encryptionConfig.getKeyTransportEncryptionAlgorithms();
+                    }
                 }
             }
         }
-        return Collections.emptyList();
+        return CollectionSupport.emptyList();
     }
+    
 }
\ No newline at end of file
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWKCredentialsToPublishLookupStrategy.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWKCredentialsToPublishLookupStrategy.java
index 0d95677..11e036d 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWKCredentialsToPublishLookupStrategy.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWKCredentialsToPublishLookupStrategy.java
@@ -24,9 +24,12 @@ import javax.annotation.Nullable;
 
 import org.opensaml.security.credential.Credential;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import net.shibboleth.oidc.profile.config.JSONSecurityConfiguration;
+import net.shibboleth.oidc.security.credential.JOSEObjectCredentialResolver;
+import net.shibboleth.oidc.security.jose.DecryptionConfiguration;
+import net.shibboleth.oidc.security.jose.SignatureSigningConfiguration;
+import net.shibboleth.shared.primitive.LoggerFactory;
 import net.shibboleth.shared.resolver.CriteriaSet;
 import net.shibboleth.shared.resolver.ResolverException;
 
@@ -40,22 +43,28 @@ public class JWKCredentialsToPublishLookupStrategy implements Function<JSONSecur
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(JWKCredentialsToPublishLookupStrategy.class);
 
-    @Override
-    @Nonnull public List<Credential> apply(@Nullable final JSONSecurityConfiguration config) {
+    /** {@inheritDoc} */
+    @Nullable public List<Credential> apply(@Nullable final JSONSecurityConfiguration config) {
         
         if (config == null) {
             return Collections.emptyList();
         }
+        
         final List<Credential> credentials = new ArrayList<>();
         
-        if (config.getJwtSignatureSigningConfiguration() != null) {
-            credentials.addAll(config.getJwtSignatureSigningConfiguration().getSigningCredentials());
+        final SignatureSigningConfiguration signingConfig = config.getJwtSignatureSigningConfiguration();
+        if (signingConfig != null) {
+            credentials.addAll(signingConfig.getSigningCredentials());
         }
-        if (config.getJwtDecryptionConfiguration() != null) {
+        
+        final DecryptionConfiguration decryptConfig = config.getJwtDecryptionConfiguration();
+        if (decryptConfig != null) {
             try {
-                final Iterable<Credential> resolvedCreds = 
-                        config.getJwtDecryptionConfiguration().getKEKCredentialResolver().resolve(new CriteriaSet());
-                resolvedCreds.forEach(credentials::add);
+                final JOSEObjectCredentialResolver resolver = decryptConfig.getKEKCredentialResolver();
+                if (resolver != null) {
+                    final Iterable<Credential> resolvedCreds = resolver.resolve(new CriteriaSet());
+                    resolvedCreds.forEach(credentials::add);
+                }
             } catch (final ResolverException e) {
                log.debug("Unable to resolve decryption credentials", e);
             }
@@ -64,4 +73,4 @@ public class JWKCredentialsToPublishLookupStrategy implements Function<JSONSecur
         return credentials;
     }
 
-}
+}
\ No newline at end of file
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWSSignatureAlgorithmsLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWSSignatureAlgorithmsLookupFunction.java
index c6bc63a..f4822db 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWSSignatureAlgorithmsLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/JWSSignatureAlgorithmsLookupFunction.java
@@ -14,7 +14,6 @@
 
 package net.shibboleth.oidc.profile.config.navigate;
 
-import java.util.Collections;
 import java.util.List;
 
 import javax.annotation.Nonnull;
@@ -23,8 +22,10 @@ import javax.annotation.Nullable;
 import org.opensaml.profile.context.ProfileRequestContext;
 import org.opensaml.security.config.SecurityConfiguration;
 
+import net.shibboleth.profile.config.ProfileConfiguration;
 import net.shibboleth.profile.context.RelyingPartyContext;
 import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.oidc.profile.config.JSONSecurityConfiguration;
 import net.shibboleth.oidc.security.jose.SignatureSigningConfiguration;
 
@@ -46,17 +47,19 @@ public class JWSSignatureAlgorithmsLookupFunction extends AbstractRelyingPartyLo
     @Nonnull
     public List<String> apply(@Nullable final ProfileRequestContext input) {
         final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
-        if (rpc != null && rpc.getProfileConfig() != null
-                && rpc.getProfileConfig().getSecurityConfiguration(input) != null) {
-            final SecurityConfiguration secConfig = rpc.getProfileConfig().getSecurityConfiguration(input);
-            if (secConfig instanceof JSONSecurityConfiguration) {
-                final SignatureSigningConfiguration sigConfig =
-                        ((JSONSecurityConfiguration) secConfig).getJwtSignatureSigningConfiguration();
-                if (sigConfig != null && sigConfig.getSignatureAlgorithms() != null) {
-                    return sigConfig.getSignatureAlgorithms();
+        if (rpc != null) {
+            final ProfileConfiguration pc = rpc.getProfileConfig();
+            if (pc != null) {
+                final SecurityConfiguration secConfig = pc.getSecurityConfiguration(input);
+                if (secConfig instanceof JSONSecurityConfiguration jsc) {
+                    final SignatureSigningConfiguration sigConfig = jsc.getJwtSignatureSigningConfiguration();
+                    if (sigConfig != null && sigConfig.getSignatureAlgorithms() != null) {
+                        return sigConfig.getSignatureAlgorithms();
+                    }
                 }
             }
         }
-        return Collections.emptyList();
+        return CollectionSupport.emptyList();
     }
+
 }
\ No newline at end of file
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ProviderMetadataStringValuesLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ProviderMetadataStringValuesLookupFunction.java
index aeb7b8e..ee81408 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ProviderMetadataStringValuesLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ProviderMetadataStringValuesLookupFunction.java
@@ -14,7 +14,6 @@
 
 package net.shibboleth.oidc.profile.config.navigate;
 
-import java.util.Collections;
 import java.util.List;
 import java.util.function.Function;
 import java.util.stream.Collectors;
@@ -23,12 +22,13 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 
 import net.shibboleth.shared.annotation.ParameterName;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
 
 /**
  * Fetches the values for the configured key as {@link String}. May return an empty list 
@@ -52,27 +52,26 @@ public class ProviderMetadataStringValuesLookupFunction implements Function<OIDC
     }
 
     /** {@inheritDoc} */
-    @Override
-    @Nonnull public List<String> apply(@Nullable final OIDCProviderMetadata metadata) {
+    @Nullable public List<String> apply(@Nullable final OIDCProviderMetadata metadata) {
         if (metadata == null) {
             log.trace("No provider metadata available");
-            return Collections.emptyList();
+            return CollectionSupport.emptyList();
         }
 
         final Object value = metadata.toJSONObject().get(keyName);
         if (value == null) {
             log.trace("No metadata value found for the key {}", keyName);
-            return Collections.emptyList();
+            return CollectionSupport.emptyList();
         }
-        if (value instanceof String) {
-            return List.of(String.valueOf(value));
+        if (value instanceof String s) {
+            return CollectionSupport.singletonList(s);
         } else if (value instanceof List) {
             final List<?> valueList = (List<?>)value;
             return valueList.stream().map(Object::toString).collect(Collectors.toList());
         }
  
         log.trace("Metadata provided an unknown type for key '{}'", keyName);
-        return Collections.emptyList();
+        return CollectionSupport.emptyList();
     }
 
-}
+}
\ No newline at end of file
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ProxyAwareDefaultOIDCAuthenticationContextClassRequestLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ProxyAwareDefaultOIDCAuthenticationContextClassRequestLookupFunction.java
index 9bedcec..0045cee 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ProxyAwareDefaultOIDCAuthenticationContextClassRequestLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ProxyAwareDefaultOIDCAuthenticationContextClassRequestLookupFunction.java
@@ -16,7 +16,6 @@ package net.shibboleth.oidc.profile.config.navigate;
 import java.security.Principal;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -31,6 +30,7 @@ import net.shibboleth.idp.authn.context.AuthenticationContext;
 import net.shibboleth.idp.authn.context.RequestedPrincipalContext;
 import net.shibboleth.oidc.authn.principal.AuthenticationContextClassReferencePrincipal;
 import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.collection.CollectionSupport;
 
 /**
  * Implements a set of default logic for determining the custom principals to derive the
@@ -49,7 +49,7 @@ public class ProxyAwareDefaultOIDCAuthenticationContextClassRequestLookupFunctio
     
     /** Constructor. */
     public ProxyAwareDefaultOIDCAuthenticationContextClassRequestLookupFunction() {
-        principalMappings = Collections.emptyMap();
+        principalMappings = CollectionSupport.emptyMap();
     }
     
    /**
@@ -61,7 +61,7 @@ public class ProxyAwareDefaultOIDCAuthenticationContextClassRequestLookupFunctio
     */
    public void setMappings(@Nullable @NonnullElements final Map<Principal,Collection<Principal>> mappings) {
        if (mappings == null || mappings.isEmpty()) {
-           principalMappings = Collections.emptyMap();
+           principalMappings = CollectionSupport.emptyMap();
            return;
        }
        
@@ -72,10 +72,9 @@ public class ProxyAwareDefaultOIDCAuthenticationContextClassRequestLookupFunctio
     @Override
     public Collection<AuthenticationContextClassReferencePrincipal> apply(final ProfileRequestContext input) {
         
-        if (input != null && input.getParent() instanceof AuthenticationContext) {
-            
-            final RequestedPrincipalContext rpc = input.getParent().getSubcontext(RequestedPrincipalContext.class);
+        if (input != null && input.getParent() instanceof AuthenticationContext ac) {
             
+            final RequestedPrincipalContext rpc = ac.getSubcontext(RequestedPrincipalContext.class);
             if (rpc != null) {
                 
                 final List<AuthenticationContextClassReferencePrincipal> mappedAndPassedThroughPrincipals =
@@ -103,9 +102,7 @@ public class ProxyAwareDefaultOIDCAuthenticationContextClassRequestLookupFunctio
                 return mappedAndPassedThroughPrincipals;
             }
         }        
-        return Collections.emptyList();
+        return CollectionSupport.emptyList();
     }
     
-
-}
-
+}
\ No newline at end of file
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ProxyAwareDefaultOIDCAuthenticationContextClassResponseLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ProxyAwareDefaultOIDCAuthenticationContextClassResponseLookupFunction.java
index de089d3..32db5f4 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ProxyAwareDefaultOIDCAuthenticationContextClassResponseLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ProxyAwareDefaultOIDCAuthenticationContextClassResponseLookupFunction.java
@@ -16,7 +16,6 @@ package net.shibboleth.oidc.profile.config.navigate;
 import java.security.Principal;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -30,6 +29,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
 
 import net.shibboleth.shared.annotation.ParameterName;
 import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.logic.Constraint;
 
 /**
@@ -59,15 +59,15 @@ public class ProxyAwareDefaultOIDCAuthenticationContextClassResponseLookupFuncti
             final Map<String,Collection<Principal>> mappings) {
         
         if (mappings == null || mappings.isEmpty()) {
-            principalMappings = Collections.emptyMap();
+            principalMappings = CollectionSupport.emptyMap();
         } else {        
             principalMappings = new HashMap<>(mappings.size());
             mappings.forEach((k, v) -> principalMappings.put(k, List.copyOf(v)));
         }
     }
-    
-    @Override
-    public Collection<Principal> apply(final Collection<String> amrOrAcrs) {
+
+    /** {@inheritDoc} */
+    @Nullable public Collection<Principal> apply(final Collection<String> amrOrAcrs) {
         
         if (amrOrAcrs != null) {                
                 final List<Principal> principals = new ArrayList<>();                
@@ -81,7 +81,7 @@ public class ProxyAwareDefaultOIDCAuthenticationContextClassResponseLookupFuncti
                 }
                 return principals;            
         }        
-        return Collections.emptyList();
+        return CollectionSupport.emptyList();
     }   
     
     /** A simple lookup function that returns a singleton function.*/
@@ -102,11 +102,11 @@ public class ProxyAwareDefaultOIDCAuthenticationContextClassResponseLookupFuncti
             function = Constraint.isNotNull(wrappedFunction, "Lookup function can not be null");
         }
         
-        @Override
-        @Nonnull public Function<Collection<String>, Collection<Principal>> apply(final ProfileRequestContext prc) {
+        /** {@inheritDoc} */
+        @Nullable public Function<Collection<String>, Collection<Principal>> apply(
+                @Nullable final ProfileRequestContext prc) {
             return function;
         }
-        
     }
-}
 
+}
\ No newline at end of file
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ResolverBasedRegistrationMetadataPolicyLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ResolverBasedRegistrationMetadataPolicyLookupFunction.java
index 8bd26e8..b08bbc4 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ResolverBasedRegistrationMetadataPolicyLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/ResolverBasedRegistrationMetadataPolicyLookupFunction.java
@@ -22,11 +22,11 @@ import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import net.shibboleth.oidc.metadata.policy.MetadataPolicy;
 import net.shibboleth.oidc.metadata.policy.MetadataPolicyResolver;
 import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
+import net.shibboleth.shared.primitive.LoggerFactory;
 import net.shibboleth.shared.resolver.CriteriaSet;
 import net.shibboleth.shared.resolver.ResolverException;
 
@@ -39,8 +39,8 @@ public class ResolverBasedRegistrationMetadataPolicyLookupFunction
     extends AbstractRelyingPartyLookupFunction<Map<String,MetadataPolicy>> {
     
     /** Class logger. */
-    @Nonnull 
-    private final Logger log = LoggerFactory.getLogger(ResolverBasedRegistrationMetadataPolicyLookupFunction.class);
+    @Nonnull  private final Logger log =
+            LoggerFactory.getLogger(ResolverBasedRegistrationMetadataPolicyLookupFunction.class);
 
     /** The metadata policy resolver. */
     @Nullable private MetadataPolicyResolver metadataPolicyResolver;
@@ -67,15 +67,16 @@ public class ResolverBasedRegistrationMetadataPolicyLookupFunction
     }
     
     /** {@inheritDoc} */
-    @Override @Nullable public Map<String, MetadataPolicy> apply(@Nullable final ProfileRequestContext input) {
+    @Nullable public Map<String, MetadataPolicy> apply(@Nullable final ProfileRequestContext input) {
         if (metadataPolicyResolver == null) {
             log.debug("No metadata policy resolver configured, returning null");
             return null;
         }
         final CriteriaSet criteriaSet =
-                criteriaSetLookupStrategy == null ? null : criteriaSetLookupStrategy.apply(input);
+                criteriaSetLookupStrategy != null ? criteriaSetLookupStrategy.apply(input) : null;
         log.debug("Starting to resolve single metadata policy");
         try {
+            assert metadataPolicyResolver != null;
             return metadataPolicyResolver.resolveSingle(criteriaSet == null ? new CriteriaSet() : criteriaSet);
         } catch (final ResolverException e) {
             log.error("Resolver exception catched while resolving metadata policy", e);
@@ -83,4 +84,4 @@ public class ResolverBasedRegistrationMetadataPolicyLookupFunction
         return null;
     }
     
-}
+}
\ No newline at end of file
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RevocationLifetimeLookupFunction.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RevocationLifetimeLookupFunction.java
index e7e5a87..3d29916 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RevocationLifetimeLookupFunction.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/config/navigate/RevocationLifetimeLookupFunction.java
@@ -23,6 +23,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import net.shibboleth.profile.config.ProfileConfiguration;
 import net.shibboleth.profile.context.RelyingPartyContext;
 import net.shibboleth.profile.context.navigate.AbstractRelyingPartyLookupFunction;
+import net.shibboleth.profile.relyingparty.RelyingPartyConfiguration;
 import net.shibboleth.oidc.profile.oauth2.config.OAuth2TokenRevocationConfiguration;
 
 /**
@@ -50,17 +51,23 @@ public class RevocationLifetimeLookupFunction extends AbstractRelyingPartyLookup
     }
     
     /** {@inheritDoc} */
-    @Override
     @Nullable public Duration apply(@Nullable final ProfileRequestContext input) {
         final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
         if (rpc != null) {
-            final ProfileConfiguration pc = activeProfileOnly ? rpc.getProfileConfig() :
-                rpc.getConfiguration()
-                    .getProfileConfiguration(input, OAuth2TokenRevocationConfiguration.PROFILE_ID);
-            if (pc instanceof OAuth2TokenRevocationConfiguration) {
-                return ((OAuth2TokenRevocationConfiguration) pc).getRevocationLifetime(input);
+            final ProfileConfiguration pc;
+            if (activeProfileOnly) {
+                pc = rpc.getProfileConfig();
+            } else {
+                final RelyingPartyConfiguration rpConfig = rpc.getConfiguration();
+                pc = rpConfig != null
+                        ? rpConfig.getProfileConfiguration(input, OAuth2TokenRevocationConfiguration.PROFILE_ID) : null;
+            }
+            
+            if (pc instanceof OAuth2TokenRevocationConfiguration rev) {
+                return rev.getRevocationLifetime(input);
             }
         }
         return null;
     }
+    
 }
\ No newline at end of file
diff --git a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/encoding/AuthenticationContextClassReferenceSupport.java b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/encoding/AuthenticationContextClassReferenceSupport.java
index 84ef3c1..cf6bd5d 100644
--- a/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/encoding/AuthenticationContextClassReferenceSupport.java
+++ b/oidc-common-profile-api/src/main/java/net/shibboleth/oidc/profile/encoding/AuthenticationContextClassReferenceSupport.java
@@ -57,11 +57,11 @@ public final class AuthenticationContextClassReferenceSupport {
                     new ClaimsSetRequest.Entry("acr")
                     .withValues(acrs).withClaimRequirement(ClaimRequirement.ESSENTIAL);
             
-            if (authnRequest.getRequestedClaims() != null 
-                    && authnRequest.getRequestedClaims().getIDTokenClaimsRequest() != null) {
+            final OIDCClaimsRequest requestedClaims = authnRequest.getRequestedClaims();
+            if (requestedClaims != null 
+                    && requestedClaims.getIDTokenClaimsRequest() != null) {
                 // Requested claims may already exist, if so add.
-                final ClaimsSetRequest requestedIdTokenClaims = 
-                        authnRequest.getRequestedClaims().getIDTokenClaimsRequest(); 
+                final ClaimsSetRequest requestedIdTokenClaims = requestedClaims.getIDTokenClaimsRequest(); 
                 
                 if (requestedIdTokenClaims.get("acr")
                         != null) {
@@ -100,13 +100,11 @@ public final class AuthenticationContextClassReferenceSupport {
                                 new ClaimsSetRequest.Entry("acr").withValues(acrValues)
                             .withClaimRequirement(ClaimRequirement.ESSENTIAL));                    
                     
-                    authnRequest.setRequestedClaims(authnRequest.getRequestedClaims()
-                            .withIDTokenClaimsRequest(addedNewAcr));
+                    authnRequest.setRequestedClaims(requestedClaims.withIDTokenClaimsRequest(addedNewAcr));
                 } else {   
                     // Add ACRs to existing set of requested claims
                     final ClaimsSetRequest requestPlusAcr = requestedIdTokenClaims.add(acrEntry);
-                    authnRequest.setRequestedClaims(authnRequest.getRequestedClaims()
-                            .withIDTokenClaimsRequest(requestPlusAcr));
+                    authnRequest.setRequestedClaims(requestedClaims.withIDTokenClaimsRequest(requestPlusAcr));
                 }
             } else {
                 // Else create new
@@ -117,5 +115,6 @@ public final class AuthenticationContextClassReferenceSupport {
             }  
         }        
     }
- // Checkstyle: CyclomaticComplexity ON
-}
+// Checkstyle: CyclomaticComplexity ON
+
+}
\ No newline at end of file
diff --git a/oidc-common-profile-api/src/test/java/net/shibboleth/oidc/authn/principal/AuthenticationContextClassReferencePrincipalTest.java b/oidc-common-profile-api/src/test/java/net/shibboleth/oidc/authn/principal/AuthenticationContextClassReferencePrincipalTest.java
index 6b93f41..47dd6f8 100644
--- a/oidc-common-profile-api/src/test/java/net/shibboleth/oidc/authn/principal/AuthenticationContextClassReferencePrincipalTest.java
+++ b/oidc-common-profile-api/src/test/java/net/shibboleth/oidc/authn/principal/AuthenticationContextClassReferencePrincipalTest.java
@@ -18,6 +18,7 @@ import org.testng.Assert;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
+ at SuppressWarnings("javadoc")
 public class AuthenticationContextClassReferencePrincipalTest {
 
     private AuthenticationContextClassReferencePrincipal principal;
diff --git a/oidc-common-profile-api/src/test/java/net/shibboleth/oidc/profile/config/navigate/ProviderMetadataStringValuesLookupFunctionTest.java b/oidc-common-profile-api/src/test/java/net/shibboleth/oidc/profile/config/navigate/ProviderMetadataStringValuesLookupFunctionTest.java
index 0ffc413..62b1309 100644
--- a/oidc-common-profile-api/src/test/java/net/shibboleth/oidc/profile/config/navigate/ProviderMetadataStringValuesLookupFunctionTest.java
+++ b/oidc-common-profile-api/src/test/java/net/shibboleth/oidc/profile/config/navigate/ProviderMetadataStringValuesLookupFunctionTest.java
@@ -15,7 +15,6 @@
 package net.shibboleth.oidc.profile.config.navigate;
 
 import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertTrue;
 
 import java.net.URI;
@@ -32,6 +31,7 @@ import com.nimbusds.openid.connect.sdk.SubjectType;
 import com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata;
 
 /** Tests for {@link ProviderMetadataStringValuesLookupFunction}.*/
+ at SuppressWarnings("javadoc")
 public class ProviderMetadataStringValuesLookupFunctionTest {
     
     /** Function to test.*/
@@ -55,7 +55,7 @@ public class ProviderMetadataStringValuesLookupFunctionTest {
         
         final List<String> encs = function.apply(metadata);
         
-        assertNotNull(encs);
+        assert encs != null;
         assertEquals(encs.size(), 2);
     }
     
@@ -68,7 +68,7 @@ public class ProviderMetadataStringValuesLookupFunctionTest {
         
         final List<String> encs = function.apply(metadata);
         
-        assertNotNull(encs);
+        assert encs != null;
         assertEquals(encs.size(), 1);
     }
     
@@ -78,6 +78,7 @@ public class ProviderMetadataStringValuesLookupFunctionTest {
                 new ProviderMetadataStringValuesLookupFunction("request_object_encryption_enc_values_supported");       
         
         final List<String> encs = function.apply(metadata);        
+        assert encs != null;
         assertTrue(encs.isEmpty());
 
     }
@@ -91,7 +92,7 @@ public class ProviderMetadataStringValuesLookupFunctionTest {
         
         final List<String> encs = function.apply(metadata);
         
-        assertNotNull(encs);
+        assert encs != null;
         assertEquals(encs.size(), 1);
 
     }
@@ -103,6 +104,7 @@ public class ProviderMetadataStringValuesLookupFunctionTest {
         
         final List<String> encs = function.apply(null);
         
+        assert encs != null;
         assertTrue(encs.isEmpty());
     }
 
diff --git a/oidc-common-profile-api/src/test/java/net/shibboleth/oidc/profile/config/navigate/ProxyAwareDefaultOIDCAuthenticationContextClassLookupFunctionTest.java b/oidc-common-profile-api/src/test/java/net/shibboleth/oidc/profile/config/navigate/ProxyAwareDefaultOIDCAuthenticationContextClassLookupFunctionTest.java
index ed59122..f219fb5 100644
--- a/oidc-common-profile-api/src/test/java/net/shibboleth/oidc/profile/config/navigate/ProxyAwareDefaultOIDCAuthenticationContextClassLookupFunctionTest.java
+++ b/oidc-common-profile-api/src/test/java/net/shibboleth/oidc/profile/config/navigate/ProxyAwareDefaultOIDCAuthenticationContextClassLookupFunctionTest.java
@@ -32,6 +32,7 @@ import net.shibboleth.idp.saml.authn.principal.AuthnContextClassRefPrincipal;
 import net.shibboleth.oidc.authn.principal.AuthenticationContextClassReferencePrincipal;
 
 /** Tests for ProxyAwareDefaultOIDCAuthenticationContextClassLookupFunction.*/
+ at SuppressWarnings("javadoc")
 public class ProxyAwareDefaultOIDCAuthenticationContextClassLookupFunctionTest {
     
     private ProxyAwareDefaultOIDCAuthenticationContextClassRequestLookupFunction function;
@@ -48,9 +49,9 @@ public class ProxyAwareDefaultOIDCAuthenticationContextClassLookupFunctionTest {
     public void setup() {
         function = new ProxyAwareDefaultOIDCAuthenticationContextClassRequestLookupFunction();
         prc = new ProfileRequestContext();
-        ac = prc.getSubcontext(AuthenticationContext.class, true);
-        nestedPrc = ac.getSubcontext(ProfileRequestContext.class, true);
-        rpc = ac.getSubcontext(RequestedPrincipalContext.class, true);
+        ac = prc.ensureSubcontext(AuthenticationContext.class);
+        nestedPrc = ac.ensureSubcontext(ProfileRequestContext.class);
+        rpc = ac.ensureSubcontext(RequestedPrincipalContext.class);
     }
     
     @Test
diff --git a/oidc-common-profile-api/src/test/java/net/shibboleth/oidc/profile/config/navigate/ProxyAwareDefaultOIDCAuthenticationContextClassResponseLookupFunctionTest.java b/oidc-common-profile-api/src/test/java/net/shibboleth/oidc/profile/config/navigate/ProxyAwareDefaultOIDCAuthenticationContextClassResponseLookupFunctionTest.java
index 35a2038..cee567e 100644
--- a/oidc-common-profile-api/src/test/java/net/shibboleth/oidc/profile/config/navigate/ProxyAwareDefaultOIDCAuthenticationContextClassResponseLookupFunctionTest.java
+++ b/oidc-common-profile-api/src/test/java/net/shibboleth/oidc/profile/config/navigate/ProxyAwareDefaultOIDCAuthenticationContextClassResponseLookupFunctionTest.java
@@ -31,8 +31,10 @@ import org.testng.annotations.Test;
 import net.shibboleth.idp.authn.context.AuthenticationContext;
 import net.shibboleth.idp.authn.context.RequestedPrincipalContext;
 import net.shibboleth.idp.saml.authn.principal.AuthenticationMethodPrincipal;
+import net.shibboleth.shared.collection.CollectionSupport;
 
 /** Tests for ProxyAwareDefaultOIDCAuthenticationContextClassLookupFunction.*/
+ at SuppressWarnings("javadoc")
 public class ProxyAwareDefaultOIDCAuthenticationContextClassResponseLookupFunctionTest {
     
     private ProxyAwareDefaultOIDCAuthenticationContextClassResponseLookupFunction function;
@@ -48,9 +50,9 @@ public class ProxyAwareDefaultOIDCAuthenticationContextClassResponseLookupFuncti
     @BeforeMethod
     public void setup() {        
         prc = new ProfileRequestContext();
-        ac = prc.getSubcontext(AuthenticationContext.class, true);
-        nestedPrc = ac.getSubcontext(ProfileRequestContext.class, true);
-        rpc = ac.getSubcontext(RequestedPrincipalContext.class, true);
+        ac = prc.ensureSubcontext(AuthenticationContext.class);
+        nestedPrc = ac.ensureSubcontext(ProfileRequestContext.class);
+        rpc = ac.ensureSubcontext(RequestedPrincipalContext.class);
     }
     
     @Test
@@ -64,8 +66,8 @@ public class ProxyAwareDefaultOIDCAuthenticationContextClassResponseLookupFuncti
 
         function = new ProxyAwareDefaultOIDCAuthenticationContextClassResponseLookupFunction(mappings);
         
-        final Collection<Principal> mapped = function.apply(List.of("pwd"));
-        assertTrue(mapped.contains(
+        final Collection<Principal> mapped = function.apply(CollectionSupport.singletonList("pwd"));
+        assertTrue(mapped != null && mapped.contains(
                         new AuthenticationMethodPrincipal
                         ("urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport")));
         
@@ -83,7 +85,8 @@ public class ProxyAwareDefaultOIDCAuthenticationContextClassResponseLookupFuncti
         function = new ProxyAwareDefaultOIDCAuthenticationContextClassResponseLookupFunction(mappings);;
         
         // OTP should not be in the result
-        final Collection<Principal> mapped = function.apply(List.of("pwd","otp"));
+        final Collection<Principal> mapped = function.apply(CollectionSupport.listOf("pwd", "otp"));
+        assert mapped!= null;
         assertEquals(mapped.size(), 1);
         assertTrue(mapped.contains(new AuthenticationMethodPrincipal
                         ("urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport")));
@@ -94,7 +97,8 @@ public class ProxyAwareDefaultOIDCAuthenticationContextClassResponseLookupFuncti
     public void testSingleMappingSuccess_EmptyInput() {
         
         // OTP should not be in the result
-        final Collection<Principal> mapped = function.apply(Collections.emptyList());
+        final Collection<Principal> mapped = function.apply(CollectionSupport.emptyList());
+        assert mapped!= null;
         assertEquals(mapped.size(), 0);
     }
     
@@ -104,7 +108,8 @@ public class ProxyAwareDefaultOIDCAuthenticationContextClassResponseLookupFuncti
         function = new ProxyAwareDefaultOIDCAuthenticationContextClassResponseLookupFunction(null);
         
         // OTP should not be in the result
-        final Collection<Principal> mapped = function.apply(Collections.emptyList());
+        final Collection<Principal> mapped = function.apply(CollectionSupport.emptyList());
+        assert mapped!= null;
         assertEquals(mapped.size(), 0);
     }
     
@@ -116,7 +121,8 @@ public class ProxyAwareDefaultOIDCAuthenticationContextClassResponseLookupFuncti
         function = new ProxyAwareDefaultOIDCAuthenticationContextClassResponseLookupFunction(mappings);
         
         // OTP should not be in the result
-        final Collection<Principal> mapped = function.apply(Collections.emptyList());
+        final Collection<Principal> mapped = function.apply(CollectionSupport.emptyList());
+        assert mapped!= null;
         assertEquals(mapped.size(), 0);
     }
 

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list