[java-identity-provider] branch main updated: Replace Collections methods where possible.

Scott Cantor cantor.2 at osu.edu
Thu Apr 20 17:24:16 UTC 2023


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

scantor pushed a commit to branch main
in repository java-identity-provider.

View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=7c6704ccb18e725a3d0a00f56a7e13c4bf3574c7

The following commit(s) were added to refs/heads/main by this push:
     new 7c6704ccb Replace Collections methods where possible.
7c6704ccb is described below

commit 7c6704ccb18e725a3d0a00f56a7e13c4bf3574c7
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Thu Apr 20 13:24:13 2023 -0400

    Replace Collections methods where possible.
---
 .../saml/audit/impl/AssertionIDAuditExtractor.java | 31 +++++++++--------
 .../audit/impl/AssertionInstantAuditExtractor.java | 32 ++++++++++--------
 .../audit/impl/SessionIndexAuditExtractor.java     |  4 +--
 .../audit/impl/SubStatusCodeAuditExtractor.java    |  4 +--
 .../MapDrivenAuthnContextTranslationStrategy.java  |  3 +-
 .../profile/impl/ExtractSubjectFromRequest.java    | 10 +++---
 .../profile/impl/PopulateEncryptionParameters.java |  5 +--
 .../profile/impl/tests/FilterAttributesTest.java   | 39 +++++++++++-----------
 .../impl/PersistentSAML2NameIDGeneratorTest.java   | 28 ++++++++--------
 .../PopulateBindingAndEndpointContextsTest.java    |  9 +++--
 .../impl/AddAttributeStatementToAssertionTest.java | 24 ++++++-------
 ...ultAuthenticationMethodsLookupFunctionTest.java |  3 +-
 .../tests/ProxyRestrictionLookupFunctionTest.java  |  3 +-
 .../impl/AddAttributeStatementToAssertionTest.java | 22 ++++++------
 .../profile/impl/ProcessLogoutRequestTest.java     |  3 +-
 .../session/impl/LogoutStatusStrategyFunction.java |  7 ++--
 .../idp/session/impl/DetectIdentitySwitchTest.java | 11 +++---
 .../idp/session/impl/ProcessLogoutTest.java        |  8 ++---
 .../impl/UpdateSessionWithSPSessionTest.java       |  7 ++--
 19 files changed, 123 insertions(+), 130 deletions(-)

diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/audit/impl/AssertionIDAuditExtractor.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/audit/impl/AssertionIDAuditExtractor.java
index 14cbfff03..edbfaac5a 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/audit/impl/AssertionIDAuditExtractor.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/audit/impl/AssertionIDAuditExtractor.java
@@ -18,8 +18,6 @@
 package net.shibboleth.idp.saml.audit.impl;
 
 import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -30,6 +28,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import org.opensaml.saml.common.SAMLObject;
 import org.opensaml.saml.saml2.core.ArtifactResponse;
 
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.logic.Constraint;
 
 /** {@link Function} that returns the ID attribute from the assertions in a response. */
@@ -47,6 +46,7 @@ public class AssertionIDAuditExtractor implements Function<ProfileRequestContext
         responseLookupStrategy = Constraint.isNotNull(strategy, "Response lookup strategy cannot be null");
     }
 
+// Checkstyle: CyclomaticComplexity OFF
     /** {@inheritDoc} */
     @Nullable public Collection<String> apply(@Nullable final ProfileRequestContext input) {
         SAMLObject message = responseLookupStrategy.apply(input);
@@ -57,10 +57,9 @@ public class AssertionIDAuditExtractor implements Function<ProfileRequestContext
                 message = ((ArtifactResponse) message).getMessage();
             }
             
-            if (message instanceof org.opensaml.saml.saml2.core.Response) {
+            if (message instanceof org.opensaml.saml.saml2.core.Response resp) {
                 
-                final List<org.opensaml.saml.saml2.core.Assertion> assertions =
-                        ((org.opensaml.saml.saml2.core.Response) message).getAssertions();
+                final var assertions = resp.getAssertions();
                 if (!assertions.isEmpty()) {
                     return assertions.
                             stream().
@@ -68,10 +67,9 @@ public class AssertionIDAuditExtractor implements Function<ProfileRequestContext
                             collect(Collectors.toList());
                 }
                 
-            } else if (message instanceof org.opensaml.saml.saml1.core.Response) {
+            } else if (message instanceof org.opensaml.saml.saml1.core.Response resp) {
 
-                final List<org.opensaml.saml.saml1.core.Assertion> assertions =
-                        ((org.opensaml.saml.saml1.core.Response) message).getAssertions();
+                final var assertions = resp.getAssertions();
                 if (!assertions.isEmpty()) {
                     return assertions.
                             stream().
@@ -79,14 +77,21 @@ public class AssertionIDAuditExtractor implements Function<ProfileRequestContext
                             collect(Collectors.toList());
                 }
                 
-            } else if (message instanceof org.opensaml.saml.saml2.core.Assertion) {
-                return Collections.singletonList(((org.opensaml.saml.saml2.core.Assertion) message).getID());
-            } else if (message instanceof org.opensaml.saml.saml1.core.Assertion) {
-                return Collections.singletonList(((org.opensaml.saml.saml1.core.Assertion) message).getID());
+            } else if (message instanceof org.opensaml.saml.saml2.core.Assertion a) {
+                final String id = a.getID();
+                if (id != null) {
+                    return CollectionSupport.singletonList(id);
+                }
+            } else if (message instanceof org.opensaml.saml.saml1.core.Assertion a) {
+                final String id = a.getID();
+                if (id != null) {
+                    return CollectionSupport.singletonList(id);
+                }
             }
         }
         
-        return Collections.emptyList();
+        return CollectionSupport.emptyList();
     }
+// Checkstyle: CyclomaticComplexity ON
 
 }
\ No newline at end of file
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/audit/impl/AssertionInstantAuditExtractor.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/audit/impl/AssertionInstantAuditExtractor.java
index 838bd35fa..923ed0b5d 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/audit/impl/AssertionInstantAuditExtractor.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/audit/impl/AssertionInstantAuditExtractor.java
@@ -19,8 +19,6 @@ package net.shibboleth.idp.saml.audit.impl;
 
 import java.time.Instant;
 import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -31,6 +29,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import org.opensaml.saml.common.SAMLObject;
 import org.opensaml.saml.saml2.core.ArtifactResponse;
 
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.logic.Constraint;
 
 /** {@link Function} that returns the IssueInstant attribute from the assertions in a response. */
@@ -48,8 +47,8 @@ public class AssertionInstantAuditExtractor implements Function<ProfileRequestCo
         responseLookupStrategy = Constraint.isNotNull(strategy, "Response lookup strategy cannot be null");
     }
 
+// Checkstyle: CyclomaticComplexity OFF
     /** {@inheritDoc} */
-    @Override
     @Nullable public Collection<Instant> apply(@Nullable final ProfileRequestContext input) {
         SAMLObject message = responseLookupStrategy.apply(input);
         if (message != null) {
@@ -59,10 +58,9 @@ public class AssertionInstantAuditExtractor implements Function<ProfileRequestCo
                 message = ((ArtifactResponse) message).getMessage();
             }
             
-            if (message instanceof org.opensaml.saml.saml2.core.Response) {
+            if (message instanceof org.opensaml.saml.saml2.core.Response resp) {
                 
-                final List<org.opensaml.saml.saml2.core.Assertion> assertions =
-                        ((org.opensaml.saml.saml2.core.Response) message).getAssertions();
+                final var assertions = resp.getAssertions();
                 if (!assertions.isEmpty()) {
                     return assertions.
                             stream().
@@ -70,10 +68,9 @@ public class AssertionInstantAuditExtractor implements Function<ProfileRequestCo
                             collect(Collectors.toList());
                 }
                 
-            } else if (message instanceof org.opensaml.saml.saml1.core.Response) {
+            } else if (message instanceof org.opensaml.saml.saml1.core.Response resp) {
 
-                final List<org.opensaml.saml.saml1.core.Assertion> assertions =
-                        ((org.opensaml.saml.saml1.core.Response) message).getAssertions();
+                final var assertions = resp.getAssertions();
                 if (!assertions.isEmpty()) {
                     return assertions.
                             stream().
@@ -81,14 +78,21 @@ public class AssertionInstantAuditExtractor implements Function<ProfileRequestCo
                             collect(Collectors.toList());
                 }
                 
-            } else if (message instanceof org.opensaml.saml.saml2.core.Assertion) {
-                return Collections.singletonList(((org.opensaml.saml.saml2.core.Assertion) message).getIssueInstant());
-            } else if (message instanceof org.opensaml.saml.saml1.core.Assertion) {
-                return Collections.singletonList(((org.opensaml.saml.saml1.core.Assertion) message).getIssueInstant());
+            } else if (message instanceof org.opensaml.saml.saml2.core.Assertion a) {
+                final Instant ts = a.getIssueInstant();
+                if (ts != null) {
+                    return CollectionSupport.singletonList(ts);
+                }
+            } else if (message instanceof org.opensaml.saml.saml1.core.Assertion a) {
+                final Instant ts = a.getIssueInstant();
+                if (ts != null) {
+                    return CollectionSupport.singletonList(ts);
+                }
             }
         }
         
-        return Collections.emptyList();
+        return CollectionSupport.emptyList();
     }
+// Checkstyle: CyclomaticComplexity ON
 
 }
\ No newline at end of file
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/audit/impl/SessionIndexAuditExtractor.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/audit/impl/SessionIndexAuditExtractor.java
index cc5ada3ff..89e0688e2 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/audit/impl/SessionIndexAuditExtractor.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/audit/impl/SessionIndexAuditExtractor.java
@@ -19,7 +19,6 @@ package net.shibboleth.idp.saml.audit.impl;
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.function.Function;
 
 import javax.annotation.Nonnull;
@@ -34,6 +33,7 @@ import org.opensaml.saml.saml2.core.LogoutRequest;
 import org.opensaml.saml.saml2.core.Response;
 import org.opensaml.saml.saml2.core.SessionIndex;
 
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.logic.Constraint;
 
 /** {@link Function} that returns SessionIndex values from assertions in a response or a logout request. */
@@ -84,7 +84,7 @@ public class SessionIndexAuditExtractor implements Function<ProfileRequestContex
             return indexes;
         }
         
-        return Collections.emptyList();
+        return CollectionSupport.emptyList();
     }
 // Checkstyle: CyclomaticComplexity ON
     
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/audit/impl/SubStatusCodeAuditExtractor.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/audit/impl/SubStatusCodeAuditExtractor.java
index 3594439ac..6d188b79a 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/audit/impl/SubStatusCodeAuditExtractor.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/audit/impl/SubStatusCodeAuditExtractor.java
@@ -19,7 +19,6 @@ package net.shibboleth.idp.saml.audit.impl;
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.function.Function;
 
 import javax.annotation.Nonnull;
@@ -31,6 +30,7 @@ import org.opensaml.saml.common.SAMLObject;
 import org.opensaml.saml.saml1.core.Response;
 import org.opensaml.saml.saml2.core.StatusResponseType;
 
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.logic.Constraint;
 
 /** {@link Function} that returns the lower-level StatusCode(s) from a response. */
@@ -84,7 +84,7 @@ public class SubStatusCodeAuditExtractor implements Function<ProfileRequestConte
             }
         }
         
-        return Collections.emptyList();
+        return CollectionSupport.emptyList();
     }
 // Checkstyle: CyclomaticComplexity ON
     
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/authn/principal/impl/MapDrivenAuthnContextTranslationStrategy.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/authn/principal/impl/MapDrivenAuthnContextTranslationStrategy.java
index e7f9f04d3..fc63b9228 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/authn/principal/impl/MapDrivenAuthnContextTranslationStrategy.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/authn/principal/impl/MapDrivenAuthnContextTranslationStrategy.java
@@ -19,7 +19,6 @@ package net.shibboleth.idp.saml.authn.principal.impl;
 
 import java.security.Principal;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -105,7 +104,7 @@ public class MapDrivenAuthnContextTranslationStrategy implements Function<AuthnC
             }
 
             log.trace("Passing unmapped value '{}' through", principal.getName());
-            return Collections.singletonList(principal);
+            return CollectionSupport.singletonList(principal);
         }
         
         log.trace("Input AuthnContext was null, returning nothing");
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/profile/impl/ExtractSubjectFromRequest.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/profile/impl/ExtractSubjectFromRequest.java
index b471a1f47..d7224a2d9 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/profile/impl/ExtractSubjectFromRequest.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/profile/impl/ExtractSubjectFromRequest.java
@@ -17,7 +17,6 @@
 
 package net.shibboleth.idp.saml.profile.impl;
 
-import java.util.Collections;
 import java.util.function.Function;
 import java.util.function.Predicate;
 
@@ -44,6 +43,7 @@ import net.shibboleth.profile.context.navigate.RelyingPartyIdLookupFunction;
 import net.shibboleth.profile.context.navigate.IssuerLookupFunction;
 import net.shibboleth.shared.annotation.constraint.NonnullBeforeExec;
 import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.ComponentInitializationException;
 
 /**
@@ -161,14 +161,14 @@ public class ExtractSubjectFromRequest extends AbstractProfileAction {
             log.debug("{} Creating Subject for canonicalization around NameIdentifier {}", getLogPrefix(),
                     ((NameIdentifier) identifier).getValue());
             subject = new Subject(false,
-                    Collections.singleton(new NameIdentifierPrincipal((NameIdentifier) identifier)),
-                    Collections.emptySet(), Collections.emptySet());
+                    CollectionSupport.singleton(new NameIdentifierPrincipal((NameIdentifier) identifier)),
+                    CollectionSupport.emptySet(), CollectionSupport.emptySet());
         } else if (identifier instanceof NameID) {
             log.debug("{} Creating Subject for canonicalization around NameID {}", getLogPrefix(),
                     ((NameID) identifier).getValue());
             subject = new Subject(false,
-                    Collections.singleton(new NameIDPrincipal((NameID) identifier)),
-                    Collections.emptySet(), Collections.emptySet());
+                    CollectionSupport.singleton(new NameIDPrincipal((NameID) identifier)),
+                    CollectionSupport.emptySet(), CollectionSupport.emptySet());
         } else {
             subject = null;
         }
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/PopulateEncryptionParameters.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/PopulateEncryptionParameters.java
index a2f32aed3..597d3fa75 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/PopulateEncryptionParameters.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/PopulateEncryptionParameters.java
@@ -17,7 +17,6 @@
 
 package net.shibboleth.idp.saml.saml2.profile.impl;
 
-import java.util.Collections;
 import java.util.List;
 import java.util.function.Function;
 
@@ -59,6 +58,7 @@ import net.shibboleth.saml.saml2.profile.config.SAML2ProfileConfiguration;
 import net.shibboleth.saml.saml2.profile.config.SingleLogoutProfileConfiguration;
 import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
 import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.logic.Constraint;
 import net.shibboleth.shared.primitive.LoggerFactory;
@@ -229,7 +229,8 @@ public class PopulateEncryptionParameters extends AbstractProfileAction {
         } else if (configurationLookupStrategy == null) {
             configurationLookupStrategy = new Function<>() {
                 public List<EncryptionConfiguration> apply(final ProfileRequestContext input) {
-                    return Collections.singletonList(SecurityConfigurationSupport.getGlobalEncryptionConfiguration());
+                    return CollectionSupport.singletonList(
+                            SecurityConfigurationSupport.ensureGlobalEncryptionConfiguration());
                 }
             };
         }
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/profile/impl/tests/FilterAttributesTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/profile/impl/tests/FilterAttributesTest.java
index a711dcc2e..8935f416c 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/profile/impl/tests/FilterAttributesTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/profile/impl/tests/FilterAttributesTest.java
@@ -17,8 +17,6 @@
 
 package net.shibboleth.idp.profile.impl.tests;
 
-import java.util.Arrays;
-import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
@@ -41,6 +39,7 @@ import net.shibboleth.idp.profile.impl.FilterAttributes;
 import net.shibboleth.idp.profile.testing.ActionTestingSupport;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
 import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.testing.MockReloadableService;
 
@@ -76,7 +75,7 @@ public class FilterAttributesTest {
     @Test public void testNoAttributeContext() throws Exception {
         prc.ensureSubcontext(SubjectContext.class);
 
-        final AttributeFilterImpl engine = new AttributeFilterImpl("test", Collections.emptyList());
+        final AttributeFilterImpl engine = new AttributeFilterImpl("test", CollectionSupport.emptyList());
         engine.initialize();
 
         final FilterAttributes action = new FilterAttributes(new MockReloadableService<>(engine));
@@ -98,7 +97,7 @@ public class FilterAttributesTest {
         assert rpCtx!= null;
         rpCtx.ensureSubcontext(AttributeContext.class);
 
-        final AttributeFilterImpl engine = new AttributeFilterImpl("test", Collections.emptyList());
+        final AttributeFilterImpl engine = new AttributeFilterImpl("test", CollectionSupport.emptyList());
         engine.initialize();
         
         final FilterAttributes action = new FilterAttributes(new MockReloadableService<>(engine));
@@ -115,12 +114,12 @@ public class FilterAttributesTest {
      */
     @Test public void testFilterAttributesAutoCreateFilterContext() throws Exception {
         final IdPAttribute attribute1 = new IdPAttribute("attribute1");
-        attribute1.setValues(Arrays.asList(new StringAttributeValue("one"), new StringAttributeValue("two")));
+        attribute1.setValues(CollectionSupport.listOf(new StringAttributeValue("one"), new StringAttributeValue("two")));
 
         final IdPAttribute attribute2 = new IdPAttribute("attribute2");
-        attribute2.setValues(Arrays.asList(new StringAttributeValue("a"), new StringAttributeValue("b")));
+        attribute2.setValues(CollectionSupport.listOf(new StringAttributeValue("a"), new StringAttributeValue("b")));
 
-        final List<IdPAttribute> attributes = Arrays.asList(attribute1, attribute2);
+        final List<IdPAttribute> attributes = CollectionSupport.listOf(attribute1, attribute2);
 
         final MockMatcher attribute1Matcher = new MockMatcher();
         attribute1Matcher.setMatchingAttribute("attribute1");
@@ -134,9 +133,9 @@ public class FilterAttributesTest {
 
         final AttributeFilterPolicy policy =
                 new AttributeFilterPolicy("attribute1Policy", PolicyRequirementRule.MATCHES_ALL,
-                        Collections.singletonList(attribute1Policy));
+                        CollectionSupport.singletonList(attribute1Policy));
 
-        final AttributeFilterImpl engine = new AttributeFilterImpl("engine", Collections.singletonList(policy));
+        final AttributeFilterImpl engine = new AttributeFilterImpl("engine", CollectionSupport.singletonList(policy));
         policy.initialize();
         attribute1Policy.initialize();
         attribute1Matcher.initialize();
@@ -179,12 +178,12 @@ public class FilterAttributesTest {
      */
     @Test public void testFilterAttributesExistingFilterContext() throws Exception {
         final IdPAttribute attribute1 = new IdPAttribute("attribute1");
-        attribute1.setValues(Arrays.asList(new StringAttributeValue("one"), new StringAttributeValue("two")));
+        attribute1.setValues(CollectionSupport.listOf(new StringAttributeValue("one"), new StringAttributeValue("two")));
 
         final IdPAttribute attribute2 = new IdPAttribute("attribute2");
-        attribute2.setValues(Arrays.asList(new StringAttributeValue("a"), new StringAttributeValue("b")));
+        attribute2.setValues(CollectionSupport.listOf(new StringAttributeValue("a"), new StringAttributeValue("b")));
 
-        final List<IdPAttribute> attributes = Arrays.asList(attribute1, attribute2);
+        final List<IdPAttribute> attributes = CollectionSupport.listOf(attribute1, attribute2);
 
         final MockMatcher attribute1Matcher = new MockMatcher();
         attribute1Matcher.setMatchingAttribute("attribute1");
@@ -198,9 +197,9 @@ public class FilterAttributesTest {
 
         final AttributeFilterPolicy policy =
                 new AttributeFilterPolicy("attribute1Policy", PolicyRequirementRule.MATCHES_ALL,
-                        Collections.singletonList(attribute1Policy));
+                        CollectionSupport.singletonList(attribute1Policy));
 
-        final AttributeFilterImpl engine = new AttributeFilterImpl("engine", Collections.singletonList(policy));
+        final AttributeFilterImpl engine = new AttributeFilterImpl("engine", CollectionSupport.singletonList(policy));
         policy.initialize();
         attribute1Policy.initialize();
         attribute1Matcher.initialize();
@@ -245,9 +244,9 @@ public class FilterAttributesTest {
      */
     @Test public void testUnableToFilterAttributes() throws Exception {
         final IdPAttribute attribute1 = new MockUncloneableAttribute("attribute1");
-        attribute1.setValues(Arrays.asList(new StringAttributeValue("one"), new StringAttributeValue("two")));
+        attribute1.setValues(CollectionSupport.listOf(new StringAttributeValue("one"), new StringAttributeValue("two")));
 
-        final List<IdPAttribute> attributes = Arrays.asList(attribute1);
+        final List<IdPAttribute> attributes = CollectionSupport.singletonList(attribute1);
 
         final MockMatcher attribute1Matcher = new MockMatcher();
         attribute1Matcher.setMatchingAttribute("attribute1");
@@ -261,9 +260,9 @@ public class FilterAttributesTest {
 
         final AttributeFilterPolicy policy =
                 new AttributeFilterPolicy("attribute1Policy", PolicyRequirementRule.MATCHES_ALL,
-                        Collections.singletonList(attribute1Policy));
+                        CollectionSupport.singletonList(attribute1Policy));
 
-        final AttributeFilterImpl engine = new AttributeFilterImpl("engine", Collections.singletonList(policy));
+        final AttributeFilterImpl engine = new AttributeFilterImpl("engine", CollectionSupport.singletonList(policy));
         policy.initialize();
         attribute1Policy.initialize();
         attribute1Matcher.initialize();
@@ -295,12 +294,12 @@ public class FilterAttributesTest {
      */
     @Test public void testUnableToFindFilter() throws Exception {
         final IdPAttribute attribute1 = new MockUncloneableAttribute("attribute1");
-        attribute1.setValues(Arrays.asList(new StringAttributeValue("one"), new StringAttributeValue("two")));
+        attribute1.setValues(CollectionSupport.listOf(new StringAttributeValue("one"), new StringAttributeValue("two")));
 
         prc.ensureSubcontext(SubjectContext.class);
 
         final AttributeContext attributeCtx = new AttributeContext();
-        final List<IdPAttribute> attributes = Collections.singletonList(attribute1);
+        final List<IdPAttribute> attributes = CollectionSupport.singletonList(attribute1);
         attributeCtx.setIdPAttributes(attributes);
         final RelyingPartyContext rpCtx = prc.getSubcontext(RelyingPartyContext.class);
         assert rpCtx!= null;
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/PersistentSAML2NameIDGeneratorTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/PersistentSAML2NameIDGeneratorTest.java
index edab9bc79..b874ec763 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/PersistentSAML2NameIDGeneratorTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/PersistentSAML2NameIDGeneratorTest.java
@@ -17,8 +17,6 @@
 
 package net.shibboleth.idp.saml.nameid.impl;
 
-import java.util.Collections;
-
 import javax.sql.DataSource;
 
 import org.opensaml.core.testing.OpenSAMLInitBaseTestCase;
@@ -102,7 +100,7 @@ public class PersistentSAML2NameIDGeneratorTest extends OpenSAMLInitBaseTestCase
     @Test
     public void testNoResponderId() throws Exception {
         generator.setPersistentIdStore(new ComputedPairwiseIdStore());
-        generator.setAttributeSourceIds(Collections.singletonList("SOURCE"));
+        generator.setAttributeSourceIds(CollectionSupport.singletonList("SOURCE"));
         generator.initialize();
         
         Assert.assertNull(generator.generate(new ProfileRequestContext(), NameID.PERSISTENT));
@@ -111,7 +109,7 @@ public class PersistentSAML2NameIDGeneratorTest extends OpenSAMLInitBaseTestCase
     @Test
     public void testNoRequesterId() throws Exception {
         generator.setPersistentIdStore(new ComputedPairwiseIdStore());
-        generator.setAttributeSourceIds(Collections.singletonList("SOURCE"));
+        generator.setAttributeSourceIds(CollectionSupport.singletonList("SOURCE"));
         generator.initialize();
         final RelyingPartyContext rpc = prc.getSubcontext(RelyingPartyContext.class);
         assert rpc!=null;
@@ -123,7 +121,7 @@ public class PersistentSAML2NameIDGeneratorTest extends OpenSAMLInitBaseTestCase
     @Test
     public void testNoSubject() throws Exception {
         generator.setPersistentIdStore(new ComputedPairwiseIdStore());
-        generator.setAttributeSourceIds(Collections.singletonList("SOURCE"));
+        generator.setAttributeSourceIds(CollectionSupport.singletonList("SOURCE"));
         generator.initialize();
         
         Assert.assertNull(generator.generate(prc, NameID.PERSISTENT));
@@ -132,7 +130,7 @@ public class PersistentSAML2NameIDGeneratorTest extends OpenSAMLInitBaseTestCase
     @Test
     public void testNoSource() throws Exception {
         generator.setPersistentIdStore(new ComputedPairwiseIdStore());
-        generator.setAttributeSourceIds(Collections.singletonList("SOURCE"));
+        generator.setAttributeSourceIds(CollectionSupport.singletonList("SOURCE"));
         generator.initialize();
         
         prc.ensureSubcontext(SubjectContext.class).setPrincipalName("foo");
@@ -141,7 +139,7 @@ public class PersistentSAML2NameIDGeneratorTest extends OpenSAMLInitBaseTestCase
         final RelyingPartyContext rpc = prc.getSubcontext(RelyingPartyContext.class);
         assert rpc!=null;
         rpc.ensureSubcontext(AttributeContext.class).setUnfilteredIdPAttributes(
-                Collections.singleton(new IdPAttribute("SOURCE")));
+                CollectionSupport.singleton(new IdPAttribute("SOURCE")));
         Assert.assertNull(generator.generate(prc, NameID.PERSISTENT));
     }
     
@@ -152,17 +150,17 @@ public class PersistentSAML2NameIDGeneratorTest extends OpenSAMLInitBaseTestCase
         strategy.initialize();
 
         generator.setPersistentIdStore(strategy);
-        generator.setAttributeSourceIds(Collections.singletonList("SOURCE"));
+        generator.setAttributeSourceIds(CollectionSupport.singletonList("SOURCE"));
         generator.initialize();
         
         prc.ensureSubcontext(SubjectContext.class).setPrincipalName("foo");
         Assert.assertNull(generator.generate(prc, NameID.PERSISTENT));
         
         final IdPAttribute source = new IdPAttribute("SOURCE");
-        source.setValues(Collections.singletonList(new StringAttributeValue(TestSources.COMMON_ATTRIBUTE_VALUE_STRING)));
+        source.setValues(CollectionSupport.singletonList(new StringAttributeValue(TestSources.COMMON_ATTRIBUTE_VALUE_STRING)));
         final RelyingPartyContext rpc = prc.getSubcontext(RelyingPartyContext.class);
         assert rpc!=null;
-        rpc.ensureSubcontext(AttributeContext.class).setUnfilteredIdPAttributes(Collections.singleton(source));
+        rpc.ensureSubcontext(AttributeContext.class).setUnfilteredIdPAttributes(CollectionSupport.singleton(source));
         final NameID id = generator.generate(prc, NameID.PERSISTENT);
         assert id!=null;
         Assert.assertEquals(id.getValue(), RESULT);
@@ -207,18 +205,18 @@ public class PersistentSAML2NameIDGeneratorTest extends OpenSAMLInitBaseTestCase
     }
 
     private void testStoredIdLogic() throws Exception {
-        generator.setAttributeSourceIds(Collections.singletonList("SOURCE"));
+        generator.setAttributeSourceIds(CollectionSupport.singletonList("SOURCE"));
         generator.initialize();
         
         prc.ensureSubcontext(SubjectContext.class).setPrincipalName("foo");
         Assert.assertNull(generator.generate(prc, NameID.PERSISTENT));
         
         final IdPAttribute source = new IdPAttribute("SOURCE");
-        source.setValues(Collections.singletonList(new StringAttributeValue(TestSources.COMMON_ATTRIBUTE_VALUE_STRING)));
+        source.setValues(CollectionSupport.singletonList(new StringAttributeValue(TestSources.COMMON_ATTRIBUTE_VALUE_STRING)));
         final RelyingPartyContext rpc = prc.getSubcontext(RelyingPartyContext.class);
         assert rpc!=null;
         rpc.ensureSubcontext(AttributeContext.class).setUnfilteredIdPAttributes(
-                Collections.singleton(source));
+                CollectionSupport.singleton(source));
         NameID id = generator.generate(prc, NameID.PERSISTENT);
         assert id!=null;
         Assert.assertNotNull(id.getValue());
@@ -281,11 +279,11 @@ public class PersistentSAML2NameIDGeneratorTest extends OpenSAMLInitBaseTestCase
         Assert.assertNull(generator.generate(prc, NameID.PERSISTENT));
         
         final IdPAttribute source = new IdPAttribute("SOURCE");
-        source.setValues(Collections.singletonList(new StringAttributeValue(TestSources.COMMON_ATTRIBUTE_VALUE_STRING)));
+        source.setValues(CollectionSupport.singletonList(new StringAttributeValue(TestSources.COMMON_ATTRIBUTE_VALUE_STRING)));
         final RelyingPartyContext rpc = prc.getSubcontext(RelyingPartyContext.class);
         assert rpc!=null;
         rpc.ensureSubcontext(AttributeContext.class).setUnfilteredIdPAttributes(
-                Collections.singleton(source));
+                CollectionSupport.singleton(source));
         NameID id = generator.generate(prc, NameID.PERSISTENT);
         assert id!=null;
         Assert.assertEquals(id.getValue(), RESULT);
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/profile/impl/PopulateBindingAndEndpointContextsTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/profile/impl/PopulateBindingAndEndpointContextsTest.java
index 39e5699b8..d741b631c 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/profile/impl/PopulateBindingAndEndpointContextsTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/profile/impl/PopulateBindingAndEndpointContextsTest.java
@@ -23,7 +23,6 @@ import java.io.FileNotFoundException;
 import java.net.URISyntaxException;
 import java.net.URL;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 
 import javax.annotation.Nonnull;
@@ -58,9 +57,9 @@ import net.shibboleth.idp.profile.context.navigate.WebflowRequestContextProfileR
 import net.shibboleth.idp.profile.testing.ActionTestingSupport;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
 import net.shibboleth.idp.saml.saml2.profile.config.impl.BrowserSSOProfileConfiguration;
-import net.shibboleth.profile.config.ProfileConfiguration;
 import net.shibboleth.profile.context.RelyingPartyContext;
 import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.logic.FunctionSupport;
 import net.shibboleth.shared.logic.PredicateSupport;
@@ -92,7 +91,7 @@ public class PopulateBindingAndEndpointContextsTest extends XMLObjectBaseTestCas
         profileConfig = new BrowserSSOProfileConfiguration();
         
         rc = new RequestContextBuilder().setInboundMessage(request).setRelyingPartyProfileConfigurations(
-                Collections.<ProfileConfiguration>singletonList(profileConfig)).buildRequestContext();
+                CollectionSupport.singletonList(profileConfig)).buildRequestContext();
         prc = new WebflowRequestContextProfileRequestContextLookup().apply(rc);
         final MessageContext imc = prc.getInboundMessageContext();
         assert imc !=null;
@@ -147,7 +146,7 @@ public class PopulateBindingAndEndpointContextsTest extends XMLObjectBaseTestCas
         final PopulateBindingAndEndpointContexts badaction = new PopulateBindingAndEndpointContexts();
         badaction.setEndpointResolver(new DefaultEndpointResolver<>());
         badaction.setBindingDescriptorsLookupStrategy(
-                FunctionSupport.<ProfileRequestContext,List<BindingDescriptor>>constant(Collections.singletonList(binding)));
+                FunctionSupport.constant(CollectionSupport.singletonList(binding)));
         badaction.initialize();
         
         final Event event = badaction.execute(rc);
@@ -373,7 +372,7 @@ public class PopulateBindingAndEndpointContextsTest extends XMLObjectBaseTestCas
         final PopulateBindingAndEndpointContexts badaction = new PopulateBindingAndEndpointContexts();
         badaction.setEndpointResolver(new DefaultEndpointResolver<>());
         badaction.setBindingDescriptorsLookupStrategy(
-                FunctionSupport.<ProfileRequestContext,List<BindingDescriptor>>constant(Collections.singletonList(binding)));
+                FunctionSupport.constant(CollectionSupport.singletonList(binding)));
         badaction.initialize();
         
         final Event event = badaction.execute(rc);
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/AddAttributeStatementToAssertionTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/AddAttributeStatementToAssertionTest.java
index 09ed74684..6dcdf03b8 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/AddAttributeStatementToAssertionTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/AddAttributeStatementToAssertionTest.java
@@ -17,8 +17,6 @@
 
 package net.shibboleth.idp.saml.saml1.profile.impl;
 
-import java.util.Arrays;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -106,7 +104,7 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
         registry = new AttributeTranscoderRegistryImpl();
         registry.setId("test");
         
-        registry.setNamingRegistry(Collections.singletonList(
+        registry.setNamingRegistry(CollectionSupport.singletonList(
                 new BasicNamingFunction<>(AttributeDesignator.class, new AbstractSAML1AttributeTranscoder.NamingFunction())));
 
         final SAML1StringAttributeTranscoder transcoder = new SAML1StringAttributeTranscoder();
@@ -136,7 +134,7 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
         rule2_2.put(SAML1AttributeTranscoder.PROP_NAME, MY_ALTNAME_1);
         rule2_2.put(SAML1AttributeTranscoder.PROP_NAMESPACE, MY_NAMESPACE);
 
-        registry.setTranscoderRegistry(Arrays.asList(
+        registry.setTranscoderRegistry(CollectionSupport.listOf(
                 new TranscodingRule(rule1_1),
                 new TranscodingRule(rule1_2),
                 new TranscodingRule(rule2_1),
@@ -216,7 +214,7 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
         final AttributeTranscoderRegistryImpl localregistry = new AttributeTranscoderRegistryImpl();
         localregistry.setId("test");
         
-        localregistry.setNamingRegistry(Collections.singletonList(
+        localregistry.setNamingRegistry(CollectionSupport.singletonList(
                 new BasicNamingFunction<>(AttributeDesignator.class, new AbstractSAML1AttributeTranscoder.NamingFunction())));
 
         final MockSAML1StringAttributeTranscoder transcoder = new MockSAML1StringAttributeTranscoder();
@@ -235,10 +233,10 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
         action.setTranscoderRegistry(new MockReloadableService<>(localregistry));
 
         final IdPAttribute attribute = new IdPAttribute(MY_NAME_1);
-        attribute.setValues(Arrays.asList(new StringAttributeValue(MY_VALUE_1)));
+        attribute.setValues(CollectionSupport.singletonList(new StringAttributeValue(MY_VALUE_1)));
 
         final AttributeContext attribCtx = new AttributeContext();
-        attribCtx.setIdPAttributes(Arrays.asList(attribute));
+        attribCtx.setIdPAttributes(CollectionSupport.singletonList(attribute));
         final RelyingPartyContext rpCtx = prc.getSubcontext(RelyingPartyContext.class);
         assert rpCtx!=null;
         rpCtx.addSubcontext(attribCtx);
@@ -259,7 +257,7 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
         final AttributeTranscoderRegistryImpl localregistry = new AttributeTranscoderRegistryImpl();
         localregistry.setId("test");
         
-        localregistry.setNamingRegistry(Collections.singletonList(
+        localregistry.setNamingRegistry(CollectionSupport.singletonList(
                 new BasicNamingFunction<>(AttributeDesignator.class, new AbstractSAML1AttributeTranscoder.NamingFunction())));
 
         final MockSAML1StringAttributeTranscoder transcoder = new MockSAML1StringAttributeTranscoder();
@@ -278,10 +276,10 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
         action.setTranscoderRegistry(new MockReloadableService<>(localregistry));
 
         final IdPAttribute attribute = new IdPAttribute(MY_NAME_1);
-        attribute.setValues(Arrays.asList(new StringAttributeValue(MY_VALUE_1)));
+        attribute.setValues(CollectionSupport.singletonList(new StringAttributeValue(MY_VALUE_1)));
 
         final AttributeContext attribCtx = new AttributeContext();
-        attribCtx.setIdPAttributes(Arrays.asList(attribute));
+        attribCtx.setIdPAttributes(CollectionSupport.singletonList(attribute));
         final RelyingPartyContext rpCtx = prc.getSubcontext(RelyingPartyContext.class);
         assert rpCtx!=null;
         rpCtx.addSubcontext(attribCtx);
@@ -406,13 +404,13 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
     @Nonnull private AttributeContext buildAttributeContext() throws ComponentInitializationException {
 
         final IdPAttribute attribute1 = new IdPAttribute(MY_NAME_1);
-        attribute1.setValues(Arrays.asList(new StringAttributeValue(MY_VALUE_1)));
+        attribute1.setValues(CollectionSupport.singletonList(new StringAttributeValue(MY_VALUE_1)));
 
         final IdPAttribute attribute2 = new IdPAttribute(MY_NAME_2);
-        attribute2.setValues(Collections.singletonList(new StringAttributeValue(MY_VALUE_2)));
+        attribute2.setValues(CollectionSupport.singletonList(new StringAttributeValue(MY_VALUE_2)));
 
         final AttributeContext attribCtx = new AttributeContext();
-        attribCtx.setIdPAttributes(Arrays.asList(attribute1, attribute2));
+        attribCtx.setIdPAttributes(CollectionSupport.listOf(attribute1, attribute2));
 
         return attribCtx;
     }
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/navigate/tests/ProxyAwareDefaultAuthenticationMethodsLookupFunctionTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/navigate/tests/ProxyAwareDefaultAuthenticationMethodsLookupFunctionTest.java
index bf56b90df..bd343086b 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/navigate/tests/ProxyAwareDefaultAuthenticationMethodsLookupFunctionTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/navigate/tests/ProxyAwareDefaultAuthenticationMethodsLookupFunctionTest.java
@@ -19,7 +19,6 @@ package net.shibboleth.idp.saml.saml2.profile.config.navigate.tests;
 
 import java.security.Principal;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -93,7 +92,7 @@ public class ProxyAwareDefaultAuthenticationMethodsLookupFunctionTest extends Op
                 new AuthenticationMethodPrincipal("baz")));
         
         final Map<Principal,Collection<Principal>> mappings = new HashMap<>();
-        mappings.put(new AuthnContextClassRefPrincipal("foo"), Collections.emptyList());
+        mappings.put(new AuthnContextClassRefPrincipal("foo"), CollectionSupport.emptyList());
         mappings.put(new AuthenticationMethodPrincipal("baz"),
                 List.of(new AuthnContextClassRefPrincipal("frobnitz"),
                         new AuthnContextDeclRefPrincipal("grue"),
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/navigate/tests/ProxyRestrictionLookupFunctionTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/navigate/tests/ProxyRestrictionLookupFunctionTest.java
index 57963029d..7cb8767e1 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/navigate/tests/ProxyRestrictionLookupFunctionTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/config/navigate/tests/ProxyRestrictionLookupFunctionTest.java
@@ -17,7 +17,6 @@
 
 package net.shibboleth.idp.saml.saml2.profile.config.navigate.tests;
 
-import java.util.Collections;
 import java.util.Set;
 
 import javax.security.auth.Subject;
@@ -53,7 +52,7 @@ public class ProxyRestrictionLookupFunctionTest extends OpenSAMLInitBaseTestCase
     @BeforeMethod
     public void setUp() throws ComponentInitializationException {
         prc = new RequestContextBuilder()
-                .setRelyingPartyProfileConfigurations(Collections.singletonList(new BrowserSSOProfileConfiguration()))
+                .setRelyingPartyProfileConfigurations(CollectionSupport.singletonList(new BrowserSSOProfileConfiguration()))
                 .buildProfileRequestContext();
         final RelyingPartyContext rpc = prc.getSubcontext(RelyingPartyContext.class);
         assert rpc!=null;
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAttributeStatementToAssertionTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAttributeStatementToAssertionTest.java
index 9e12b20fe..bed6238f5 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAttributeStatementToAssertionTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAttributeStatementToAssertionTest.java
@@ -17,8 +17,6 @@
 
 package net.shibboleth.idp.saml.saml2.profile.impl;
 
-import java.util.Arrays;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -107,7 +105,7 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
         registry = new AttributeTranscoderRegistryImpl();
         registry.setId("test");
         
-        registry.setNamingRegistry(Collections.singletonList(
+        registry.setNamingRegistry(CollectionSupport.singletonList(
                 new BasicNamingFunction<>(Attribute.class, new AbstractSAML2AttributeTranscoder.NamingFunction())));
 
         final SAML2StringAttributeTranscoder transcoder = new SAML2StringAttributeTranscoder();
@@ -223,7 +221,7 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
         final AttributeTranscoderRegistryImpl localregistry = new AttributeTranscoderRegistryImpl();
         localregistry.setId("test");
         
-        localregistry.setNamingRegistry(Collections.singletonList(
+        localregistry.setNamingRegistry(CollectionSupport.singletonList(
                 new BasicNamingFunction<>(Attribute.class, new AbstractSAML2AttributeTranscoder.NamingFunction())));
         
         final MockSAML2StringAttributeTranscoder transcoder = new MockSAML2StringAttributeTranscoder();
@@ -242,10 +240,10 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
         action.setTranscoderRegistry(new MockReloadableService<>(localregistry));
 
         final IdPAttribute attribute = new IdPAttribute(MY_NAME_1);
-        attribute.setValues(Arrays.asList(new StringAttributeValue(MY_VALUE_1)));
+        attribute.setValues(CollectionSupport.singletonList(new StringAttributeValue(MY_VALUE_1)));
 
         final AttributeContext attribCtx = new AttributeContext();
-        attribCtx.setIdPAttributes(Arrays.asList(attribute));
+        attribCtx.setIdPAttributes(CollectionSupport.singletonList(attribute));
         final RelyingPartyContext rpCtx = prc.getSubcontext(RelyingPartyContext.class);
         assert rpCtx!=null;
         rpCtx.addSubcontext(attribCtx);
@@ -266,7 +264,7 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
         final AttributeTranscoderRegistryImpl localregistry = new AttributeTranscoderRegistryImpl();
         localregistry.setId("test");
         
-        localregistry.setNamingRegistry(Collections.singletonList(
+        localregistry.setNamingRegistry(CollectionSupport.singletonList(
                 new BasicNamingFunction<>(Attribute.class, new AbstractSAML2AttributeTranscoder.NamingFunction())));
 
         final MockSAML2StringAttributeTranscoder transcoder = new MockSAML2StringAttributeTranscoder();
@@ -285,10 +283,10 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
         action.setTranscoderRegistry(new MockReloadableService<>(localregistry));
 
         final IdPAttribute attribute = new IdPAttribute(MY_NAME_1);
-        attribute.setValues(Arrays.asList(new StringAttributeValue(MY_VALUE_1)));
+        attribute.setValues(CollectionSupport.singletonList(new StringAttributeValue(MY_VALUE_1)));
 
         final AttributeContext attribCtx = new AttributeContext();
-        attribCtx.setIdPAttributes(Arrays.asList(attribute));
+        attribCtx.setIdPAttributes(CollectionSupport.singletonList(attribute));
         final RelyingPartyContext rpCtx = prc.getSubcontext(RelyingPartyContext.class);
         assert rpCtx!=null;
         rpCtx.addSubcontext(attribCtx);
@@ -410,15 +408,15 @@ public class AddAttributeStatementToAssertionTest extends OpenSAMLInitBaseTestCa
     @Nonnull private AttributeContext buildAttributeContext() throws ComponentInitializationException {
 
         final IdPAttribute attribute1 = new IdPAttribute(MY_NAME_1);
-        attribute1.setValues(Arrays.asList(new StringAttributeValue(MY_VALUE_1)));
+        attribute1.setValues(CollectionSupport.singletonList(new StringAttributeValue(MY_VALUE_1)));
 
         final IdPAttribute attribute2 = new IdPAttribute(MY_NAME_2);
-        attribute2.setValues(Collections.singletonList(new StringAttributeValue(MY_VALUE_2)));
+        attribute2.setValues(CollectionSupport.singletonList(new StringAttributeValue(MY_VALUE_2)));
         
         final IdPAttribute attribute3 = new IdPAttribute(MY_NAME_3);
 
         final AttributeContext attribCtx = new AttributeContext();
-        attribCtx.setIdPAttributes(Arrays.asList(attribute1, attribute2, attribute3));
+        attribCtx.setIdPAttributes(CollectionSupport.listOf(attribute1, attribute2, attribute3));
 
         return attribCtx;
     }
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/ProcessLogoutRequestTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/ProcessLogoutRequestTest.java
index df26d8f65..dea28295e 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/ProcessLogoutRequestTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/ProcessLogoutRequestTest.java
@@ -20,7 +20,6 @@ package net.shibboleth.idp.saml.saml2.profile.impl;
 import java.time.Duration;
 import java.time.Instant;
 import java.time.temporal.ChronoUnit;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -93,7 +92,7 @@ public class ProcessLogoutRequestTest extends SessionManagerBaseTestCase {
                         SessionIndex.DEFAULT_ELEMENT_NAME);
 
         final SingleLogoutProfileConfiguration logoutConfig = new SingleLogoutProfileConfiguration();
-        logoutConfig.setQualifiedNameIDFormats(Collections.singletonList(NameID.UNSPECIFIED));
+        logoutConfig.setQualifiedNameIDFormats(CollectionSupport.singletonList(NameID.UNSPECIFIED));
         src = new RequestContextBuilder().setRelyingPartyProfileConfigurations(
                 CollectionSupport.singletonList(logoutConfig)).buildRequestContext();
         
diff --git a/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/LogoutStatusStrategyFunction.java b/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/LogoutStatusStrategyFunction.java
index 633a2af4a..95ef88e13 100644
--- a/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/LogoutStatusStrategyFunction.java
+++ b/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/LogoutStatusStrategyFunction.java
@@ -17,8 +17,6 @@
 
 package net.shibboleth.idp.session.impl;
 
-import java.util.Arrays;
-import java.util.Collections;
 import java.util.List;
 import java.util.function.Function;
 
@@ -31,6 +29,7 @@ import org.opensaml.saml.saml2.core.StatusCode;
 
 import net.shibboleth.idp.session.IdPSession;
 import net.shibboleth.idp.session.context.LogoutContext;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.logic.Constraint;
 
 /**
@@ -68,11 +67,11 @@ public class LogoutStatusStrategyFunction implements Function<ProfileRequestCont
         final LogoutContext logoutCtx = logoutContextLookupStrategy.apply(input);
         if (logoutCtx != null) {
             if (!logoutCtx.getIdPSessions().isEmpty()) {
-                return Arrays.asList(StatusCode.RESPONDER, StatusCode.REQUEST_DENIED);
+                return CollectionSupport.listOf(StatusCode.RESPONDER, StatusCode.REQUEST_DENIED);
             }
         }
         
-        return Collections.emptyList();
+        return CollectionSupport.emptyList();
     }
 
 }
\ No newline at end of file
diff --git a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/DetectIdentitySwitchTest.java b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/DetectIdentitySwitchTest.java
index da1f68c35..97a8b1fd2 100644
--- a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/DetectIdentitySwitchTest.java
+++ b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/DetectIdentitySwitchTest.java
@@ -17,8 +17,6 @@
 
 package net.shibboleth.idp.session.impl;
 
-import java.util.Collections;
-
 import net.shibboleth.idp.authn.AuthenticationResult;
 import net.shibboleth.idp.authn.AuthnEventIds;
 import net.shibboleth.idp.authn.context.AuthenticationContext;
@@ -29,6 +27,7 @@ import net.shibboleth.idp.profile.testing.ActionTestingSupport;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
 import net.shibboleth.idp.session.SessionException;
 import net.shibboleth.idp.session.context.SessionContext;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.servlet.impl.HttpServletRequestResponseContext;
 
@@ -42,7 +41,7 @@ import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 /** {@link DetectIdentitySwitch} unit test. */
- at SuppressWarnings("null")
+ at SuppressWarnings("javadoc")
 public class DetectIdentitySwitchTest extends SessionManagerBaseTestCase {
     
     private RequestContext src;
@@ -80,7 +79,7 @@ public class DetectIdentitySwitchTest extends SessionManagerBaseTestCase {
         HttpServletRequestResponseContext.loadCurrent(new MockHttpServletRequest(), new MockHttpServletResponse());
         
         sc.setIdPSession(sessionManager.createSession("joe"));
-        ac.setActiveResults(Collections.singletonList(new AuthenticationResult("test1", new UsernamePrincipal("joe"))));
+        ac.setActiveResults(CollectionSupport.singletonList(new AuthenticationResult("test1", new UsernamePrincipal("joe"))));
         
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
@@ -92,7 +91,7 @@ public class DetectIdentitySwitchTest extends SessionManagerBaseTestCase {
         HttpServletRequestResponseContext.loadCurrent(new MockHttpServletRequest(), new MockHttpServletResponse());
         
         sc.setIdPSession(sessionManager.createSession("joe"));
-        ac.setActiveResults(Collections.singletonList(new AuthenticationResult("test1", new UsernamePrincipal("joe"))));
+        ac.setActiveResults(CollectionSupport.singletonList(new AuthenticationResult("test1", new UsernamePrincipal("joe"))));
         c14n.setPrincipalName("joe");
         
         final Event event = action.execute(src);
@@ -105,7 +104,7 @@ public class DetectIdentitySwitchTest extends SessionManagerBaseTestCase {
         HttpServletRequestResponseContext.loadCurrent(new MockHttpServletRequest(), new MockHttpServletResponse());
         
         sc.setIdPSession(sessionManager.createSession("joe"));
-        ac.setActiveResults(Collections.singletonList(new AuthenticationResult("test1", new UsernamePrincipal("joe"))));
+        ac.setActiveResults(CollectionSupport.singletonList(new AuthenticationResult("test1", new UsernamePrincipal("joe"))));
         c14n.setPrincipalName("joe2");
         
         final Event event = action.execute(src);
diff --git a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/ProcessLogoutTest.java b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/ProcessLogoutTest.java
index dfd7d5848..1a3cee332 100644
--- a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/ProcessLogoutTest.java
+++ b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/ProcessLogoutTest.java
@@ -20,10 +20,8 @@ package net.shibboleth.idp.session.impl;
 import java.time.Duration;
 import java.time.Instant;
 import java.util.Collection;
-import java.util.Collections;
 
 import org.opensaml.profile.context.ProfileRequestContext;
-import org.opensaml.storage.StorageSerializer;
 import org.springframework.mock.web.MockHttpServletRequest;
 import org.springframework.mock.web.MockHttpServletResponse;
 import org.springframework.webflow.execution.Event;
@@ -40,11 +38,11 @@ import net.shibboleth.idp.profile.testing.ActionTestingSupport;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
 import net.shibboleth.idp.session.BasicSPSession;
 import net.shibboleth.idp.session.IdPSession;
-import net.shibboleth.idp.session.SPSession;
 import net.shibboleth.idp.session.SPSessionSerializerRegistry;
 import net.shibboleth.idp.session.SessionException;
 import net.shibboleth.idp.session.context.LogoutContext;
 import net.shibboleth.idp.session.criterion.HttpServletRequestCriterion;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.resolver.CriteriaSet;
 import net.shibboleth.shared.resolver.ResolverException;
@@ -53,7 +51,7 @@ import net.shibboleth.shared.servlet.impl.ThreadLocalHttpServletRequestSupplier;
 import net.shibboleth.shared.servlet.impl.ThreadLocalHttpServletResponseSupplier;
 
 /** {@link ProcessLogout} unit test. */
- at SuppressWarnings({"javadoc", "null"})
+ at SuppressWarnings({"javadoc"})
 public class ProcessLogoutTest extends SessionManagerBaseTestCase {
     
     private RequestContext src;
@@ -81,7 +79,7 @@ public class ProcessLogoutTest extends SessionManagerBaseTestCase {
         sessionManager.setSessionSlop(Duration.ofSeconds(900));
         final SPSessionSerializerRegistry registry = new SPSessionSerializerRegistry();
         registry.setMappings(
-                Collections.<Class<? extends SPSession>,StorageSerializer<? extends SPSession>>singletonMap(
+                CollectionSupport.singletonMap(
                         BasicSPSession.class, new BasicSPSessionSerializer(Duration.ofSeconds(900))));
         registry.initialize();
         sessionManager.setSPSessionSerializerRegistry(registry);
diff --git a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/UpdateSessionWithSPSessionTest.java b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/UpdateSessionWithSPSessionTest.java
index 2efaac1b7..95494a38e 100644
--- a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/UpdateSessionWithSPSessionTest.java
+++ b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/UpdateSessionWithSPSessionTest.java
@@ -19,7 +19,6 @@ package net.shibboleth.idp.session.impl;
 
 import java.time.Duration;
 import java.time.Instant;
-import java.util.Collections;
 import java.util.function.Function;
 
 import net.shibboleth.idp.profile.context.navigate.WebflowRequestContextProfileRequestContextLookup;
@@ -31,12 +30,12 @@ import net.shibboleth.idp.session.SPSession;
 import net.shibboleth.idp.session.SPSessionSerializerRegistry;
 import net.shibboleth.idp.session.SessionException;
 import net.shibboleth.idp.session.context.SessionContext;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.logic.FunctionSupport;
 import net.shibboleth.shared.servlet.impl.HttpServletRequestResponseContext;
 
 import org.opensaml.profile.context.ProfileRequestContext;
-import org.opensaml.storage.StorageSerializer;
 import org.springframework.mock.web.MockHttpServletRequest;
 import org.springframework.mock.web.MockHttpServletResponse;
 import org.springframework.webflow.execution.Event;
@@ -46,6 +45,7 @@ import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 /** {@link UpdateSessionWithSPSession} unit test. */
+ at SuppressWarnings("javadoc")
 public class UpdateSessionWithSPSessionTest extends SessionManagerBaseTestCase {
     
     private RequestContext src;
@@ -70,8 +70,7 @@ public class UpdateSessionWithSPSessionTest extends SessionManagerBaseTestCase {
         sessionManager.setSecondaryServiceIndex(true);
         final SPSessionSerializerRegistry registry = new SPSessionSerializerRegistry();
         registry.setMappings(
-                Collections.<Class<? extends SPSession>,StorageSerializer<? extends SPSession>>singletonMap(
-                        BasicSPSession.class, new BasicSPSessionSerializer(Duration.ofSeconds(900))));
+                CollectionSupport.singletonMap(BasicSPSession.class, new BasicSPSessionSerializer(Duration.ofSeconds(900))));
         registry.initialize();
         sessionManager.setSPSessionSerializerRegistry(registry);
     }

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


More information about the commits mailing list