[java-identity-provider] branch main updated: IDP-2069 Null Handling

Rod Widdowson rdw at steadingsoftware.com
Sat Mar 11 15:54:48 UTC 2023


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

rdw 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=87f4c51d23b64c6e8122e40452e74a3e33048a63

The following commit(s) were added to refs/heads/main by this push:
     new 87f4c51d2 IDP-2069 Null Handling
87f4c51d2 is described below

commit 87f4c51d23b64c6e8122e40452e74a3e33048a63
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Sat Mar 11 11:04:09 2023 +0000

    IDP-2069 Null Handling
    
    https://shibboleth.atlassian.net/browse/IDP-2069
    
    Eschew the two parameter getSubContext() method
---
 .../authn/impl/SimpleSubjectCanonicalization.java  |  2 +-
 .../idp/authn/impl/ValidateUserAgentAddress.java   |  2 +-
 .../ExtractDuoAuthenticationFromHeadersTest.java   | 28 ++++++------
 ...ttributeSourcedSubjectCanonicalizationTest.java |  4 +-
 .../idp/authn/impl/ExtractRemoteUserTest.java      | 16 +++----
 .../authn/impl/ExtractUserAgentAddressTest.java    |  4 +-
 .../authn/impl/ExtractUserAgentIdentifierTest.java |  4 +-
 .../ExtractUsernamePasswordFromBasicAuthTest.java  |  8 ++--
 ...ExtractUsernamePasswordFromFormRequestTest.java |  8 ++--
 .../impl/HTPasswdCredentialValidatorTest.java      |  4 +-
 .../InitializeRequestedPrincipalContextTest.java   | 18 +++-----
 .../authn/impl/JAASCredentialValidatorTest.java    |  6 +--
 .../authn/impl/LDAPCredentialValidatorTest.java    |  4 +-
 ...PopulateSubjectCanonicalizationContextTest.java |  2 +-
 .../SelectSubjectCanonicalizationFlowTest.java     |  2 +-
 .../impl/SimpleSubjectCanonicalizationTest.java    |  4 +-
 .../idp/authn/impl/ValidateRemoteUserTest.java     | 10 ++---
 .../authn/impl/ValidateUserAgentAddressTest.java   |  8 ++--
 .../idp/test/flows/c14n/actions/TestAfterC14N.java |  2 +-
 .../idp/test/flows/cas/LoginFlowTest.java          | 11 +++--
 .../idp/test/flows/cas/SamlValidateFlowTest.java   |  4 +-
 .../test/flows/cas/ServiceValidateFlowTest.java    |  4 +-
 .../consent/logic/impl/FlowIdLookupFunction.java   |  2 +-
 .../InitializeAttributeReleaseContextTest.java     |  2 +-
 .../impl/PopulateAttributeReleaseContextTest.java  |  8 ++--
 .../idp/consent/flow/impl/ExtractConsentTest.java  | 10 ++---
 .../flow/impl/InitializeConsentContextTest.java    |  2 +-
 .../flow/impl/PopulateConsentContextTest.java      |  2 +-
 .../impl/CreateGlobalConsentResultTest.java        |  2 +-
 .../flow/storage/impl/CreateResultTest.java        |  6 +--
 .../logic/impl/FlowIdLookupFunctionTest.java       |  4 +-
 .../idp/profile/AbstractProfileAction.java         |  2 +-
 .../profile/impl/AbstractProfileActionTest.java    |  2 +-
 .../impl/tests/FinalizeAuthenticationTest.java     |  2 +-
 .../profile/impl/tests/FilterAttributesTest.java   | 14 +++---
 .../profile/impl/tests/ResolveAttributesTest.java  | 10 ++---
 .../nameid/impl/NameIDCanonicalizationTest.java    |  2 +-
 .../impl/NameIdentifierCanonicalizationTest.java   | 51 +++++++++++++++-------
 .../FinalizeSAMLSubjectCanonicalizationTest.java   |  2 +-
 .../PopulateBindingAndEndpointContextsTest.java    | 35 ++++++++-------
 .../AddAuthenticationStatementToAssertionTest.java |  8 ++--
 ...ultAuthenticationMethodsLookupFunctionTest.java | 13 +++---
 .../impl/AddAuthnStatementToAssertionTest.java     |  4 +-
 .../impl/FilterByQueriedAttributesTest.java        |  7 ++-
 .../profile/impl/ProcessLogoutRequestTest.java     | 18 ++++----
 .../impl/ProcessRequestedAuthnContextTest.java     |  2 +-
 .../idp/session/impl/DestroySessionsTest.java      | 11 +++--
 .../idp/session/impl/DetectIdentitySwitchTest.java |  6 +--
 .../session/impl/PopulateSessionContextTest.java   | 12 ++---
 .../UpdateSessionWithAuthenticationResultTest.java | 10 ++---
 .../idp/saml/impl/testing/TestSources.java         |  2 +-
 51 files changed, 213 insertions(+), 193 deletions(-)

diff --git a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/SimpleSubjectCanonicalization.java b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/SimpleSubjectCanonicalization.java
index b9add1757..0a4dc87b9 100644
--- a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/SimpleSubjectCanonicalization.java
+++ b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/SimpleSubjectCanonicalization.java
@@ -91,7 +91,7 @@ public class SimpleSubjectCanonicalization extends AbstractSubjectCanonicalizati
             
             if (input != null) {
                 final SubjectCanonicalizationContext c14nContext =
-                        input.getSubcontext(SubjectCanonicalizationContext.class, false);
+                        input.getSubcontext(SubjectCanonicalizationContext.class);
                 if (c14nContext != null) {
                     return apply(input, c14nContext, false);
                 }
diff --git a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ValidateUserAgentAddress.java b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ValidateUserAgentAddress.java
index 3d6252e40..b70b56f67 100644
--- a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ValidateUserAgentAddress.java
+++ b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ValidateUserAgentAddress.java
@@ -107,7 +107,7 @@ public class ValidateUserAgentAddress extends AbstractAuditingValidationAction {
             return false;
         }
 
-        final UserAgentContext uaCtx = uaContext = authenticationContext.getSubcontext(UserAgentContext.class, false);
+        final UserAgentContext uaCtx = uaContext = authenticationContext.getSubcontext(UserAgentContext.class);
         if (uaCtx == null) {
             log.debug("{} No UserAgentContext available within authentication context", getLogPrefix());
             handleError(profileRequestContext, authenticationContext, AuthnEventIds.NO_CREDENTIALS,
diff --git a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/duo/impl/ExtractDuoAuthenticationFromHeadersTest.java b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/duo/impl/ExtractDuoAuthenticationFromHeadersTest.java
index b61a810fe..4a7d97657 100644
--- a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/duo/impl/ExtractDuoAuthenticationFromHeadersTest.java
+++ b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/duo/impl/ExtractDuoAuthenticationFromHeadersTest.java
@@ -55,9 +55,9 @@ public class ExtractDuoAuthenticationFromHeadersTest extends BaseAuthenticationC
         
         ActionTestingSupport.assertEvent(event, AuthnEventIds.NO_CREDENTIALS);
         
-        final AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class, false);
+        final AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class);
         assert authCtx != null;
-        final DuoAuthenticationContext duoCtx = authCtx.getSubcontext(DuoAuthenticationContext.class, false);
+        final DuoAuthenticationContext duoCtx = authCtx.getSubcontext(DuoAuthenticationContext.class);
         Assert.assertNull(duoCtx);
     }
 
@@ -71,9 +71,9 @@ public class ExtractDuoAuthenticationFromHeadersTest extends BaseAuthenticationC
         
         ActionTestingSupport.assertEvent(event, AuthnEventIds.NO_CREDENTIALS);
 
-        final AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class, false);
+        final AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class);
         assert authCtx != null;
-        final DuoAuthenticationContext duoCtx = authCtx.getSubcontext(DuoAuthenticationContext.class, false);
+        final DuoAuthenticationContext duoCtx = authCtx.getSubcontext(DuoAuthenticationContext.class);
         Assert.assertNull(duoCtx);
     }
     
@@ -84,9 +84,9 @@ public class ExtractDuoAuthenticationFromHeadersTest extends BaseAuthenticationC
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
         
-        final AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class, false);
+        final AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class);
         assert authCtx != null;
-        final DuoAuthenticationContext duoCtx = authCtx.getSubcontext(DuoAuthenticationContext.class, false);
+        final DuoAuthenticationContext duoCtx = authCtx.getSubcontext(DuoAuthenticationContext.class);
         assert duoCtx != null;
         Assert.assertEquals(duoCtx.getFactor(), DuoAuthAPI.DUO_FACTOR_AUTO);
         Assert.assertEquals(duoCtx.getDeviceID(), DuoAuthAPI.DUO_DEVICE_AUTO);
@@ -102,9 +102,9 @@ public class ExtractDuoAuthenticationFromHeadersTest extends BaseAuthenticationC
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
 
-        final AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class, false);
+        final AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class);
         assert authCtx != null;
-        final DuoAuthenticationContext duoCtx = authCtx.getSubcontext(DuoAuthenticationContext.class, false);
+        final DuoAuthenticationContext duoCtx = authCtx.getSubcontext(DuoAuthenticationContext.class);
         assert duoCtx != null;
         Assert.assertEquals(duoCtx.getFactor(), DuoAuthAPI.DUO_FACTOR_PUSH);
         Assert.assertEquals(duoCtx.getDeviceID(), DuoAuthAPI.DUO_DEVICE_AUTO);
@@ -120,9 +120,9 @@ public class ExtractDuoAuthenticationFromHeadersTest extends BaseAuthenticationC
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
 
-        final AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class, false);
+        final AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class);
         assert authCtx != null;
-        final DuoAuthenticationContext duoCtx = authCtx.getSubcontext(DuoAuthenticationContext.class, false);
+        final DuoAuthenticationContext duoCtx = authCtx.getSubcontext(DuoAuthenticationContext.class);
         assert duoCtx != null;
         Assert.assertEquals(duoCtx.getFactor(), DuoAuthAPI.DUO_FACTOR_AUTO);
         Assert.assertEquals(duoCtx.getDeviceID(), "foo");
@@ -138,9 +138,9 @@ public class ExtractDuoAuthenticationFromHeadersTest extends BaseAuthenticationC
         final Event event = action.execute(src);
         ActionTestingSupport.assertEvent(event, AuthnEventIds.NO_CREDENTIALS);
 
-        final AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class, false);
+        final AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class);
         assert authCtx != null;
-        final DuoAuthenticationContext duoCtx = authCtx.getSubcontext(DuoAuthenticationContext.class, false);
+        final DuoAuthenticationContext duoCtx = authCtx.getSubcontext(DuoAuthenticationContext.class);
         assert duoCtx == null;
     }
 
@@ -154,9 +154,9 @@ public class ExtractDuoAuthenticationFromHeadersTest extends BaseAuthenticationC
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
 
-        final AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class, false);
+        final AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class);
         assert authCtx != null;
-        final DuoAuthenticationContext duoCtx = authCtx.getSubcontext(DuoAuthenticationContext.class, false);
+        final DuoAuthenticationContext duoCtx = authCtx.getSubcontext(DuoAuthenticationContext.class);
         assert duoCtx != null;
         Assert.assertEquals(duoCtx.getFactor(), DuoAuthAPI.DUO_FACTOR_PASSCODE);
         Assert.assertNull(duoCtx.getDeviceID());
diff --git a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/AttributeSourcedSubjectCanonicalizationTest.java b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/AttributeSourcedSubjectCanonicalizationTest.java
index 4438180b3..46a6718d0 100644
--- a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/AttributeSourcedSubjectCanonicalizationTest.java
+++ b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/AttributeSourcedSubjectCanonicalizationTest.java
@@ -74,7 +74,7 @@ public class AttributeSourcedSubjectCanonicalizationTest extends BaseAuthenticat
         final Event event = action.execute(src);
         
         ActionTestingSupport.assertEvent(event, AuthnEventIds.INVALID_SUBJECT);
-        SubjectCanonicalizationContext scc = prc.getSubcontext(SubjectCanonicalizationContext.class, false);
+        SubjectCanonicalizationContext scc = prc.getSubcontext(SubjectCanonicalizationContext.class);
         assert scc != null && scc.getException()!=null;
     }
 
@@ -88,7 +88,7 @@ public class AttributeSourcedSubjectCanonicalizationTest extends BaseAuthenticat
         final Event event = action.execute(src);
         
         ActionTestingSupport.assertEvent(event, AuthnEventIds.INVALID_SUBJECT);
-        SubjectCanonicalizationContext scc = prc.getSubcontext(SubjectCanonicalizationContext.class, false);
+        SubjectCanonicalizationContext scc = prc.getSubcontext(SubjectCanonicalizationContext.class);
         assert scc != null && scc.getException()!=null;
     }
 
diff --git a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/ExtractRemoteUserTest.java b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/ExtractRemoteUserTest.java
index 94e27efbb..96e3e0119 100644
--- a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/ExtractRemoteUserTest.java
+++ b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/ExtractRemoteUserTest.java
@@ -79,9 +79,9 @@ public class ExtractRemoteUserTest extends BaseAuthenticationContextTest {
         
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
-        AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class, false);
+        AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class);
         assert authCtx != null;
-        final UsernameContext unCtx = authCtx.getSubcontext(UsernameContext.class, false);
+        final UsernameContext unCtx = authCtx.getSubcontext(UsernameContext.class);
         assert unCtx != null;
         Assert.assertEquals(unCtx.getUsername(), "foo");
     }
@@ -93,9 +93,9 @@ public class ExtractRemoteUserTest extends BaseAuthenticationContextTest {
         
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
-        AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class, false);
+        AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class);
         assert authCtx != null;
-        final UsernameContext unCtx = authCtx.getSubcontext(UsernameContext.class, false);
+        final UsernameContext unCtx = authCtx.getSubcontext(UsernameContext.class);
         assert unCtx != null;
         Assert.assertEquals(unCtx.getUsername(), "foo");
     }
@@ -108,9 +108,9 @@ public class ExtractRemoteUserTest extends BaseAuthenticationContextTest {
         
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
-        AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class, false);
+        AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class);
         assert authCtx != null;
-        UsernameContext unCtx = authCtx.getSubcontext(UsernameContext.class, false);
+        UsernameContext unCtx = authCtx.getSubcontext(UsernameContext.class);
         assert unCtx != null;
         Assert.assertEquals(unCtx.getUsername(), "foo");
     }
@@ -124,9 +124,9 @@ public class ExtractRemoteUserTest extends BaseAuthenticationContextTest {
         
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
-        AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class, false);
+        AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class);
         assert authCtx != null;
-        final UsernameContext unCtx = authCtx.getSubcontext(UsernameContext.class, false);
+        final UsernameContext unCtx = authCtx.getSubcontext(UsernameContext.class);
         assert unCtx != null;
         Assert.assertEquals(unCtx.getUsername(), "foo");
     }
diff --git a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/ExtractUserAgentAddressTest.java b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/ExtractUserAgentAddressTest.java
index e990d9c02..8ff30e2ab 100644
--- a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/ExtractUserAgentAddressTest.java
+++ b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/ExtractUserAgentAddressTest.java
@@ -61,9 +61,9 @@ public class ExtractUserAgentAddressTest extends BaseAuthenticationContextTest {
     @Test public void testValidAddress() {
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
-        AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class, false);
+        AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class);
         assert authCtx!=null;
-        UserAgentContext uaCtx = authCtx.getSubcontext(UserAgentContext.class, false);
+        UserAgentContext uaCtx = authCtx.getSubcontext(UserAgentContext.class);
         assert uaCtx!=null;
         InetAddress addr = uaCtx.getAddress();
         assert addr !=null;
diff --git a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/ExtractUserAgentIdentifierTest.java b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/ExtractUserAgentIdentifierTest.java
index e978e1605..560f6ab75 100644
--- a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/ExtractUserAgentIdentifierTest.java
+++ b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/ExtractUserAgentIdentifierTest.java
@@ -65,9 +65,9 @@ public class ExtractUserAgentIdentifierTest extends BaseAuthenticationContextTes
         
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
-        AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class, false);
+        AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class);
         assert authCtx != null;
-        UserAgentContext uaCtx = authCtx.getSubcontext(UserAgentContext.class, false);
+        UserAgentContext uaCtx = authCtx.getSubcontext(UserAgentContext.class);
         assert uaCtx != null;
         Assert.assertEquals(uaCtx.getIdentifier(), "foo bar baz");
     }
diff --git a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/ExtractUsernamePasswordFromBasicAuthTest.java b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/ExtractUsernamePasswordFromBasicAuthTest.java
index 7fdba5403..d00f80f4a 100644
--- a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/ExtractUsernamePasswordFromBasicAuthTest.java
+++ b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/ExtractUsernamePasswordFromBasicAuthTest.java
@@ -95,9 +95,9 @@ public class ExtractUsernamePasswordFromBasicAuthTest extends BaseAuthentication
         getMockHttpServletRequest(action).addHeader(HttpHeaders.AUTHORIZATION, "Basic Zm9vOmJhcg==");
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
-        AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class, false);
+        AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class);
         assert authCtx != null;
-        final UsernamePasswordContext upCtx = authCtx.getSubcontext(UsernamePasswordContext.class, false);
+        final UsernamePasswordContext upCtx = authCtx.getSubcontext(UsernamePasswordContext.class);
         assert upCtx != null;
         Assert.assertEquals(upCtx.getUsername(), "foo");
         Assert.assertEquals(upCtx.getPassword(), "bar");
@@ -108,9 +108,9 @@ public class ExtractUsernamePasswordFromBasicAuthTest extends BaseAuthentication
         
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
-        AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class, false);
+        AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class);
         assert authCtx != null;
-        final UsernamePasswordContext upCtx = authCtx.getSubcontext(UsernamePasswordContext.class, false);
+        final UsernamePasswordContext upCtx = authCtx.getSubcontext(UsernamePasswordContext.class);
         assert upCtx != null;
         Assert.assertEquals(upCtx.getUsername(), "foo");
         Assert.assertEquals(upCtx.getPassword(), "☯️bar");
diff --git a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/ExtractUsernamePasswordFromFormRequestTest.java b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/ExtractUsernamePasswordFromFormRequestTest.java
index 935b95fb2..0d289e481 100644
--- a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/ExtractUsernamePasswordFromFormRequestTest.java
+++ b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/ExtractUsernamePasswordFromFormRequestTest.java
@@ -76,10 +76,10 @@ public class ExtractUsernamePasswordFromFormRequestTest extends BaseAuthenticati
         
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
-        AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class, false);
+        AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class);
         assert authCtx != null;
         Assert.assertTrue(authCtx.isResultCacheable());
-        UsernamePasswordContext upCtx = authCtx.getSubcontext(UsernamePasswordContext.class, false);
+        UsernamePasswordContext upCtx = authCtx.getSubcontext(UsernamePasswordContext.class);
         assert upCtx!= null;
         Assert.assertEquals(upCtx.getUsername(), "foo");
         Assert.assertEquals(upCtx.getPassword(), "bar");
@@ -92,10 +92,10 @@ public class ExtractUsernamePasswordFromFormRequestTest extends BaseAuthenticati
         
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
-        AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class, false);
+        AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class);
         assert authCtx != null;
         Assert.assertFalse(authCtx.isResultCacheable());
-        UsernamePasswordContext upCtx = authCtx.getSubcontext(UsernamePasswordContext.class, false);
+        UsernamePasswordContext upCtx = authCtx.getSubcontext(UsernamePasswordContext.class);
         assert upCtx != null;
         Assert.assertEquals(upCtx.getUsername(), "foo");
         Assert.assertEquals(upCtx.getPassword(), "bar");
diff --git a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/HTPasswdCredentialValidatorTest.java b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/HTPasswdCredentialValidatorTest.java
index 2ff8df1c2..33316defa 100644
--- a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/HTPasswdCredentialValidatorTest.java
+++ b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/HTPasswdCredentialValidatorTest.java
@@ -100,7 +100,7 @@ public class HTPasswdCredentialValidatorTest extends BaseAuthenticationContextTe
         final AuthenticationContext ac = prc.getSubcontext(AuthenticationContext.class);
         assert ac != null;
         ac.setAttemptedFlow(authenticationFlows.get(0));
-        ac.getSubcontext(UsernamePasswordContext.class, true);
+        ac.getSubcontext(UsernamePasswordContext.class);
         
         validator.initialize();
         action.initialize();
@@ -141,7 +141,7 @@ public class HTPasswdCredentialValidatorTest extends BaseAuthenticationContextTe
         final AuthenticationContext ac = prc.getSubcontext(AuthenticationContext.class);
         assert ac != null;
         ac.setAttemptedFlow(authenticationFlows.get(0));
-        ac.getSubcontext(UsernamePasswordContext.class, true);
+        ac.getSubcontext(UsernamePasswordContext.class);
         
         validator.setMatchExpression(Pattern.compile("foo.+"));
         validator.initialize();
diff --git a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/InitializeRequestedPrincipalContextTest.java b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/InitializeRequestedPrincipalContextTest.java
index 24e9dcfff..24f2b7e79 100644
--- a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/InitializeRequestedPrincipalContextTest.java
+++ b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/InitializeRequestedPrincipalContextTest.java
@@ -71,8 +71,7 @@ public class InitializeRequestedPrincipalContextTest {
      * @throws Exception if something goes wrong
      */
     @Test public void testNoReplace() throws Exception {
-        final AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class, true);
-        assert authCtx != null;
+        final AuthenticationContext authCtx = prc.getOrCreateSubcontext(AuthenticationContext.class);
         authCtx.getOrCreateSubcontext(RequestedPrincipalContext.class).setOperator("foo");
 
         final Event event = action.execute(src);
@@ -89,7 +88,7 @@ public class InitializeRequestedPrincipalContextTest {
      */
     @Test public void testNoRelyingPartyContext() throws Exception {
         prc.removeSubcontext(RelyingPartyContext.class);
-        final AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class, true);
+        final AuthenticationContext authCtx = prc.getOrCreateSubcontext(AuthenticationContext.class);
 
         final Event event = action.execute(src);
         ActionTestingSupport.assertEvent(event, IdPEventIds.INVALID_RELYING_PARTY_CTX);
@@ -103,11 +102,10 @@ public class InitializeRequestedPrincipalContextTest {
      * @throws Exception if something goes wrong
      */
     @Test public void testNoProfileConfiguration() throws Exception {
-        final AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class, true);
+        final AuthenticationContext authCtx = prc.getOrCreateSubcontext(AuthenticationContext.class);
 
         final Event event = action.execute(src);
         ActionTestingSupport.assertEvent(event, IdPEventIds.INVALID_PROFILE_CONFIG);
-        assert authCtx != null;
         Assert.assertNull(authCtx.getSubcontext(RequestedPrincipalContext.class));
     }
 
@@ -120,7 +118,7 @@ public class InitializeRequestedPrincipalContextTest {
         src = new RequestContextBuilder().setRelyingPartyProfileConfigurations(
                 Collections.<ProfileConfiguration>singleton(new MockProfileConfiguration("mock"))).buildRequestContext();
         prc = new WebflowRequestContextProfileRequestContextLookup().apply(src);
-        final AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class, true);
+        final AuthenticationContext authCtx = prc.getOrCreateSubcontext(AuthenticationContext.class);
 
         final Event event = action.execute(src);
         ActionTestingSupport.assertEvent(event, IdPEventIds.INVALID_PROFILE_CONFIG);
@@ -139,8 +137,7 @@ public class InitializeRequestedPrincipalContextTest {
         src = new RequestContextBuilder().setRelyingPartyProfileConfigurations(
                 Collections.<ProfileConfiguration>singleton(mock)).buildRequestContext();
         prc = new WebflowRequestContextProfileRequestContextLookup().apply(src);
-        final AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class, true);
-        assert authCtx != null;
+        final AuthenticationContext authCtx = prc.getOrCreateSubcontext(AuthenticationContext.class);
         
         authCtx.getOrCreateSubcontext(RequestedPrincipalContext.class).setOperator("foo");
 
@@ -167,8 +164,7 @@ public class InitializeRequestedPrincipalContextTest {
         src = new RequestContextBuilder().setRelyingPartyProfileConfigurations(
                 Collections.<ProfileConfiguration>singleton(mock)).buildRequestContext();
         prc = new WebflowRequestContextProfileRequestContextLookup().apply(src);
-        final AuthenticationContext authCtx = prc.getSubcontext(AuthenticationContext.class, true);
-        assert authCtx != null;
+        final AuthenticationContext authCtx = prc.getOrCreateSubcontext(AuthenticationContext.class);
 
         authCtx.getOrCreateSubcontext(RequestedPrincipalContext.class).setOperator("foo");
 
@@ -178,7 +174,7 @@ public class InitializeRequestedPrincipalContextTest {
 
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
-        RequestedPrincipalContext rpCtx = authCtx.getSubcontext(RequestedPrincipalContext.class, false);
+        RequestedPrincipalContext rpCtx = authCtx.getOrCreateSubcontext(RequestedPrincipalContext.class);
         assert rpCtx != null;
         Assert.assertEquals(rpCtx.getOperator(), "exact");
         Assert.assertEquals(rpCtx.getRequestedPrincipals().size(), 1);
diff --git a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/JAASCredentialValidatorTest.java b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/JAASCredentialValidatorTest.java
index 2c0a4e48a..71757fa97 100644
--- a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/JAASCredentialValidatorTest.java
+++ b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/JAASCredentialValidatorTest.java
@@ -137,7 +137,7 @@ public class JAASCredentialValidatorTest extends BaseAuthenticationContextTest {
         final AuthenticationContext ac = prc.getSubcontext(AuthenticationContext.class);
         assert ac != null;
         ac.setAttemptedFlow(authenticationFlows.get(0));
-        ac.getSubcontext(UsernamePasswordContext.class, true);
+        ac.getOrCreateSubcontext(UsernamePasswordContext.class);
         
         validator.initialize();
         action.initialize();
@@ -200,7 +200,7 @@ public class JAASCredentialValidatorTest extends BaseAuthenticationContextTest {
         assert ac != null;
         ac.setAttemptedFlow(authenticationFlows.get(0));
         
-        final RequestedPrincipalContext rpc = ac.getSubcontext(RequestedPrincipalContext.class, true);
+        final RequestedPrincipalContext rpc = ac.getOrCreateSubcontext(RequestedPrincipalContext.class);
         assert rpc!= null;
         rpc.getPrincipalEvalPredicateFactoryRegistry().register(
                 TestPrincipal.class, "exact", new ExactPrincipalEvalPredicateFactory());
@@ -229,7 +229,7 @@ public class JAASCredentialValidatorTest extends BaseAuthenticationContextTest {
         final AuthenticationContext ac = prc.getSubcontext(AuthenticationContext.class);
         assert ac != null;
         ac.setAttemptedFlow(authenticationFlows.get(0));
-        ac.getSubcontext(UsernamePasswordContext.class, true);
+        ac.getOrCreateSubcontext(UsernamePasswordContext.class);
         
         validator.setMatchExpression(Pattern.compile("foo.+"));
         validator.initialize();
diff --git a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/LDAPCredentialValidatorTest.java b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/LDAPCredentialValidatorTest.java
index 9ca6c3279..f1fc08324 100644
--- a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/LDAPCredentialValidatorTest.java
+++ b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/LDAPCredentialValidatorTest.java
@@ -165,7 +165,7 @@ public class LDAPCredentialValidatorTest extends BaseAuthenticationContextTest {
         AuthenticationContext ac = prc.getSubcontext(AuthenticationContext.class);
         assert ac != null;
         ac.setAttemptedFlow(authenticationFlows.get(0));
-        ac.getSubcontext(UsernamePasswordContext.class, true);
+        ac.getOrCreateSubcontext(UsernamePasswordContext.class);
         
         validator.setAuthenticator(authenticator);
         validator.initialize();
@@ -188,7 +188,7 @@ public class LDAPCredentialValidatorTest extends BaseAuthenticationContextTest {
         AuthenticationContext ac = prc.getSubcontext(AuthenticationContext.class);
         assert ac != null;
         ac.setAttemptedFlow(authenticationFlows.get(0));
-        ac.getSubcontext(UsernamePasswordContext.class, true);
+        ac.getOrCreateSubcontext(UsernamePasswordContext.class);
         
         validator.setAuthenticator(authenticator);
         validator.setMatchExpression(Pattern.compile("foo.+"));
diff --git a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/PopulateSubjectCanonicalizationContextTest.java b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/PopulateSubjectCanonicalizationContextTest.java
index e8fb4a1e3..2c4d9bc48 100644
--- a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/PopulateSubjectCanonicalizationContextTest.java
+++ b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/PopulateSubjectCanonicalizationContextTest.java
@@ -68,7 +68,7 @@ public class PopulateSubjectCanonicalizationContextTest {
     @Test public void testAction() throws Exception {
         
         ActionTestingSupport.assertProceedEvent(prc);
-        final SubjectCanonicalizationContext c14nCtx = prc.getSubcontext(SubjectCanonicalizationContext.class, false);
+        final SubjectCanonicalizationContext c14nCtx = prc.getSubcontext(SubjectCanonicalizationContext.class);
         assert c14nCtx!=null;
 
         Assert.assertEquals(c14nCtx.getPotentialFlows().size(), 3);
diff --git a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/SelectSubjectCanonicalizationFlowTest.java b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/SelectSubjectCanonicalizationFlowTest.java
index 1b32130a7..4ebc7fe88 100644
--- a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/SelectSubjectCanonicalizationFlowTest.java
+++ b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/SelectSubjectCanonicalizationFlowTest.java
@@ -40,7 +40,7 @@ public class SelectSubjectCanonicalizationFlowTest extends PopulateSubjectCanoni
         action = new SelectSubjectCanonicalizationFlow();
         action.initialize();
 
-        c14nCtx = prc.getSubcontext(SubjectCanonicalizationContext.class, false);
+        c14nCtx = prc.getSubcontext(SubjectCanonicalizationContext.class);
     }
     
     @Test public void testSelect() {
diff --git a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/SimpleSubjectCanonicalizationTest.java b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/SimpleSubjectCanonicalizationTest.java
index 02443fe0e..71fc25856 100644
--- a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/SimpleSubjectCanonicalizationTest.java
+++ b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/SimpleSubjectCanonicalizationTest.java
@@ -87,7 +87,7 @@ public class SimpleSubjectCanonicalizationTest extends BaseAuthenticationContext
         final Event event = action.execute(src);
         
         ActionTestingSupport.assertProceedEvent(event);
-        SubjectCanonicalizationContext sc = prc.getSubcontext(SubjectCanonicalizationContext.class, false);
+        SubjectCanonicalizationContext sc = prc.getSubcontext(SubjectCanonicalizationContext.class);
         assert sc != null;
         Assert.assertEquals(sc.getPrincipalName(), "foo");
     }
@@ -100,7 +100,7 @@ public class SimpleSubjectCanonicalizationTest extends BaseAuthenticationContext
         final Event event = action.execute(src);
         
         ActionTestingSupport.assertProceedEvent(event);
-        SubjectCanonicalizationContext sc = prc.getSubcontext(SubjectCanonicalizationContext.class, false);
+        SubjectCanonicalizationContext sc = prc.getSubcontext(SubjectCanonicalizationContext.class);
         assert sc != null;
         Assert.assertEquals(sc.getPrincipalName(), "foo");
     }
diff --git a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/ValidateRemoteUserTest.java b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/ValidateRemoteUserTest.java
index e399c4528..7c272b553 100644
--- a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/ValidateRemoteUserTest.java
+++ b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/ValidateRemoteUserTest.java
@@ -67,7 +67,7 @@ public class ValidateRemoteUserTest extends BaseAuthenticationContextTest {
     }
 
     @Test public void testMissingUser2() throws ComponentInitializationException {
-        final AuthenticationContext ac = prc.getSubcontext(AuthenticationContext.class, false);
+        final AuthenticationContext ac = prc.getSubcontext(AuthenticationContext.class);
         assert ac != null;
         ac.setAttemptedFlow(authenticationFlows.get(0));
         
@@ -80,7 +80,7 @@ public class ValidateRemoteUserTest extends BaseAuthenticationContextTest {
     @Test public void testUnauthorized() throws ComponentInitializationException {
         getMockHttpServletRequest(action).setRemoteUser("bam");
 
-        final AuthenticationContext ac = prc.getSubcontext(AuthenticationContext.class, false);
+        final AuthenticationContext ac = prc.getSubcontext(AuthenticationContext.class);
         assert ac != null;
         ac.setAttemptedFlow(authenticationFlows.get(0));
         
@@ -93,7 +93,7 @@ public class ValidateRemoteUserTest extends BaseAuthenticationContextTest {
     @Test public void testAuthorized() throws ComponentInitializationException {
         getMockHttpServletRequest(action).setRemoteUser("baz");
         
-        final AuthenticationContext ac = prc.getSubcontext(AuthenticationContext.class, false);
+        final AuthenticationContext ac = prc.getSubcontext(AuthenticationContext.class);
         assert ac != null;
         ac.setAttemptedFlow(authenticationFlows.get(0));
         
@@ -110,7 +110,7 @@ public class ValidateRemoteUserTest extends BaseAuthenticationContextTest {
     @Test public void testDenyist() throws ComponentInitializationException {
         getMockHttpServletRequest(action).setRemoteUser("foo");
 
-        final AuthenticationContext ac = prc.getSubcontext(AuthenticationContext.class, false);
+        final AuthenticationContext ac = prc.getSubcontext(AuthenticationContext.class);
         assert ac != null;
         ac.setAttemptedFlow(authenticationFlows.get(0));
         
@@ -123,7 +123,7 @@ public class ValidateRemoteUserTest extends BaseAuthenticationContextTest {
     @Test public void testPattern() throws ComponentInitializationException {
         getMockHttpServletRequest(action).setRemoteUser("ban");
 
-        final AuthenticationContext ac = prc.getSubcontext(AuthenticationContext.class, false);
+        final AuthenticationContext ac = prc.getSubcontext(AuthenticationContext.class);
         assert ac != null;
         ac.setAttemptedFlow(authenticationFlows.get(0));
         
diff --git a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/ValidateUserAgentAddressTest.java b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/ValidateUserAgentAddressTest.java
index 909459f86..aa5e0032d 100644
--- a/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/ValidateUserAgentAddressTest.java
+++ b/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/ValidateUserAgentAddressTest.java
@@ -78,7 +78,7 @@ public class ValidateUserAgentAddressTest extends BaseAuthenticationContextTest
     @Test public void testMissingAddress2() throws ComponentInitializationException {
         getMockHttpServletRequest(action).setRemoteAddr((String) nullObj);
 
-        final AuthenticationContext ac = prc.getSubcontext(AuthenticationContext.class, false);
+        final AuthenticationContext ac = prc.getSubcontext(AuthenticationContext.class);
         assert ac != null;
         ac.setAttemptedFlow(authenticationFlows.get(0));
         
@@ -89,7 +89,7 @@ public class ValidateUserAgentAddressTest extends BaseAuthenticationContextTest
     }
 
     @Test public void testUnauthorized() throws ComponentInitializationException {
-        final AuthenticationContext ac = prc.getSubcontext(AuthenticationContext.class, false);
+        final AuthenticationContext ac = prc.getSubcontext(AuthenticationContext.class);
         assert ac != null;
         ac.setAttemptedFlow(authenticationFlows.get(0));
         
@@ -102,7 +102,7 @@ public class ValidateUserAgentAddressTest extends BaseAuthenticationContextTest
     @Test public void testIncompatible() throws ComponentInitializationException {
         getMockHttpServletRequest(action).setRemoteAddr("192.168.1.1");
 
-        final AuthenticationContext ac = prc.getSubcontext(AuthenticationContext.class, false);
+        final AuthenticationContext ac = prc.getSubcontext(AuthenticationContext.class);
         assert ac != null;
         ac.setAttemptedFlow(authenticationFlows.get(0));
         
@@ -122,7 +122,7 @@ public class ValidateUserAgentAddressTest extends BaseAuthenticationContextTest
     @Test public void testCompatible() throws ComponentInitializationException {
         getMockHttpServletRequest(action).setRemoteAddr("192.168.1.1");
 
-        final AuthenticationContext ac = prc.getSubcontext(AuthenticationContext.class, false);
+        final AuthenticationContext ac = prc.getSubcontext(AuthenticationContext.class);
         assert ac != null;
         ac.setAttemptedFlow(authenticationFlows.get(0));
         
diff --git a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/c14n/actions/TestAfterC14N.java b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/c14n/actions/TestAfterC14N.java
index f17dbc158..9e78743dd 100644
--- a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/c14n/actions/TestAfterC14N.java
+++ b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/c14n/actions/TestAfterC14N.java
@@ -35,7 +35,7 @@ public class TestAfterC14N extends AbstractProfileAction {
     protected void doExecute(
             @Nonnull final ProfileRequestContext profileRequestContext) {
         
-        SubjectCanonicalizationContext scc = profileRequestContext.getSubcontext(SubjectCanonicalizationContext.class, false);
+        SubjectCanonicalizationContext scc = profileRequestContext.getSubcontext(SubjectCanonicalizationContext.class);
         assert scc != null;
         SubjectContext sc = profileRequestContext.getOrCreateSubcontext(SubjectContext.class);
         
diff --git a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/LoginFlowTest.java b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/LoginFlowTest.java
index b53d96611..72779657d 100644
--- a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/LoginFlowTest.java
+++ b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/LoginFlowTest.java
@@ -153,6 +153,7 @@ public class LoginFlowTest extends AbstractFlowTest {
         final FlowExecutionOutcome outcome = result.getOutcome();
         assertEquals(outcome.getId(), "RedirectToService");
         final String ticketId = getTicketIdFromUrl(externalContext.getExternalRedirectUrl());
+        assert ticketId!=null;
         final Ticket st = ticketService.removeServiceTicket(ticketId);
         assert st!=null;
         final String sid = st.getSessionId();
@@ -184,6 +185,7 @@ public class LoginFlowTest extends AbstractFlowTest {
         assertTrue(matcher.find());
         assertEquals(1, matcher.groupCount());
         final String ticketId = matcher.group(1);
+        assert ticketId!=null;
         final Ticket st = ticketService.removeServiceTicket(ticketId);
         assert st!=null;
         final String sid = st.getSessionId();
@@ -209,6 +211,7 @@ public class LoginFlowTest extends AbstractFlowTest {
         final FlowExecutionOutcome outcome = result.getOutcome();
         assertEquals(result.getOutcome().getId(), "RedirectToService");
         final String ticketId = getTicketIdFromUrl(externalContext.getExternalRedirectUrl());
+        assert ticketId!=null;
         final Ticket st = ticketService.removeServiceTicket(ticketId);
         assert st!=null;
         final String sid = st.getSessionId();
@@ -221,7 +224,7 @@ public class LoginFlowTest extends AbstractFlowTest {
         final ProfileRequestContext prc = (ProfileRequestContext) outcome.getOutput().get(END_STATE_OUTPUT_ATTR_NAME);
         assertNotNull(prc);
         assertNotNull(prc.getSubcontext(SubjectContext.class));
-        assertNotNull(prc.getSubcontext(ConsentContext.class, false));
+        assertNotNull(prc.getSubcontext(ConsentContext.class));
     }
 
     @Test
@@ -238,6 +241,7 @@ public class LoginFlowTest extends AbstractFlowTest {
         final FlowExecutionOutcome outcome = result.getOutcome();
         assertEquals(outcome.getId(), "RedirectToService");
         final String ticketId = getTicketIdFromUrl(externalContext.getExternalRedirectUrl());
+        assert ticketId!=null;
         final Ticket st = ticketService.removeServiceTicket(ticketId);
         assert st!=null;
         final String sid = st.getSessionId();
@@ -265,6 +269,7 @@ public class LoginFlowTest extends AbstractFlowTest {
         final FlowExecutionOutcome outcome = result.getOutcome();
         assertEquals(outcome.getId(), "RedirectToService");
         final String ticketId = getTicketIdFromUrl(externalContext.getExternalRedirectUrl());
+        assert ticketId!=null;
         final Ticket st = ticketService.removeServiceTicket(ticketId);
         assert st!=null;
         final String sid = st.getSessionId();
@@ -310,9 +315,9 @@ public class LoginFlowTest extends AbstractFlowTest {
 
     private void assertPopulatedAttributeContext(final ProfileRequestContext prc) {
         assertNotNull(prc);
-        final RelyingPartyContext rpc = prc.getSubcontext(RelyingPartyContext.class, false);
+        final RelyingPartyContext rpc = prc.getSubcontext(RelyingPartyContext.class);
         assert rpc!=null;
-        final AttributeContext ac= rpc.getSubcontext(AttributeContext.class, false);
+        final AttributeContext ac= rpc.getSubcontext(AttributeContext.class);
         assert ac!=null;
         assertFalse(ac.getUnfilteredIdPAttributes().isEmpty());
     }
diff --git a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/SamlValidateFlowTest.java b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/SamlValidateFlowTest.java
index cab85beca..44c1ef325 100644
--- a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/SamlValidateFlowTest.java
+++ b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/SamlValidateFlowTest.java
@@ -192,9 +192,9 @@ public class SamlValidateFlowTest extends AbstractFlowTest {
 
     private void assertPopulatedAttributeContext(final ProfileRequestContext prc) {
         assertNotNull(prc);
-        final RelyingPartyContext rpc = prc.getSubcontext(RelyingPartyContext.class, false);
+        final RelyingPartyContext rpc = prc.getSubcontext(RelyingPartyContext.class);
         assert rpc!=null;;
-        final AttributeContext ac= rpc.getSubcontext(AttributeContext.class, false);
+        final AttributeContext ac= rpc.getSubcontext(AttributeContext.class);
         assert ac!=null;
         assertFalse(ac.getUnfilteredIdPAttributes().isEmpty());
     }
diff --git a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/ServiceValidateFlowTest.java b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/ServiceValidateFlowTest.java
index 24495c714..8ea01684b 100644
--- a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/ServiceValidateFlowTest.java
+++ b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/ServiceValidateFlowTest.java
@@ -363,9 +363,9 @@ public class ServiceValidateFlowTest extends AbstractFlowTest {
 
     private void assertPopulatedAttributeContext(final ProfileRequestContext prc) {
         assertNotNull(prc);
-        final RelyingPartyContext rpc = prc.getSubcontext(RelyingPartyContext.class, false);
+        final RelyingPartyContext rpc = prc.getSubcontext(RelyingPartyContext.class);
         assert rpc != null;
-        final AttributeContext ac= rpc.getSubcontext(AttributeContext.class, false);
+        final AttributeContext ac= rpc.getSubcontext(AttributeContext.class);
         assert ac!=null;
         assertFalse(ac.getUnfilteredIdPAttributes().isEmpty());
     }
diff --git a/idp-consent-impl/src/main/java/net/shibboleth/idp/consent/logic/impl/FlowIdLookupFunction.java b/idp-consent-impl/src/main/java/net/shibboleth/idp/consent/logic/impl/FlowIdLookupFunction.java
index ec2f60fc8..0a5b2f25f 100644
--- a/idp-consent-impl/src/main/java/net/shibboleth/idp/consent/logic/impl/FlowIdLookupFunction.java
+++ b/idp-consent-impl/src/main/java/net/shibboleth/idp/consent/logic/impl/FlowIdLookupFunction.java
@@ -44,7 +44,7 @@ public class FlowIdLookupFunction implements ContextDataLookupFunction<ProfileRe
             return null;
         }
 
-        final SpringRequestContext springRequestContext = input.getSubcontext(SpringRequestContext.class, false);
+        final SpringRequestContext springRequestContext = input.getSubcontext(SpringRequestContext.class);
         if (springRequestContext == null) {
             return null;
         }
diff --git a/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/flow/ar/impl/InitializeAttributeReleaseContextTest.java b/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/flow/ar/impl/InitializeAttributeReleaseContextTest.java
index d3ed1590f..9e9a486ea 100644
--- a/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/flow/ar/impl/InitializeAttributeReleaseContextTest.java
+++ b/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/flow/ar/impl/InitializeAttributeReleaseContextTest.java
@@ -53,6 +53,6 @@ public class InitializeAttributeReleaseContextTest {
 
         ActionTestingSupport.assertProceedEvent(event);
 
-        Assert.assertNotNull(prc.getSubcontext(AttributeReleaseContext.class, false));
+        Assert.assertNotNull(prc.getSubcontext(AttributeReleaseContext.class));
     }
 }
diff --git a/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/flow/ar/impl/PopulateAttributeReleaseContextTest.java b/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/flow/ar/impl/PopulateAttributeReleaseContextTest.java
index 0182dda5f..a73f91b7d 100644
--- a/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/flow/ar/impl/PopulateAttributeReleaseContextTest.java
+++ b/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/flow/ar/impl/PopulateAttributeReleaseContextTest.java
@@ -64,7 +64,7 @@ public class PopulateAttributeReleaseContextTest extends AbstractAttributeReleas
 
         ActionTestingSupport.assertProceedEvent(event);
 
-        final AttributeReleaseContext arc = prc.getSubcontext(AttributeReleaseContext.class, false);
+        final AttributeReleaseContext arc = prc.getSubcontext(AttributeReleaseContext.class);
         assert arc!= null;
         Assert.assertEquals(arc.getConsentableAttributes(), ConsentTestingSupport.newAttributeMap());
     }
@@ -78,7 +78,7 @@ public class PopulateAttributeReleaseContextTest extends AbstractAttributeReleas
 
         ActionTestingSupport.assertProceedEvent(event);
 
-        final AttributeReleaseContext arc = prc.getSubcontext(AttributeReleaseContext.class, false);
+        final AttributeReleaseContext arc = prc.getSubcontext(AttributeReleaseContext.class);
         assert arc!= null;
         Assert.assertNotEquals(arc.getConsentableAttributes(), ConsentTestingSupport.newAttributeMap());
         Assert.assertTrue(arc.getConsentableAttributes().containsKey("attribute1"));
@@ -99,7 +99,7 @@ public class PopulateAttributeReleaseContextTest extends AbstractAttributeReleas
 
         ActionTestingSupport.assertProceedEvent(event);
 
-        final AttributeReleaseContext arc = prc.getSubcontext(AttributeReleaseContext.class, false);
+        final AttributeReleaseContext arc = prc.getSubcontext(AttributeReleaseContext.class);
         assert arc!= null;
         Assert.assertEquals(arc.getConsentableAttributes(), orderedAttributes);
     }
@@ -121,7 +121,7 @@ public class PopulateAttributeReleaseContextTest extends AbstractAttributeReleas
 
         ActionTestingSupport.assertProceedEvent(event);
 
-        final AttributeReleaseContext arc = prc.getSubcontext(AttributeReleaseContext.class, false);
+        final AttributeReleaseContext arc = prc.getSubcontext(AttributeReleaseContext.class);
         assert arc!= null;
         Assert.assertEquals(arc.getConsentableAttributes(), orderedAttributes);
     }
diff --git a/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/flow/impl/ExtractConsentTest.java b/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/flow/impl/ExtractConsentTest.java
index 5c4f48a46..985e36ccc 100644
--- a/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/flow/impl/ExtractConsentTest.java
+++ b/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/flow/impl/ExtractConsentTest.java
@@ -35,7 +35,7 @@ import net.shibboleth.shared.testing.ConstantSupplier;
 public class ExtractConsentTest extends AbstractConsentActionTest {
 
     @BeforeMethod public void setUpCurrentConsents() throws Exception {
-        final ConsentContext consentContext = prc.getSubcontext(ConsentContext.class, false);
+        final ConsentContext consentContext = prc.getSubcontext(ConsentContext.class);
         assert consentContext!= null;
         consentContext.getCurrentConsents().putAll(ConsentTestingSupport.newConsentMap());
     }
@@ -48,7 +48,7 @@ public class ExtractConsentTest extends AbstractConsentActionTest {
 
         ActionTestingSupport.assertEvent(event, EventIds.INVALID_PROFILE_CTX);
 
-        final ConsentContext consentContext = prc.getSubcontext(ConsentContext.class, false);
+        final ConsentContext consentContext = prc.getSubcontext(ConsentContext.class);
         assert consentContext!= null;
         final Consent consent1 = consentContext.getCurrentConsents().get("consent1");
         final Consent consent2 = consentContext.getCurrentConsents().get("consent2");
@@ -68,7 +68,7 @@ public class ExtractConsentTest extends AbstractConsentActionTest {
 
         ActionTestingSupport.assertProceedEvent(event);
 
-        final ConsentContext consentContext = prc.getSubcontext(ConsentContext.class, false);
+        final ConsentContext consentContext = prc.getSubcontext(ConsentContext.class);
         assert consentContext!= null;
         final Consent consent1 = consentContext.getCurrentConsents().get("consent1");
         final Consent consent2 = consentContext.getCurrentConsents().get("consent2");
@@ -90,7 +90,7 @@ public class ExtractConsentTest extends AbstractConsentActionTest {
 
         ActionTestingSupport.assertProceedEvent(event);
 
-        final ConsentContext consentContext = prc.getSubcontext(ConsentContext.class, false);
+        final ConsentContext consentContext = prc.getSubcontext(ConsentContext.class);
         assert consentContext!= null;
         final Consent consent1 = consentContext.getCurrentConsents().get("consent1");
         final Consent consent2 = consentContext.getCurrentConsents().get("consent2");
@@ -113,7 +113,7 @@ public class ExtractConsentTest extends AbstractConsentActionTest {
 
         ActionTestingSupport.assertProceedEvent(event);
 
-        final ConsentContext consentContext = prc.getSubcontext(ConsentContext.class, false);
+        final ConsentContext consentContext = prc.getSubcontext(ConsentContext.class);
         assert consentContext!= null;
         final Consent consent1 = consentContext.getCurrentConsents().get("consent1");
         final Consent consent2 = consentContext.getCurrentConsents().get("consent2");
diff --git a/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/flow/impl/InitializeConsentContextTest.java b/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/flow/impl/InitializeConsentContextTest.java
index fe706e8de..8b9daa016 100644
--- a/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/flow/impl/InitializeConsentContextTest.java
+++ b/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/flow/impl/InitializeConsentContextTest.java
@@ -53,6 +53,6 @@ public class InitializeConsentContextTest {
 
         ActionTestingSupport.assertProceedEvent(event);
 
-        Assert.assertNotNull(prc.getSubcontext(ConsentContext.class, false));
+        Assert.assertNotNull(prc.getSubcontext(ConsentContext.class));
     }
 }
diff --git a/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/flow/impl/PopulateConsentContextTest.java b/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/flow/impl/PopulateConsentContextTest.java
index e2c1ffc13..f96f241c5 100644
--- a/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/flow/impl/PopulateConsentContextTest.java
+++ b/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/flow/impl/PopulateConsentContextTest.java
@@ -53,7 +53,7 @@ public class PopulateConsentContextTest extends AbstractConsentActionTest {
 
         ActionTestingSupport.assertProceedEvent(event);
 
-        final ConsentContext consentContext = prc.getSubcontext(ConsentContext.class, false);
+        final ConsentContext consentContext = prc.getSubcontext(ConsentContext.class);
         assert consentContext!= null;
         Assert.assertEquals(consentContext.getCurrentConsents(), ConsentTestingSupport.newConsentMap());
     }
diff --git a/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/flow/storage/impl/CreateGlobalConsentResultTest.java b/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/flow/storage/impl/CreateGlobalConsentResultTest.java
index 5a98b23e4..dcd107318 100644
--- a/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/flow/storage/impl/CreateGlobalConsentResultTest.java
+++ b/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/flow/storage/impl/CreateGlobalConsentResultTest.java
@@ -46,7 +46,7 @@ public class CreateGlobalConsentResultTest extends AbstractConsentIndexedStorage
 
         ActionTestingSupport.assertProceedEvent(event);
 
-        final ProfileInterceptorContext pic = prc.getSubcontext(ProfileInterceptorContext.class, false);
+        final ProfileInterceptorContext pic = prc.getSubcontext(ProfileInterceptorContext.class);
         assert pic!=null;
         Assert.assertEquals(pic.getResults().size(), 0);
 
diff --git a/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/flow/storage/impl/CreateResultTest.java b/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/flow/storage/impl/CreateResultTest.java
index d4eb472b4..923d0d15f 100644
--- a/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/flow/storage/impl/CreateResultTest.java
+++ b/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/flow/storage/impl/CreateResultTest.java
@@ -74,7 +74,7 @@ public class CreateResultTest extends AbstractConsentIndexedStorageActionTest {
 
         ActionTestingSupport.assertProceedEvent(event);
 
-        final ProfileInterceptorContext pic = prc.getSubcontext(ProfileInterceptorContext.class, false);
+        final ProfileInterceptorContext pic = prc.getSubcontext(ProfileInterceptorContext.class);
         assert pic!=null;
         Assert.assertEquals(pic.getResults().size(), 0);
 
@@ -94,7 +94,7 @@ public class CreateResultTest extends AbstractConsentIndexedStorageActionTest {
 
         ActionTestingSupport.assertProceedEvent(event);
 
-        final ProfileInterceptorContext pic = prc.getSubcontext(ProfileInterceptorContext.class, false);
+        final ProfileInterceptorContext pic = prc.getSubcontext(ProfileInterceptorContext.class);
         assert pic!=null;
         Assert.assertEquals(pic.getResults().size(), 0);
 
@@ -130,7 +130,7 @@ public class CreateResultTest extends AbstractConsentIndexedStorageActionTest {
         ActionTestingSupport.assertProceedEvent(action.execute(src));
         ActionTestingSupport.assertProceedEvent(action.execute(src));
 
-        final ProfileInterceptorContext pic = prc.getSubcontext(ProfileInterceptorContext.class, false);
+        final ProfileInterceptorContext pic = prc.getSubcontext(ProfileInterceptorContext.class);
         assert pic!=null;
         Assert.assertEquals(pic.getResults().size(), 0);
 
diff --git a/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/logic/impl/FlowIdLookupFunctionTest.java b/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/logic/impl/FlowIdLookupFunctionTest.java
index 7e94dd07d..3571d22ce 100644
--- a/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/logic/impl/FlowIdLookupFunctionTest.java
+++ b/idp-consent-impl/src/test/java/net/shibboleth/idp/consent/logic/impl/FlowIdLookupFunctionTest.java
@@ -54,7 +54,7 @@ public class FlowIdLookupFunctionTest {
     }
 
     @Test public void testNullWebFlowRequestContext() {
-        prc.getSubcontext(SpringRequestContext.class, true);
+        prc.getOrCreateSubcontext(SpringRequestContext.class);
         final SpringRequestContext context = prc.getSubcontext(SpringRequestContext.class);
         assert context != null;
         Assert.assertNull(context.getRequestContext());
@@ -70,7 +70,7 @@ public class FlowIdLookupFunctionTest {
     }
 
     @Test public void testFlowId() {
-        final SpringRequestContext context = prc.getSubcontext(SpringRequestContext.class, true);
+        final SpringRequestContext context = prc.getOrCreateSubcontext(SpringRequestContext.class);
         assert context != null;
         context.setRequestContext(src);
         final SpringRequestContext ctx2 = prc.getSubcontext(SpringRequestContext.class);
diff --git a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/AbstractProfileAction.java b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/AbstractProfileAction.java
index bdfb717bf..dd10c497f 100644
--- a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/AbstractProfileAction.java
+++ b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/AbstractProfileAction.java
@@ -181,7 +181,7 @@ public abstract class AbstractProfileAction
             @Nonnull final ProfileRequestContext profileRequestContext) {
         
         // Check for an EventContext on output.
-        final EventContext eventCtx = profileRequestContext.getSubcontext(EventContext.class, false);
+        final EventContext eventCtx = profileRequestContext.getSubcontext(EventContext.class);
         if (eventCtx != null) {
             final Object event = eventCtx.getEvent();
             
diff --git a/idp-profile-impl/src/test/java/net/shibboleth/idp/profile/impl/AbstractProfileActionTest.java b/idp-profile-impl/src/test/java/net/shibboleth/idp/profile/impl/AbstractProfileActionTest.java
index 82dc52df8..62f92a657 100644
--- a/idp-profile-impl/src/test/java/net/shibboleth/idp/profile/impl/AbstractProfileActionTest.java
+++ b/idp-profile-impl/src/test/java/net/shibboleth/idp/profile/impl/AbstractProfileActionTest.java
@@ -125,7 +125,7 @@ public class AbstractProfileActionTest {
 
             executed = true;
             
-            final PreviousEventContext<?> prevCtx = profileRequestContext.getSubcontext(PreviousEventContext.class, false);
+            final PreviousEventContext<?> prevCtx = profileRequestContext.getSubcontext(PreviousEventContext.class);
             if (prevEvent != null) {
                 if (prevCtx == null || !prevEvent.equals(prevCtx.getEvent())) {
                     org.opensaml.profile.action.ActionSupport.buildEvent(profileRequestContext, "InvalidPreviousEvent");
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/authn/impl/tests/FinalizeAuthenticationTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/authn/impl/tests/FinalizeAuthenticationTest.java
index 0a110d480..cc662d639 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/authn/impl/tests/FinalizeAuthenticationTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/authn/impl/tests/FinalizeAuthenticationTest.java
@@ -198,7 +198,7 @@ public class FinalizeAuthenticationTest extends OpenSAMLInitBaseTestCase {
         Assert.assertEquals(sc.getAuthenticationResults().size(), 1);
         
         prc.removeSubcontext(SubjectContext.class);
-        authCtx.getSubcontext(RequestedPrincipalContext.class, true);
+        authCtx.getOrCreateSubcontext(RequestedPrincipalContext.class);
         
         event = action.execute(src);
         
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 77ce4be2c..14e8a8192 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
@@ -74,7 +74,7 @@ public class FilterAttributesTest {
      * @throws Exception if something goes wrong
      */
     @Test public void testNoAttributeContext() throws Exception {
-        prc.getSubcontext(SubjectContext.class, true);
+        prc.getOrCreateSubcontext(SubjectContext.class);
 
         final AttributeFilterImpl engine = new AttributeFilterImpl("test", Collections.emptyList());
         engine.initialize();
@@ -92,7 +92,7 @@ public class FilterAttributesTest {
      * @throws Exception if something goes wrong
      */
     @Test public void testNoAttributes() throws Exception {
-        prc.getSubcontext(SubjectContext.class, true);
+        prc.getOrCreateSubcontext(SubjectContext.class);
 
         final RelyingPartyContext rpCtx = prc.getSubcontext(RelyingPartyContext.class);
         assert rpCtx!= null;
@@ -142,7 +142,7 @@ public class FilterAttributesTest {
         attribute1Matcher.initialize();
         engine.initialize();
 
-        prc.getSubcontext(SubjectContext.class, true);
+        prc.getOrCreateSubcontext(SubjectContext.class);
 
         final AttributeContext attributeCtx = new AttributeContext();
         attributeCtx.setIdPAttributes(attributes);
@@ -206,7 +206,7 @@ public class FilterAttributesTest {
         attribute1Matcher.initialize();
         engine.initialize();
 
-        prc.getSubcontext(SubjectContext.class, true);
+        prc.getOrCreateSubcontext(SubjectContext.class);
 
         final AttributeContext attributeCtx = new AttributeContext();
         attributeCtx.setIdPAttributes(attributes);
@@ -269,7 +269,7 @@ public class FilterAttributesTest {
         attribute1Matcher.initialize();
         engine.initialize();
 
-        prc.getSubcontext(SubjectContext.class, true);
+        prc.getOrCreateSubcontext(SubjectContext.class);
 
         final AttributeContext attributeCtx = new AttributeContext();
         attributeCtx.setIdPAttributes(attributes);
@@ -297,7 +297,7 @@ public class FilterAttributesTest {
         final IdPAttribute attribute1 = new MockUncloneableAttribute("attribute1");
         attribute1.setValues(Arrays.asList(new StringAttributeValue("one"), new StringAttributeValue("two")));
 
-        prc.getSubcontext(SubjectContext.class, true);
+        prc.getOrCreateSubcontext(SubjectContext.class);
 
         final AttributeContext attributeCtx = new AttributeContext();
         final List<IdPAttribute> attributes = Collections.singletonList(attribute1);
@@ -326,7 +326,7 @@ public class FilterAttributesTest {
          * 
          * @param attributeId ...
          */
-        public MockUncloneableAttribute(String attributeId) {
+        public MockUncloneableAttribute(@Nonnull String attributeId) {
             super(attributeId);
         }
 
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/profile/impl/tests/ResolveAttributesTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/profile/impl/tests/ResolveAttributesTest.java
index 79574b397..62ffdf5ff 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/profile/impl/tests/ResolveAttributesTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/profile/impl/tests/ResolveAttributesTest.java
@@ -75,7 +75,7 @@ public class ResolveAttributesTest {
      * @throws Exception if something goes wrong
      */
     @Test public void testResolveAttributes() throws Exception {
-        prc.getSubcontext(SubjectContext.class, true);
+        prc.getOrCreateSubcontext(SubjectContext.class);
 
         final IdPAttribute attribute = new IdPAttribute("ad1");
         attribute.setValues(CollectionSupport.singletonList(new StringAttributeValue("value1")));
@@ -116,7 +116,7 @@ public class ResolveAttributesTest {
      * @throws Exception if something goes wrong
      */
     @Test public void testResolveSpecificAttributes() throws Exception {
-        prc.getSubcontext(SubjectContext.class, true);
+        prc.getOrCreateSubcontext(SubjectContext.class);
 
         final IdPAttribute attribute = new IdPAttribute("ad1");
         attribute.setValues(CollectionSupport.singletonList(new StringAttributeValue("value1")));
@@ -156,7 +156,7 @@ public class ResolveAttributesTest {
         // now test requesting an attribute that does not exist
         src = new RequestContextBuilder().buildRequestContext();
         prc = new WebflowRequestContextProfileRequestContextLookup().apply(src);
-        prc.getSubcontext(SubjectContext.class, true);
+        prc.getOrCreateSubcontext(SubjectContext.class);
 
         attributeResolutionCtx = new AttributeResolutionContext();
         attributeResolutionCtx.setRequestedIdPAttributeNames(CollectionSupport.singleton("dne"));
@@ -181,7 +181,7 @@ public class ResolveAttributesTest {
      * @throws Exception if something goes wrong
      */
     @Test public void testUnableToResolveAttributes() throws Exception {
-        prc.getSubcontext(SubjectContext.class, true);
+        prc.getOrCreateSubcontext(SubjectContext.class);
 
         final IdPAttribute attribute = new IdPAttribute("ad1");
         attribute.setValues(CollectionSupport.singletonList(new StringAttributeValue("value1")));
@@ -211,7 +211,7 @@ public class ResolveAttributesTest {
      * @throws Exception if something goes wrong
      */
     @Test public void testUnableToFindResolver() throws Exception {
-        prc.getSubcontext(SubjectContext.class, true);
+        prc.getOrCreateSubcontext(SubjectContext.class);
 
         final IdPAttribute attribute = new IdPAttribute("ad1");
         attribute.setValues(CollectionSupport.singletonList(new StringAttributeValue("value1")));
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/NameIDCanonicalizationTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/NameIDCanonicalizationTest.java
index c7722908d..b9188125f 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/NameIDCanonicalizationTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/NameIDCanonicalizationTest.java
@@ -205,7 +205,7 @@ public class NameIDCanonicalizationTest extends OpenSAMLInitBaseTestCase {
 
         action.execute(prc);
         ActionTestingSupport.assertProceedEvent(prc);
-        SubjectCanonicalizationContext sc = prc.getSubcontext(SubjectCanonicalizationContext.class, false);
+        SubjectCanonicalizationContext sc = prc.getSubcontext(SubjectCanonicalizationContext.class);
         assert sc!=null;
         Assert.assertEquals(sc.getPrincipalName(), VALUE_PREFIX + "works");
     }
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/NameIdentifierCanonicalizationTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/NameIdentifierCanonicalizationTest.java
index 51e943bb2..58189bcc2 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/NameIdentifierCanonicalizationTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/nameid/impl/NameIdentifierCanonicalizationTest.java
@@ -17,19 +17,12 @@
 
 package net.shibboleth.idp.saml.nameid.impl;
 
-import java.util.Arrays;
 import java.util.List;
 
+import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.security.auth.Subject;
 
-import net.shibboleth.idp.authn.AuthnEventIds;
-import net.shibboleth.idp.authn.context.SubjectCanonicalizationContext;
-import net.shibboleth.idp.authn.principal.UsernamePrincipal;
-import net.shibboleth.idp.saml.authn.principal.NameIdentifierPrincipal;
-import net.shibboleth.idp.saml.nameid.NameIDCanonicalizationFlowDescriptor;
-import net.shibboleth.idp.saml.nameid.NameIdentifierDecoder;
-
 import org.opensaml.core.testing.OpenSAMLInitBaseTestCase;
 import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
 import org.opensaml.profile.context.ProfileRequestContext;
@@ -41,6 +34,16 @@ import org.testng.annotations.BeforeClass;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
+import net.shibboleth.idp.authn.AuthnEventIds;
+import net.shibboleth.idp.authn.context.SubjectCanonicalizationContext;
+import net.shibboleth.idp.authn.principal.UsernamePrincipal;
+import net.shibboleth.idp.saml.authn.principal.NameIdentifierPrincipal;
+import net.shibboleth.idp.saml.nameid.NameIDCanonicalizationFlowDescriptor;
+import net.shibboleth.idp.saml.nameid.NameIdentifierDecoder;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.collection.CollectionSupport;
+
+
 /** {@link NameIdentifierCanonicalization} unit test. */
 @SuppressWarnings("javadoc")
 public class NameIdentifierCanonicalizationTest extends OpenSAMLInitBaseTestCase {
@@ -53,13 +56,13 @@ public class NameIdentifierCanonicalizationTest extends OpenSAMLInitBaseTestCase
 
     private SAMLObjectBuilder<NameIdentifier> builder;
 
-    private static final String REQUESTER = "TestRequest";
+    @Nonnull private static final String REQUESTER = "TestRequest";
 
-    private static final String RESPONDER = "TestResp";
+    @Nonnull private static final String RESPONDER = "TestResp";
 
-    private static final String VALUE_PREFIX = "TestPrefix";
+    @Nonnull private static final String VALUE_PREFIX = "TestPrefix";
 
-    private static final List<String> formats = Arrays.asList(NameIdentifier.X509_SUBJECT, NameIdentifier.EMAIL, null);
+    @Nonnull @NotEmpty private static final List<String> formats = CollectionSupport.arrayAsList(NameIdentifier.X509_SUBJECT, NameIdentifier.EMAIL, null);
 
     @BeforeClass public void initialize() {
         builder = (SAMLObjectBuilder<NameIdentifier>)
@@ -77,7 +80,7 @@ public class NameIdentifierCanonicalizationTest extends OpenSAMLInitBaseTestCase
         
         action = new NameIdentifierCanonicalization();
         action.setDecoder(new NameIdentifierDecoder() {
-            public String decode(SubjectCanonicalizationContext scc, NameIdentifier nameIdentifier) {
+            public String decode(@Nonnull SubjectCanonicalizationContext scc, @Nonnull NameIdentifier nameIdentifier) {
                 if (RESPONDER.equals(scc.getResponderId()) && REQUESTER.equals(scc.getRequesterId())) {
                     return VALUE_PREFIX + nameIdentifier.getValue();
                 }
@@ -101,7 +104,7 @@ public class NameIdentifierCanonicalizationTest extends OpenSAMLInitBaseTestCase
         scc.setAttemptedFlow(flowDescriptor);
     }
 
-    private NameIdentifier nameId(String value, String format, String nameQualifier) {
+    @Nonnull private NameIdentifier nameId(String value, String format, String nameQualifier) {
 
         final NameIdentifier id = builder.buildObject();
 
@@ -111,14 +114,16 @@ public class NameIdentifierCanonicalizationTest extends OpenSAMLInitBaseTestCase
         return id;
     }
     
-    private NameIdentifier nameId(String value, String format) {
+    @Nonnull private NameIdentifier nameId(String value, String format) {
 
         return nameId(value, format, RESPONDER);
     }
 
     @Test public void testNoContext() {
+        assert prc!=null;
         action.execute(prc);
 
+        assert prc!=null;
         ActionTestingSupport.assertEvent(prc, AuthnEventIds.INVALID_SUBJECT_C14N_CTX);
     }
 
@@ -126,8 +131,10 @@ public class NameIdentifierCanonicalizationTest extends OpenSAMLInitBaseTestCase
         final Subject subject = new Subject();
         setSubContext(subject, null, null);
 
+        assert prc!=null;
         action.execute(prc);
 
+        assert prc!=null;
         ActionTestingSupport.assertEvent(prc, AuthnEventIds.INVALID_SUBJECT);
         final SubjectCanonicalizationContext scc = prc.getSubcontext(SubjectCanonicalizationContext.class);
         assert scc!=null && scc.getException()!=null;
@@ -140,8 +147,10 @@ public class NameIdentifierCanonicalizationTest extends OpenSAMLInitBaseTestCase
 
         setSubContext(subject, null, null);
 
+        assert prc!=null;
         action.execute(prc);
 
+        assert prc!=null;
         ActionTestingSupport.assertEvent(prc, AuthnEventIds.INVALID_SUBJECT);
         final SubjectCanonicalizationContext scc = prc.getSubcontext(SubjectCanonicalizationContext.class);
         assert scc!=null && scc.getException()!=null;
@@ -153,8 +162,10 @@ public class NameIdentifierCanonicalizationTest extends OpenSAMLInitBaseTestCase
 
         setSubContext(subject, RESPONDER, REQUESTER);
 
+        assert prc!=null;
         action.execute(prc);
 
+        assert prc!=null;
         ActionTestingSupport.assertEvent(prc, AuthnEventIds.INVALID_SUBJECT);
         final SubjectCanonicalizationContext scc = prc.getSubcontext(SubjectCanonicalizationContext.class);
         assert scc!=null && scc.getException()!=null;
@@ -165,8 +176,10 @@ public class NameIdentifierCanonicalizationTest extends OpenSAMLInitBaseTestCase
         subject.getPrincipals().add(new NameIdentifierPrincipal(nameId("value", NameIdentifier.EMAIL)));
         setSubContext(subject, RESPONDER, RESPONDER);
 
+        assert prc!=null;
         action.execute(prc);
 
+        assert prc!=null;
         ActionTestingSupport.assertEvent(prc, AuthnEventIds.INVALID_SUBJECT);
     }
 
@@ -175,8 +188,10 @@ public class NameIdentifierCanonicalizationTest extends OpenSAMLInitBaseTestCase
         subject.getPrincipals().add(new NameIdentifierPrincipal(nameId("value", NameIdentifier.EMAIL)));
         setSubContext(subject, REQUESTER, REQUESTER);
 
+        assert prc!=null;
         action.execute(prc);
 
+        assert prc!=null;
         ActionTestingSupport.assertEvent(prc, AuthnEventIds.INVALID_SUBJECT);
     }
     
@@ -185,8 +200,10 @@ public class NameIdentifierCanonicalizationTest extends OpenSAMLInitBaseTestCase
         subject.getPrincipals().add(new NameIdentifierPrincipal(nameId("value", NameIdentifier.EMAIL, REQUESTER)));
         setSubContext(subject, REQUESTER, REQUESTER);
 
+        assert prc!=null;
         action.execute(prc);
 
+        assert prc!=null;
         ActionTestingSupport.assertEvent(prc, AuthnEventIds.INVALID_SUBJECT);
     }
 
@@ -197,10 +214,12 @@ public class NameIdentifierCanonicalizationTest extends OpenSAMLInitBaseTestCase
         subject.getPrincipals().add(new NameIdentifierPrincipal(nameId("works", NameIdentifier.EMAIL)));
         setSubContext(subject, RESPONDER, REQUESTER);
 
+        assert prc!=null;
         action.execute(prc);
 
+        assert prc!=null;
         ActionTestingSupport.assertProceedEvent(prc);
-        SubjectCanonicalizationContext sc = prc.getSubcontext(SubjectCanonicalizationContext.class, false);
+        SubjectCanonicalizationContext sc = prc.getSubcontext(SubjectCanonicalizationContext.class);
         assert sc!=null;
         Assert.assertEquals(sc.getPrincipalName(), VALUE_PREFIX+"works");
     }
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/profile/impl/FinalizeSAMLSubjectCanonicalizationTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/profile/impl/FinalizeSAMLSubjectCanonicalizationTest.java
index e740156dc..f3faf6fee 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/profile/impl/FinalizeSAMLSubjectCanonicalizationTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/profile/impl/FinalizeSAMLSubjectCanonicalizationTest.java
@@ -55,7 +55,7 @@ public class FinalizeSAMLSubjectCanonicalizationTest {
     }
 
     @Test public void testNoPrincipal() {
-        prc.getSubcontext(SubjectCanonicalizationContext.class, true);
+        prc.getOrCreateSubcontext(SubjectCanonicalizationContext.class);
         
         final Event event = action.execute(rc);
         ActionTestingSupport.assertEvent(event, AuthnEventIds.INVALID_SUBJECT_C14N_CTX);
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 69422e7e5..e8e2d12c4 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
@@ -28,17 +28,6 @@ import java.util.List;
 
 import javax.annotation.Nonnull;
 
-import net.shibboleth.profile.config.ProfileConfiguration;
-import net.shibboleth.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.profile.context.navigate.WebflowRequestContextProfileRequestContextLookup;
-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.shared.annotation.constraint.NotEmpty;
-import net.shibboleth.shared.component.ComponentInitializationException;
-import net.shibboleth.shared.logic.FunctionSupport;
-import net.shibboleth.shared.xml.XMLParserException;
-
 import org.opensaml.core.testing.XMLObjectBaseTestCase;
 import org.opensaml.core.xml.io.Unmarshaller;
 import org.opensaml.core.xml.io.UnmarshallingException;
@@ -65,7 +54,17 @@ import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 import org.w3c.dom.Document;
 
-import com.google.common.base.Predicates;
+import net.shibboleth.idp.profile.context.navigate.WebflowRequestContextProfileRequestContextLookup;
+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.component.ComponentInitializationException;
+import net.shibboleth.shared.logic.FunctionSupport;
+import net.shibboleth.shared.logic.PredicateSupport;
+import net.shibboleth.shared.xml.XMLParserException;
 
 /** Unit test for {@link PopulateBindingAndEndpointContexts}. */
 @SuppressWarnings("javadoc")
@@ -143,7 +142,7 @@ public class PopulateBindingAndEndpointContextsTest extends XMLObjectBaseTestCas
     public void testNoBindings() throws ComponentInitializationException {
         final BindingDescriptor binding = new BindingDescriptor();
         binding.setId(SAMLConstants.SAML2_POST_BINDING_URI);
-        binding.setActivationCondition(Predicates.<ProfileRequestContext>alwaysFalse());
+        binding.setActivationCondition(PredicateSupport.<ProfileRequestContext>alwaysFalse());
         binding.initialize();
         final PopulateBindingAndEndpointContexts badaction = new PopulateBindingAndEndpointContexts();
         badaction.setEndpointResolver(new DefaultEndpointResolver<>());
@@ -170,7 +169,7 @@ public class PopulateBindingAndEndpointContextsTest extends XMLObjectBaseTestCas
         
         final SAMLPeerEntityContext pec = omc.getSubcontext(SAMLPeerEntityContext.class);
         assert pec!=null;
-        final SAMLEndpointContext epCtx = pec.getSubcontext(SAMLEndpointContext.class, false);
+        final SAMLEndpointContext epCtx = pec.getSubcontext(SAMLEndpointContext.class);
         assert epCtx!=null;
         final Endpoint ep =epCtx.getEndpoint();
         assert ep!=null;
@@ -414,7 +413,7 @@ public class PopulateBindingAndEndpointContextsTest extends XMLObjectBaseTestCas
         
         final SAMLPeerEntityContext pec = omc.getSubcontext(SAMLPeerEntityContext.class);
         assert pec!=null;
-        final SAMLEndpointContext epCtx = pec.getSubcontext(SAMLEndpointContext.class, false);
+        final SAMLEndpointContext epCtx = pec.getSubcontext(SAMLEndpointContext.class);
         assert epCtx!=null;
         final Endpoint ep =epCtx.getEndpoint();
         assert ep!=null;
@@ -458,7 +457,7 @@ public class PopulateBindingAndEndpointContextsTest extends XMLObjectBaseTestCas
         
         final SAMLPeerEntityContext pec = omc.getSubcontext(SAMLPeerEntityContext.class);
         assert pec!=null;
-        final SAMLEndpointContext epCtx = pec.getSubcontext(SAMLEndpointContext.class, false);
+        final SAMLEndpointContext epCtx = pec.getSubcontext(SAMLEndpointContext.class);
         assert epCtx!=null;
         final Endpoint ep =epCtx.getEndpoint();
         assert ep!=null;
@@ -526,7 +525,7 @@ public class PopulateBindingAndEndpointContextsTest extends XMLObjectBaseTestCas
         
         final SAMLPeerEntityContext pec = omc.getSubcontext(SAMLPeerEntityContext.class);
         assert pec!=null;
-        final SAMLEndpointContext epCtx = pec.getSubcontext(SAMLEndpointContext.class, false);
+        final SAMLEndpointContext epCtx = pec.getSubcontext(SAMLEndpointContext.class);
         assert epCtx!=null;
         final Endpoint ep =epCtx.getEndpoint();
         assert ep!=null;
@@ -565,7 +564,7 @@ public class PopulateBindingAndEndpointContextsTest extends XMLObjectBaseTestCas
         
         final SAMLPeerEntityContext pec = omc.getSubcontext(SAMLPeerEntityContext.class);
         assert pec!=null;
-        final SAMLEndpointContext epCtx = pec.getSubcontext(SAMLEndpointContext.class, false);
+        final SAMLEndpointContext epCtx = pec.getSubcontext(SAMLEndpointContext.class);
         assert epCtx!=null;
         final Endpoint ep =epCtx.getEndpoint();
         assert ep!=null;
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/AddAuthenticationStatementToAssertionTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/AddAuthenticationStatementToAssertionTest.java
index 785024298..c26da29ec 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/AddAuthenticationStatementToAssertionTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml1/profile/impl/AddAuthenticationStatementToAssertionTest.java
@@ -31,7 +31,6 @@ import org.opensaml.saml.saml1.core.AuthenticationStatement;
 import org.opensaml.saml.saml1.core.Response;
 import org.opensaml.storage.StorageSerializer;
 import org.springframework.mock.web.MockHttpServletRequest;
-import org.springframework.mock.web.MockHttpServletResponse;
 import org.springframework.webflow.execution.Event;
 import org.springframework.webflow.execution.RequestContext;
 import org.testng.Assert;
@@ -50,7 +49,6 @@ import net.shibboleth.idp.profile.testing.RequestContextBuilder;
 import net.shibboleth.idp.saml.authn.principal.AuthenticationMethodPrincipal;
 import net.shibboleth.profile.context.RelyingPartyContext;
 import net.shibboleth.shared.component.ComponentInitializationException;
-import net.shibboleth.shared.servlet.impl.HttpServletRequestResponseContext;
 import net.shibboleth.shared.testing.ConstantSupplier;
 
 /** {@link AddAuthenticationStatementToAssertion} unit test. */
@@ -100,7 +98,7 @@ public class AddAuthenticationStatementToAssertionTest extends OpenSAMLInitBaseT
      * @throws Exception if something goes wrong
      */
     @Test public void testNoRelyingPartyContext() throws Exception {
-        prc.getSubcontext(AuthenticationContext.class, true);
+        prc.getOrCreateSubcontext(AuthenticationContext.class);
         prc.removeSubcontext(RelyingPartyContext.class);
 
         final Event event = action.execute(rc);
@@ -127,7 +125,7 @@ public class AddAuthenticationStatementToAssertionTest extends OpenSAMLInitBaseT
      * @throws Exception if something goes wrong
      */
     @Test public void testNoAuthenticationStatement() throws Exception {
-        prc.getSubcontext(AuthenticationContext.class, true);
+        prc.getOrCreateSubcontext(AuthenticationContext.class);
 
         final Event event = action.execute(rc);
         ActionTestingSupport.assertEvent(event, AuthnEventIds.INVALID_AUTHN_CTX);
@@ -197,7 +195,7 @@ public class AddAuthenticationStatementToAssertionTest extends OpenSAMLInitBaseT
                 new AuthenticationResult("Test", subject));
         final RequestedPrincipalContext requested = new RequestedPrincipalContext();
         requested.setMatchingPrincipal(new AuthenticationMethodPrincipal("Bar"));
-        final AuthenticationContext ac = prc.getSubcontext(AuthenticationContext.class, false);
+        final AuthenticationContext ac = prc.getSubcontext(AuthenticationContext.class);
         assert ac!=null;
         ac.addSubcontext(requested);
         
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 492cf13bf..04e128273 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
@@ -32,6 +32,7 @@ import net.shibboleth.idp.saml.authn.principal.AuthenticationMethodPrincipal;
 import net.shibboleth.idp.saml.authn.principal.AuthnContextClassRefPrincipal;
 import net.shibboleth.idp.saml.authn.principal.AuthnContextDeclRefPrincipal;
 import net.shibboleth.idp.saml.saml2.profile.config.navigate.ProxyAwareDefaultAuthenticationMethodsLookupFunction;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.ComponentInitializationException;
 
 import org.opensaml.core.testing.OpenSAMLInitBaseTestCase;
@@ -52,9 +53,9 @@ public class ProxyAwareDefaultAuthenticationMethodsLookupFunctionTest extends Op
     @BeforeMethod
     public void setUp() throws ComponentInitializationException {
         prc1 = new RequestContextBuilder().buildProfileRequestContext();
-        ac = prc1.getSubcontext(AuthenticationContext.class, true);
-        prc2 = ac.getSubcontext(ProfileRequestContext.class, true);
-        rpc = ac.getSubcontext(RequestedPrincipalContext.class, true);
+        ac = prc1.getOrCreateSubcontext(AuthenticationContext.class);
+        prc2 = ac.getOrCreateSubcontext(ProfileRequestContext.class);
+        rpc = ac.getOrCreateSubcontext(RequestedPrincipalContext.class);
         fn = new ProxyAwareDefaultAuthenticationMethodsLookupFunction();
     }
     
@@ -66,7 +67,7 @@ public class ProxyAwareDefaultAuthenticationMethodsLookupFunctionTest extends Op
     
     @Test
     public void testNonProxy() {
-        rpc.setRequestedPrincipals(List.of(
+        rpc.setRequestedPrincipals(CollectionSupport.listOf(
                 new AuthnContextClassRefPrincipal("foo"),
                 new AuthnContextClassRefPrincipal("bar")));
         
@@ -76,7 +77,7 @@ public class ProxyAwareDefaultAuthenticationMethodsLookupFunctionTest extends Op
     
     @Test
     public void testPassthrough() {
-        rpc.setRequestedPrincipals(List.of(
+        rpc.setRequestedPrincipals(CollectionSupport.listOf(
                 new AuthnContextClassRefPrincipal("foo"),
                 new AuthnContextClassRefPrincipal("bar")));
         
@@ -86,7 +87,7 @@ public class ProxyAwareDefaultAuthenticationMethodsLookupFunctionTest extends Op
 
     @Test
     public void testMapped() {
-        rpc.setRequestedPrincipals(List.of(
+        rpc.setRequestedPrincipals(CollectionSupport.listOf(
                 new AuthnContextClassRefPrincipal("foo"),
                 new AuthnContextClassRefPrincipal("bar"),
                 new AuthenticationMethodPrincipal("baz")));
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAuthnStatementToAssertionTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAuthnStatementToAssertionTest.java
index b63b61471..ea414d237 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAuthnStatementToAssertionTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAuthnStatementToAssertionTest.java
@@ -85,7 +85,7 @@ public class AddAuthnStatementToAssertionTest extends OpenSAMLInitBaseTestCase {
 
     /** Test that the action errors out properly if there is no relying party context. */
     @Test public void testNoRelyingPartyContext() {
-        prc.getSubcontext(AuthenticationContext.class, true);
+        prc.getOrCreateSubcontext(AuthenticationContext.class);
         prc.removeSubcontext(RelyingPartyContext.class);
 
         final Event event = action.execute(rc);
@@ -108,7 +108,7 @@ public class AddAuthnStatementToAssertionTest extends OpenSAMLInitBaseTestCase {
      * @throws Exception if something goes wrong
      */
     @Test public void testNoAuthenticationStatement() throws Exception {
-        prc.getSubcontext(AuthenticationContext.class, true);
+        prc.getOrCreateSubcontext(AuthenticationContext.class);
 
         final Event event = action.execute(rc);
         ActionTestingSupport.assertEvent(event, AuthnEventIds.INVALID_AUTHN_CTX);
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/FilterByQueriedAttributesTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/FilterByQueriedAttributesTest.java
index 65c32dc8b..ae0b9dba2 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/FilterByQueriedAttributesTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/FilterByQueriedAttributesTest.java
@@ -23,6 +23,8 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
+import javax.annotation.Nonnull;
+
 import org.opensaml.core.testing.XMLObjectBaseTestCase;
 import org.opensaml.core.xml.io.UnmarshallingException;
 import org.opensaml.profile.context.ProfileRequestContext;
@@ -71,7 +73,7 @@ public class FilterByQueriedAttributesTest extends XMLObjectBaseTestCase {
 
     private List<GenericApplicationContext> contexts = new ArrayList<>();
 
-    protected <Type> Type getBean(String fileName, Class<Type> claz) {
+    protected <Type> Type getBean(@Nonnull String fileName, Class<Type> claz) {
 
         final GenericApplicationContext context = new GenericApplicationContext();
         contexts.add(context);
@@ -102,6 +104,7 @@ public class FilterByQueriedAttributesTest extends XMLObjectBaseTestCase {
     @BeforeMethod public void setUpMethod() throws ComponentInitializationException, XMLParserException, UnmarshallingException {
         query = unmarshallElement(PATH + "AttributeQuery.xml", true);        
         action = new FilterByQueriedAttributes();
+        assert registry!=null;
         action.setTranscoderRegistry(registry);
         action.initialize();
 
@@ -110,7 +113,7 @@ public class FilterByQueriedAttributesTest extends XMLObjectBaseTestCase {
     }
 
     @Test public void noAttributes() {
-        prc.getSubcontext(RelyingPartyContext.class,true);
+        prc.getOrCreateSubcontext(RelyingPartyContext.class);
         final Event event = action.execute(rc);
         ActionTestingSupport.assertProceedEvent(event);
     }
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 836d6979f..04b92904a 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
@@ -185,7 +185,7 @@ public class ProcessLogoutRequestTest extends SessionManagerBaseTestCase {
         final Instant expiration = creation.plusSeconds(3600);
         
         final IdPSession session = sessionManager.resolveSingle(new CriteriaSet(new HttpServletRequestCriterion()));
-        assert session!=null;
+        assert session!=null && expiration!=null;
         session.addSPSession(new SAML2SPSession(ActionTestingSupport.INBOUND_MSG_ISSUER, creation, expiration,
                 nameIdForSession, "index", "foo", false));
                 
@@ -217,7 +217,7 @@ public class ProcessLogoutRequestTest extends SessionManagerBaseTestCase {
         final Instant expiration = creation.plusSeconds(3600);
         
         final IdPSession session = sessionManager.resolveSingle(new CriteriaSet(new HttpServletRequestCriterion()));
-        assert session!=null;
+        assert session!=null && expiration!=null;
         final NameID nameIdForSession = SAML2ActionTestingSupport.buildNameID("joe");
         session.addSPSession(new SAML2SPSession(ActionTestingSupport.INBOUND_MSG_ISSUER, creation, expiration,
                 nameIdForSession, "index", "foo", false));
@@ -260,7 +260,7 @@ public class ProcessLogoutRequestTest extends SessionManagerBaseTestCase {
         final Instant expiration = creation.plusSeconds(3600);
         
         final IdPSession session = sessionManager.resolveSingle(new CriteriaSet(new HttpServletRequestCriterion()));
-        assert session!=null;
+        assert session!=null && expiration!=null;
         final NameID nameIdForSession = SAML2ActionTestingSupport.buildNameID("joe");
         nameIdForSession.setNameQualifier(ActionTestingSupport.OUTBOUND_MSG_ISSUER);
         nameIdForSession.setSPNameQualifier(ActionTestingSupport.INBOUND_MSG_ISSUER);
@@ -305,7 +305,7 @@ public class ProcessLogoutRequestTest extends SessionManagerBaseTestCase {
         final Instant expiration = creation.plusSeconds(3600);
         
         final IdPSession session = sessionManager.resolveSingle(new CriteriaSet(new HttpServletRequestCriterion()));
-        assert session!=null;;
+        assert session!=null && expiration!=null;
         session.addSPSession(new SAML2SPSession(ActionTestingSupport.INBOUND_MSG_ISSUER, creation, expiration,
                 nameId, "index", "foo", false));
         
@@ -348,7 +348,7 @@ public class ProcessLogoutRequestTest extends SessionManagerBaseTestCase {
         final Instant expiration = creation.plusSeconds(3600);
         
         final IdPSession session = sessionManager.resolveSingle(new CriteriaSet(new HttpServletRequestCriterion()));
-        assert session!=null;
+        assert session!=null && expiration!=null;
         session.addSPSession(new SAML2SPSession(ActionTestingSupport.INBOUND_MSG_ISSUER, creation, expiration,
                 nameId, "index", "foo", false));
         session.addSPSession(new SAML2SPSession(ActionTestingSupport.INBOUND_MSG_ISSUER + "/2", creation, expiration,
@@ -399,7 +399,7 @@ public class ProcessLogoutRequestTest extends SessionManagerBaseTestCase {
         final Instant expiration = creation.plusSeconds(3600);
         
         final IdPSession session = sessionManager.resolveSingle(new CriteriaSet(new HttpServletRequestCriterion()));
-        assert session!=null;
+        assert session!=null && expiration!=null;
         session.addSPSession(new SAML2SPSession(ActionTestingSupport.INBOUND_MSG_ISSUER, creation, expiration,
                 nameId, "index", "foo", false));
         session.addSPSession(new SAML2SPSession(ActionTestingSupport.INBOUND_MSG_ISSUER + "/2", creation, expiration,
@@ -437,7 +437,7 @@ public class ProcessLogoutRequestTest extends SessionManagerBaseTestCase {
         getMockHttpServletRequest().setCookies(cookie);
         
         final IdPSession session = sessionManager.resolveSingle(new CriteriaSet(new HttpServletRequestCriterion()));
-        assert session!=null;
+        assert session!=null && expiration!=null;
         session.addSPSession(new SAML2SPSession(ActionTestingSupport.INBOUND_MSG_ISSUER, creation, expiration,
                 nameId, "index", "foo", false));
         
@@ -461,7 +461,7 @@ public class ProcessLogoutRequestTest extends SessionManagerBaseTestCase {
         assert idpSession!=null;
         Assert.assertEquals(session.getId(), idpSession.getId());
         
-        final LogoutContext logoutCtx = prc.getSubcontext(LogoutContext.class, false);
+        final LogoutContext logoutCtx = prc.getSubcontext(LogoutContext.class);
         assert logoutCtx!=null;
         Assert.assertEquals(logoutCtx.getIdPSessions().size(), 1);
         Assert.assertSame(logoutCtx.getIdPSessions().iterator().next(), sessionCtx.getIdPSession());
@@ -492,7 +492,7 @@ public class ProcessLogoutRequestTest extends SessionManagerBaseTestCase {
         getMockHttpServletRequest().setCookies(cookie);
         
         final IdPSession session = sessionManager.resolveSingle(new CriteriaSet(new HttpServletRequestCriterion()));
-        assert session!=null;;
+        assert session!=null && expiration!=null;
         session.addSPSession(new SAML2SPSession(ActionTestingSupport.INBOUND_MSG_ISSUER, creation, expiration,
                 nameId, "index", "foo", false));
         
diff --git a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/ProcessRequestedAuthnContextTest.java b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/ProcessRequestedAuthnContextTest.java
index b0e8a7690..acccca2b6 100644
--- a/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/ProcessRequestedAuthnContextTest.java
+++ b/idp-saml-impl/src/test/java/net/shibboleth/idp/saml/saml2/profile/impl/ProcessRequestedAuthnContextTest.java
@@ -77,7 +77,7 @@ public class ProcessRequestedAuthnContextTest extends OpenSAMLInitBaseTestCase {
         
         src = (MockRequestContext) new RequestContextBuilder().buildRequestContext();
         prc = (ProfileRequestContext) src.getConversationScope().get(ProfileRequestContext.BINDING_KEY);
-        ac = prc.getSubcontext(AuthenticationContext.class, true);
+        ac = prc.getOrCreateSubcontext(AuthenticationContext.class);
         prc.getOrCreateSubcontext(RelyingPartyContext.class).setProfileConfig(new BrowserSSOProfileConfiguration());
         
         action = new ProcessRequestedAuthnContext();
diff --git a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/DestroySessionsTest.java b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/DestroySessionsTest.java
index d34d99c7b..08e1e25a4 100644
--- a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/DestroySessionsTest.java
+++ b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/DestroySessionsTest.java
@@ -18,9 +18,6 @@
 package net.shibboleth.idp.session.impl;
 
 import java.time.Duration;
-import java.util.Collections;
-
-import javax.annotation.Nonnull;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 import org.opensaml.storage.StorageSerializer;
@@ -32,7 +29,6 @@ import org.testng.Assert;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
-import jakarta.servlet.http.Cookie;
 import net.shibboleth.idp.profile.context.navigate.WebflowRequestContextProfileRequestContextLookup;
 import net.shibboleth.idp.profile.testing.ActionTestingSupport;
 import net.shibboleth.idp.profile.testing.RequestContextBuilder;
@@ -45,11 +41,14 @@ import net.shibboleth.idp.session.context.LogoutContext;
 import net.shibboleth.idp.session.context.SessionContext;
 import net.shibboleth.idp.session.criterion.HttpServletRequestCriterion;
 import net.shibboleth.idp.session.criterion.SessionIdCriterion;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.resolver.CriteriaSet;
 import net.shibboleth.shared.resolver.ResolverException;
 import net.shibboleth.shared.servlet.impl.HttpServletRequestResponseContext;
 
+import jakarta.servlet.http.Cookie;
+
 /** {@link DestroySessions} unit test. */
 public class DestroySessionsTest extends SessionManagerBaseTestCase {
     
@@ -77,7 +76,7 @@ public class DestroySessionsTest extends SessionManagerBaseTestCase {
         sessionManager.setSessionSlop(Duration.ofSeconds(900));
         final SPSessionSerializerRegistry registry = new SPSessionSerializerRegistry();
         registry.setMappings(
-                Collections.<Class<? extends SPSession>,StorageSerializer<? extends SPSession>>singletonMap(
+                CollectionSupport.<Class<? extends SPSession>,StorageSerializer<? extends SPSession>>singletonMap(
                         BasicSPSession.class, new BasicSPSessionSerializer(Duration.ofSeconds(900))));
         registry.initialize();
         sessionManager.setSPSessionSerializerRegistry(registry);
@@ -89,7 +88,7 @@ public class DestroySessionsTest extends SessionManagerBaseTestCase {
     }
 
     @Test public void testNoSessions() {
-        prc.getSubcontext(LogoutContext.class, true);
+        prc.getOrCreateSubcontext(LogoutContext.class);
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
     }
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 c2a7416f3..83983fc77 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
@@ -59,9 +59,9 @@ public class DetectIdentitySwitchTest extends SessionManagerBaseTestCase {
     @BeforeMethod public void setUpAction() throws ComponentInitializationException {
         src = new RequestContextBuilder().buildRequestContext();
         prc = new WebflowRequestContextProfileRequestContextLookup().apply(src);
-        ac = prc.getSubcontext(AuthenticationContext.class, true);
-        sc = prc.getSubcontext(SessionContext.class, true);
-        c14n = prc.getSubcontext(SubjectCanonicalizationContext.class, true);
+        ac = prc.getOrCreateSubcontext(AuthenticationContext.class);
+        sc = prc.getOrCreateSubcontext(SessionContext.class);
+        c14n = prc.getOrCreateSubcontext(SubjectCanonicalizationContext.class);
 
         action = new DetectIdentitySwitch();
         action.setSessionManager(sessionManager);
diff --git a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/PopulateSessionContextTest.java b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/PopulateSessionContextTest.java
index a40483078..50661b9c4 100644
--- a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/PopulateSessionContextTest.java
+++ b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/PopulateSessionContextTest.java
@@ -67,7 +67,7 @@ public class PopulateSessionContextTest extends SessionManagerBaseTestCase {
         HttpServletRequestResponseContext.loadCurrent(new MockHttpServletRequest(), new MockHttpServletResponse());
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
-        Assert.assertNull(prc.getSubcontext(SessionContext.class, false));
+        Assert.assertNull(prc.getSubcontext(SessionContext.class));
     }
     
     @Test public void testSession() throws SessionException {
@@ -78,7 +78,7 @@ public class PopulateSessionContextTest extends SessionManagerBaseTestCase {
         
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
-        SessionContext sessionCtx = prc.getSubcontext(SessionContext.class, false);
+        SessionContext sessionCtx = prc.getSubcontext(SessionContext.class);
         assert sessionCtx != null;
         final IdPSession session = sessionCtx.getIdPSession();
         assert session != null;
@@ -95,7 +95,7 @@ public class PopulateSessionContextTest extends SessionManagerBaseTestCase {
         
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
-        SessionContext sessionCtx = prc.getSubcontext(SessionContext.class, false);
+        SessionContext sessionCtx = prc.getSubcontext(SessionContext.class);
         assert sessionCtx != null;
         final IdPSession session = sessionCtx.getIdPSession();
         assert session != null;
@@ -112,7 +112,7 @@ public class PopulateSessionContextTest extends SessionManagerBaseTestCase {
         
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
-        Assert.assertNull(prc.getSubcontext(SessionContext.class, false));
+        Assert.assertNull(prc.getSubcontext(SessionContext.class));
     }
 
     @Test public void testTimeout() throws SessionException, InterruptedException {
@@ -125,7 +125,7 @@ public class PopulateSessionContextTest extends SessionManagerBaseTestCase {
         
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
-        Assert.assertNull(prc.getSubcontext(SessionContext.class, false));
+        Assert.assertNull(prc.getSubcontext(SessionContext.class));
     }
     
     @Test public void testAddressLookup() throws ComponentInitializationException, SessionException {
@@ -151,7 +151,7 @@ public class PopulateSessionContextTest extends SessionManagerBaseTestCase {
         
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
-        SessionContext sessionCtx = prc.getSubcontext(SessionContext.class, false);
+        SessionContext sessionCtx = prc.getSubcontext(SessionContext.class);
         assert sessionCtx != null;
         
         final IdPSession idpSession =sessionCtx.getIdPSession();
diff --git a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/UpdateSessionWithAuthenticationResultTest.java b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/UpdateSessionWithAuthenticationResultTest.java
index df0404102..cea014600 100644
--- a/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/UpdateSessionWithAuthenticationResultTest.java
+++ b/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/UpdateSessionWithAuthenticationResultTest.java
@@ -66,7 +66,7 @@ public class UpdateSessionWithAuthenticationResultTest extends SessionManagerBas
     @BeforeMethod public void setUpAction() throws ComponentInitializationException {
         src = new RequestContextBuilder().buildRequestContext();
         prc = new WebflowRequestContextProfileRequestContextLookup().apply(src);
-        ac = prc.getSubcontext(AuthenticationContext.class, true);
+        ac = prc.getOrCreateSubcontext(AuthenticationContext.class);
 
         action = new UpdateSessionWithAuthenticationResult();
         action.setSessionManager(sessionManager);
@@ -89,7 +89,7 @@ public class UpdateSessionWithAuthenticationResultTest extends SessionManagerBas
         HttpServletRequestResponseContext.loadCurrent(new MockHttpServletRequest(), new MockHttpServletResponse());
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
-        Assert.assertNull(prc.getSubcontext(SessionContext.class, false));
+        Assert.assertNull(prc.getSubcontext(SessionContext.class));
     }
 
     @Test public void testNoFlow() throws SessionException {
@@ -100,7 +100,7 @@ public class UpdateSessionWithAuthenticationResultTest extends SessionManagerBas
         
         final Event event = action.execute(src);
         ActionTestingSupport.assertEvent(event, EventIds.IO_ERROR);
-        SessionContext sessionCtx = prc.getSubcontext(SessionContext.class, false);
+        SessionContext sessionCtx = prc.getSubcontext(SessionContext.class);
         assert sessionCtx!=null;
         final IdPSession idpSession = sessionCtx.getIdPSession();
         assert idpSession!=null;
@@ -116,7 +116,7 @@ public class UpdateSessionWithAuthenticationResultTest extends SessionManagerBas
         ac.setAuthenticationResult(new AuthenticationResult("test1", new UsernamePrincipal("joe")));
         ac.setResultCacheable(false);
         
-        SessionContext sessionCtx = prc.getSubcontext(SessionContext.class, true);
+        SessionContext sessionCtx = prc.getOrCreateSubcontext(SessionContext.class);
         assert sessionCtx!=null;
         sessionCtx.setIdPSession(sessionManager.createSession("joe"));
         
@@ -136,7 +136,7 @@ public class UpdateSessionWithAuthenticationResultTest extends SessionManagerBas
         
         final Event event = action.execute(src);
         ActionTestingSupport.assertProceedEvent(event);
-        SessionContext sessionCtx = prc.getSubcontext(SessionContext.class, false);
+        SessionContext sessionCtx = prc.getSubcontext(SessionContext.class);
         Assert.assertNotNull(sessionCtx);
         assert sessionCtx!=null;
         final IdPSession idpSession = sessionCtx.getIdPSession();
diff --git a/idp-testing/src/main/java/net/shibboleth/idp/saml/impl/testing/TestSources.java b/idp-testing/src/main/java/net/shibboleth/idp/saml/impl/testing/TestSources.java
index 34b220263..5df8d90b1 100644
--- a/idp-testing/src/main/java/net/shibboleth/idp/saml/impl/testing/TestSources.java
+++ b/idp-testing/src/main/java/net/shibboleth/idp/saml/impl/testing/TestSources.java
@@ -247,7 +247,7 @@ public final class TestSources {
         retVal.setAttributeRecipientID(recipientId);
         retVal.setPrincipal(principal);
 
-        retVal.getSubcontext(AttributeResolverWorkContext.class, true);
+        retVal.getOrCreateSubcontext(AttributeResolverWorkContext.class);
         return retVal;
     }
 

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


More information about the commits mailing list