[java-identity-provider] 03/06: JSPT-98 Integrate lifecycle checking methods in base classes

Rod Widdowson rdw at steadingsoftware.com
Fri Jul 15 09:44:53 UTC 2022


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=b0d29435aa1e4ef0eac7b78d8023f11a7614b629

commit b0d29435aa1e4ef0eac7b78d8023f11a7614b629
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Thu Jul 14 16:44:45 2022 +0100

    JSPT-98 Integrate lifecycle checking methods in base classes
    
    https://shibboleth.atlassian.net/browse/JSPT-98
    
    Stop using ComponentSupport and use the appropriate methods instead:
    
            idp-profile-api idp-profile-impl
---
 .../idp/profile/AbstractProfileAction.java         | 13 ++++----
 .../net/shibboleth/idp/profile/ScriptedAction.java | 17 ++++------
 .../AbstractProfileInterceptorAction.java          | 12 +++----
 .../ProfileInterceptorFlowDescriptor.java          | 20 +++++-------
 .../relyingparty/RelyingPartyConfiguration.java    | 34 ++++++++-----------
 .../profile/audit/impl/PopulateAuditContext.java   | 31 ++++++++----------
 .../idp/profile/audit/impl/WriteAuditLog.java      | 30 ++++++++---------
 .../idp/profile/impl/FilterAttributes.java         | 34 +++++++------------
 .../impl/InitializeProfileRequestContext.java      | 30 +++++++----------
 .../idp/profile/impl/PopulateSubjectContext.java   | 16 ++++-----
 .../profile/impl/ReloadServiceConfiguration.java   | 22 ++++++-------
 .../idp/profile/impl/ResolveAttributes.java        | 32 +++++++-----------
 .../profile/impl/SelectProfileConfiguration.java   | 22 +++++--------
 .../impl/SelectRelyingPartyConfiguration.java      | 16 ++++-----
 .../impl/PopulateProfileInterceptorContext.java    | 20 +++++-------
 .../messaging/impl/SelectProfileConfiguration.java |  7 ++--
 .../impl/SelectRelyingPartyConfiguration.java      |  7 ++--
 .../impl/CriteriaSelfEntityIDResolver.java         | 11 ++-----
 .../DefaultRelyingPartyConfigurationResolver.java  | 38 +++++++++-------------
 ...gCriteriaRelyingPartyConfigurationResolver.java | 14 +++-----
 ...ReloadingRelyingPartyConfigurationResolver.java | 10 ++----
 21 files changed, 168 insertions(+), 268 deletions(-)

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 813dc4cf5..3112e4c5d 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
@@ -25,11 +25,6 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.ThreadSafe;
 
-import net.shibboleth.idp.profile.context.SpringRequestContext;
-import net.shibboleth.idp.profile.context.navigate.WebflowRequestContextProfileRequestContextLookup;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-
 import org.opensaml.profile.action.AbstractConditionalProfileAction;
 import org.opensaml.profile.action.EventIds;
 import org.opensaml.profile.action.ProfileAction;
@@ -46,6 +41,10 @@ import org.springframework.webflow.execution.Action;
 import org.springframework.webflow.execution.Event;
 import org.springframework.webflow.execution.RequestContext;
 
+import net.shibboleth.idp.profile.context.SpringRequestContext;
+import net.shibboleth.idp.profile.context.navigate.WebflowRequestContextProfileRequestContextLookup;
+import net.shibboleth.utilities.java.support.logic.Constraint;
+
 /**
  * Base class for Spring-aware profile actions.
  * 
@@ -101,7 +100,7 @@ public abstract class AbstractProfileAction
      */
     public void setProfileContextLookupStrategy(
             @Nonnull final Function<RequestContext,ProfileRequestContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
 
         profileContextLookupStrategy =
                 Constraint.isNotNull(strategy, "ProfileRequestContext lookup strategy cannot be null");
@@ -110,7 +109,7 @@ public abstract class AbstractProfileAction
     /** {@inheritDoc} */
     @Override
     @Nonnull public Event execute(@Nonnull final RequestContext springRequestContext) {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
+        throwComponentStateExceptions();
 
         final ProfileRequestContext profileRequestContext =
                 profileContextLookupStrategy.apply(springRequestContext);
diff --git a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/ScriptedAction.java b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/ScriptedAction.java
index 704ca33a8..8447ce731 100644
--- a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/ScriptedAction.java
+++ b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/ScriptedAction.java
@@ -25,12 +25,6 @@ import javax.annotation.Nullable;
 import javax.script.ScriptContext;
 import javax.script.ScriptException;
 
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.scripting.AbstractScriptEvaluator;
-import net.shibboleth.utilities.java.support.scripting.EvaluableScript;
-
 import org.opensaml.profile.action.ActionSupport;
 import org.opensaml.profile.action.EventIds;
 import org.opensaml.profile.context.ProfileRequestContext;
@@ -38,6 +32,11 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.core.io.Resource;
 
+import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.utilities.java.support.scripting.AbstractScriptEvaluator;
+import net.shibboleth.utilities.java.support.scripting.EvaluableScript;
+
 /**
  * An action which calls out to a supplied script.
  * 
@@ -96,8 +95,7 @@ public class ScriptedAction extends AbstractProfileAction {
      * @param object the custom object
      */
     @Nullable public void setCustomObject(@Nullable final Object object) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         scriptEvaluator.setCustomObject(object);
     }
 
@@ -109,8 +107,7 @@ public class ScriptedAction extends AbstractProfileAction {
      * @since 3.4.0
      */
     public void setHideExceptions(final boolean flag) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         scriptEvaluator.setHideExceptions(flag);
     }
     
diff --git a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/interceptor/AbstractProfileInterceptorAction.java b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/interceptor/AbstractProfileInterceptorAction.java
index ee8267488..749190892 100644
--- a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/interceptor/AbstractProfileInterceptorAction.java
+++ b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/interceptor/AbstractProfileInterceptorAction.java
@@ -22,11 +22,6 @@ import java.util.function.Function;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
-import net.shibboleth.idp.profile.AbstractProfileAction;
-import net.shibboleth.idp.profile.context.ProfileInterceptorContext;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-
 import org.opensaml.messaging.context.navigate.ChildContextLookup;
 import org.opensaml.profile.action.ActionSupport;
 import org.opensaml.profile.action.EventIds;
@@ -34,6 +29,10 @@ import org.opensaml.profile.context.ProfileRequestContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import net.shibboleth.idp.profile.AbstractProfileAction;
+import net.shibboleth.idp.profile.context.ProfileInterceptorContext;
+import net.shibboleth.utilities.java.support.logic.Constraint;
+
 /**
  * A base class for profile interceptor actions.
  * 
@@ -66,8 +65,7 @@ public abstract class AbstractProfileInterceptorAction extends
      * @param strategy lookup strategy function
      */
     public void setLookupStrategy(@Nonnull final Function<ProfileRequestContext, ProfileInterceptorContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         interceptorContextlookupStrategy = Constraint.isNotNull(strategy, "Strategy cannot be null");
     }
 
diff --git a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/interceptor/ProfileInterceptorFlowDescriptor.java b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/interceptor/ProfileInterceptorFlowDescriptor.java
index 67dd00a3d..58840edb7 100644
--- a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/interceptor/ProfileInterceptorFlowDescriptor.java
+++ b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/interceptor/ProfileInterceptorFlowDescriptor.java
@@ -22,18 +22,17 @@ import java.util.function.Predicate;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
-import net.shibboleth.idp.profile.FlowDescriptor;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.component.AbstractIdentifiableInitializableComponent;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-
 import org.opensaml.profile.context.ProfileRequestContext;
 import org.opensaml.storage.StorageService;
 
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Predicates;
 
+import net.shibboleth.idp.profile.FlowDescriptor;
+import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.utilities.java.support.component.AbstractIdentifiableInitializableComponent;
+import net.shibboleth.utilities.java.support.logic.Constraint;
+
 /**
  * A descriptor for a profile interceptor flow.
  * 
@@ -71,8 +70,7 @@ public class ProfileInterceptorFlowDescriptor extends AbstractIdentifiableInitia
      * @param condition predicate that controls activation of the flow
      */
     public void setActivationCondition(@Nonnull final Predicate<ProfileRequestContext> condition) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         activationCondition = Constraint.isNotNull(condition, "Activation condition predicate cannot be null");
     }
 
@@ -91,8 +89,7 @@ public class ProfileInterceptorFlowDescriptor extends AbstractIdentifiableInitia
      * @param isSupported whether this flow supports non-browser clients
      */
     public void setNonBrowserSupported(final boolean isSupported) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         supportsNonBrowser = isSupported;
     }
 
@@ -111,8 +108,7 @@ public class ProfileInterceptorFlowDescriptor extends AbstractIdentifiableInitia
      * @param service the storage service
      */
     public void setStorageService(@Nonnull final StorageService service) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         storageService = Constraint.isNotNull(service, "Storage service can not be null");
     }
 
diff --git a/idp-profile-api/src/main/java/net/shibboleth/idp/relyingparty/RelyingPartyConfiguration.java b/idp-profile-api/src/main/java/net/shibboleth/idp/relyingparty/RelyingPartyConfiguration.java
index 9c170fc1a..3c319962a 100644
--- a/idp-profile-api/src/main/java/net/shibboleth/idp/relyingparty/RelyingPartyConfiguration.java
+++ b/idp-profile-api/src/main/java/net/shibboleth/idp/relyingparty/RelyingPartyConfiguration.java
@@ -28,6 +28,12 @@ import java.util.function.Predicate;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
+import org.opensaml.profile.context.ProfileRequestContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.base.Predicates;
+
 import net.shibboleth.idp.profile.config.ProfileConfiguration;
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
@@ -35,18 +41,11 @@ import net.shibboleth.utilities.java.support.annotation.constraint.NotLive;
 import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
 import net.shibboleth.utilities.java.support.component.AbstractIdentifiableInitializableComponent;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
 import net.shibboleth.utilities.java.support.component.IdentifiedComponent;
 import net.shibboleth.utilities.java.support.logic.Constraint;
 import net.shibboleth.utilities.java.support.logic.FunctionSupport;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Predicates;
-
 /** The configuration that applies to a given relying party. */
 public class RelyingPartyConfiguration extends AbstractIdentifiableInitializableComponent implements
         IdentifiedComponent, Predicate<ProfileRequestContext> {
@@ -92,8 +91,7 @@ public class RelyingPartyConfiguration extends AbstractIdentifiableInitializable
      * @param responder ID to use when responding to messages
      */
     public void setResponderId(@Nonnull @NotEmpty final String responder) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         final String id =
                 Constraint.isNotNull(StringSupport.trimOrNull(responder), "ResponderId cannot be null or empty");
         responderIdLookupStrategy = FunctionSupport.constant(id);
@@ -107,8 +105,7 @@ public class RelyingPartyConfiguration extends AbstractIdentifiableInitializable
      * @since 3.4.0
      */
     public void setResponderIdLookupStrategy(@Nonnull final Function<ProfileRequestContext,String> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         responderIdLookupStrategy = Constraint.isNotNull(strategy, "Lookup strategy cannot be null");
     }
     
@@ -129,8 +126,7 @@ public class RelyingPartyConfiguration extends AbstractIdentifiableInitializable
      * @param flag  flag to set
      */
     public void setDetailedErrors(final boolean flag) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         detailedErrorsPredicate = flag ? Predicates.alwaysTrue() : Predicates.alwaysFalse();
     }
     
@@ -187,8 +183,7 @@ public class RelyingPartyConfiguration extends AbstractIdentifiableInitializable
      * @param configs the configurations to set
      */
     public void setProfileConfigurations(@Nullable @NonnullElements final Collection<ProfileConfiguration> configs) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         if (configs == null) {
             profileConfigurationsLookupStrategy = FunctionSupport.constant(null);
         } else {
@@ -212,8 +207,7 @@ public class RelyingPartyConfiguration extends AbstractIdentifiableInitializable
      */
     public void setProfileConfigurationsLookupStrategy(
             @Nonnull final Function<ProfileRequestContext,Map<String,ProfileConfiguration>> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         profileConfigurationsLookupStrategy = Constraint.isNotNull(strategy, "Lookup strategy cannot be null");
     }
 
@@ -223,8 +217,7 @@ public class RelyingPartyConfiguration extends AbstractIdentifiableInitializable
      * @param condition the activation condition
      */
     public void setActivationCondition(@Nonnull final Predicate<ProfileRequestContext> condition) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         activationCondition =
                 Constraint.isNotNull(condition, "Relying party configuration activation condition cannot be null");
     }
@@ -241,8 +234,7 @@ public class RelyingPartyConfiguration extends AbstractIdentifiableInitializable
 
     /** {@inheritDoc} */
     public boolean test(@Nullable final ProfileRequestContext input) {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
-    
+        throwComponentStateExceptions();
         return activationCondition.test(input);
     }
 
diff --git a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/audit/impl/PopulateAuditContext.java b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/audit/impl/PopulateAuditContext.java
index aaf42908d..340178416 100644
--- a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/audit/impl/PopulateAuditContext.java
+++ b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/audit/impl/PopulateAuditContext.java
@@ -32,6 +32,13 @@ import java.util.function.Function;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
+import org.opensaml.messaging.context.navigate.ChildContextLookup;
+import org.opensaml.profile.action.ActionSupport;
+import org.opensaml.profile.action.EventIds;
+import org.opensaml.profile.context.ProfileRequestContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import net.shibboleth.idp.profile.AbstractProfileAction;
 import net.shibboleth.idp.profile.context.AuditContext;
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
@@ -39,17 +46,9 @@ import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotLive;
 import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
 import net.shibboleth.utilities.java.support.logic.Constraint;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
-import org.opensaml.messaging.context.navigate.ChildContextLookup;
-import org.opensaml.profile.action.ActionSupport;
-import org.opensaml.profile.action.EventIds;
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 /**
  * Action that populates fields in an {@link AuditContext} using injected functions.
  * 
@@ -107,8 +106,7 @@ public class PopulateAuditContext extends AbstractProfileAction {
      * @param strategy lookup strategy
      */
     public void setAuditContextCreationStrategy(@Nonnull final Function<ProfileRequestContext,AuditContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         auditContextCreationStrategy = Constraint.isNotNull(strategy, "AuditContext lookup strategy cannot be null");
     }
     
@@ -119,7 +117,7 @@ public class PopulateAuditContext extends AbstractProfileAction {
      */
     public void setFieldExtractors(
             @Nonnull @NonnullElements final Map<String,Function<ProfileRequestContext,Object>> map) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
         Constraint.isNotNull(map, "Field extractor map cannot be null");
         
         fieldExtractors = new HashMap<>(map.size());
@@ -143,7 +141,7 @@ public class PopulateAuditContext extends AbstractProfileAction {
      * @param parser the parsed map
      */
     public void setFormattingMapParser(@Nonnull final FormattingMapParser parser) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
         Constraint.isNotNull(parser, "Parsed audit formatting map cannot be null");
         
         fieldsToExtract = parser.getFieldsToExtract();
@@ -155,8 +153,7 @@ public class PopulateAuditContext extends AbstractProfileAction {
      * @param map map of replacements
      */
     public void setFieldReplacements(@Nullable final Map<String,String> map) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         if (map != null) {
             fieldReplacements = new HashMap<>(map);
         } else {
@@ -170,8 +167,7 @@ public class PopulateAuditContext extends AbstractProfileAction {
      * @param format formatting string
      */
     public void setDateTimeFormat(@Nullable @NotEmpty final String format) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         if (format != null) {
             dateTimeFormatter = DateTimeFormatter.ofPattern(StringSupport.trimOrNull(format));
         }
@@ -183,8 +179,7 @@ public class PopulateAuditContext extends AbstractProfileAction {
      * @param flag flag to set
      */
     public void setUseDefaultTimeZone(final boolean flag) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         useDefaultTimeZone = flag;
     }
     
diff --git a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/audit/impl/WriteAuditLog.java b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/audit/impl/WriteAuditLog.java
index 1e14319e3..beb037708 100644
--- a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/audit/impl/WriteAuditLog.java
+++ b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/audit/impl/WriteAuditLog.java
@@ -31,8 +31,16 @@ import java.util.function.Function;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
-import jakarta.servlet.http.HttpServletRequest;
 
+import org.opensaml.messaging.context.navigate.ChildContextLookup;
+import org.opensaml.profile.action.EventIds;
+import org.opensaml.profile.context.ProfileRequestContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.webflow.execution.Event;
+import org.springframework.webflow.execution.RequestContext;
+
+import jakarta.servlet.http.HttpServletRequest;
 import net.shibboleth.idp.profile.AbstractProfileAction;
 import net.shibboleth.idp.profile.IdPAuditFields;
 import net.shibboleth.idp.profile.context.AuditContext;
@@ -41,19 +49,10 @@ import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotLive;
 import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
 import net.shibboleth.utilities.java.support.logic.Constraint;
 import net.shibboleth.utilities.java.support.net.HttpServletSupport;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
-import org.opensaml.messaging.context.navigate.ChildContextLookup;
-import org.opensaml.profile.action.EventIds;
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.webflow.execution.Event;
-import org.springframework.webflow.execution.RequestContext;
-
 //import com.google.common.collect.ImmutableMap;
 
 /**
@@ -101,8 +100,7 @@ public class WriteAuditLog extends AbstractProfileAction {
      * @param strategy lookup strategy
      */
     public void setAuditContextLookupStrategy(@Nonnull final Function<ProfileRequestContext,AuditContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         auditContextLookupStrategy = Constraint.isNotNull(strategy, "AuditContext lookup strategy cannot be null");
     }
     
@@ -126,7 +124,7 @@ public class WriteAuditLog extends AbstractProfileAction {
      * @param map map of categories to formatting strings
      */
     public void setFormattingMap(@Nonnull @NonnullElements final Map<String,String> map) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
         Constraint.isNotNull(map, "Audit formatting map cannot be null");
         
         formattingMap = new HashMap<>(map.size());
@@ -176,8 +174,7 @@ public class WriteAuditLog extends AbstractProfileAction {
      * @param format formatting string
      */
     public void setDateTimeFormat(@Nullable @NotEmpty final String format) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         if (format != null) {
             dateTimeFormatter = DateTimeFormatter.ofPattern(StringSupport.trimOrNull(format));
         }
@@ -189,8 +186,7 @@ public class WriteAuditLog extends AbstractProfileAction {
      * @param flag flag to set
      */
     public void setUseDefaultTimeZone(final boolean flag) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         useDefaultTimeZone = flag;
     }
     
diff --git a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/FilterAttributes.java b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/FilterAttributes.java
index cff848126..989a2a8d4 100644
--- a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/FilterAttributes.java
+++ b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/FilterAttributes.java
@@ -47,7 +47,6 @@ import net.shibboleth.idp.profile.IdPEventIds;
 import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.profile.context.navigate.RelyingPartyIdLookupFunction;
 import net.shibboleth.idp.profile.context.navigate.ResponderIdLookupFunction;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
 import net.shibboleth.utilities.java.support.logic.Constraint;
 import net.shibboleth.utilities.java.support.service.ReloadableService;
 import net.shibboleth.utilities.java.support.service.ServiceableComponent;
@@ -199,8 +198,7 @@ public class FilterAttributes extends AbstractProfileAction {
      * @since 3.4.0
      */
     public void setMetadataResolver(@Nullable final MetadataResolver resolver) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         metadataResolver = resolver;
     }
     
@@ -210,8 +208,7 @@ public class FilterAttributes extends AbstractProfileAction {
      * @param strategy  lookup strategy
      */
     public void setIssuerLookupStrategy(@Nullable final Function<ProfileRequestContext,String> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         issuerLookupStrategy = strategy;
     }
 
@@ -221,8 +218,7 @@ public class FilterAttributes extends AbstractProfileAction {
      * @param strategy  lookup strategy
      */
     public void setRecipientLookupStrategy(@Nullable final Function<ProfileRequestContext,String> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         recipientLookupStrategy = strategy;
     }
 
@@ -233,8 +229,7 @@ public class FilterAttributes extends AbstractProfileAction {
      */
     public void setFilterContextCreationStrategy(
             @Nonnull final Function<ProfileRequestContext,AttributeFilterContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         filterContextCreationStrategy =
                 Constraint.isNotNull(strategy, "AttributeContext creation strategy cannot be null");
     }
@@ -248,8 +243,7 @@ public class FilterAttributes extends AbstractProfileAction {
      */
     public void setAttributeContextLookupStrategy(
             @Nonnull final Function<ProfileRequestContext,AttributeContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         attributeContextLookupStrategy =
                 Constraint.isNotNull(strategy, "AttributeContext lookup strategy cannot be null");
     }
@@ -260,8 +254,7 @@ public class FilterAttributes extends AbstractProfileAction {
      * @param strategy lookup strategy
      */
     public void setPrincipalNameLookupStrategy(@Nonnull final Function<ProfileRequestContext,String> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         principalNameLookupStrategy = Constraint.isNotNull(strategy, "Principal name lookup strategy cannot be null");
     }
     
@@ -274,8 +267,7 @@ public class FilterAttributes extends AbstractProfileAction {
      */
     public void setIssuerMetadataContextLookupStrategy(
             @Nullable final Function<ProfileRequestContext,SAMLMetadataContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         issuerMetadataContextLookupStrategy = strategy;
         issuerMetadataFromFilterLookupStrategy = strategy != null ?
                 issuerMetadataContextLookupStrategy.compose(profileRequestContextFromFilterLookupStrategy) : null;
@@ -290,8 +282,7 @@ public class FilterAttributes extends AbstractProfileAction {
      */
     public void setMetadataContextLookupStrategy(
             @Nullable final Function<ProfileRequestContext,SAMLMetadataContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         metadataContextLookupStrategy = strategy;
         metadataFromFilterLookupStrategy = strategy != null ?
                 metadataContextLookupStrategy.compose(profileRequestContextFromFilterLookupStrategy) : null;
@@ -308,8 +299,7 @@ public class FilterAttributes extends AbstractProfileAction {
      */
     public void setProxiedRequesterContextLookupStrategy(
             @Nullable final Function<ProfileRequestContext,ProxiedRequesterContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         proxiedRequesterContextLookupStrategy = strategy;
         proxiesFromFilterLookupStrategy = strategy != null ?
                 proxiedRequesterContextLookupStrategy.compose(profileRequestContextFromFilterLookupStrategy) : null;
@@ -324,8 +314,7 @@ public class FilterAttributes extends AbstractProfileAction {
      */
     public void setProxiedRequesterMetadataContextLookupStrategy(
             @Nullable final Function<ProfileRequestContext,SAMLMetadataContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         proxiedRequesterMetadataLookupStrategy = strategy;
         proxiedMetadataFromFilterLookupStrategy = strategy != null ?
                 proxiedRequesterMetadataLookupStrategy.compose(profileRequestContextFromFilterLookupStrategy) : null;
@@ -339,8 +328,7 @@ public class FilterAttributes extends AbstractProfileAction {
      * @param flag flag to set
      */
     public void setMaskFailures(final boolean flag) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         maskFailures = flag;
     }
 
diff --git a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/InitializeProfileRequestContext.java b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/InitializeProfileRequestContext.java
index c22bda781..4911b63e1 100644
--- a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/InitializeProfileRequestContext.java
+++ b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/InitializeProfileRequestContext.java
@@ -22,20 +22,17 @@ import java.util.Map;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.ThreadSafe;
-import jakarta.servlet.http.HttpServletRequest;
-
-import net.shibboleth.idp.profile.AbstractProfileAction;
-import net.shibboleth.idp.profile.ActionSupport;
 
 import org.opensaml.messaging.context.ScratchContext;
 import org.opensaml.profile.context.ProfileRequestContext;
-
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.primitive.StringSupport;
-
 import org.springframework.webflow.execution.Event;
 import org.springframework.webflow.execution.RequestContext;
 
+import jakarta.servlet.http.HttpServletRequest;
+import net.shibboleth.idp.profile.AbstractProfileAction;
+import net.shibboleth.idp.profile.ActionSupport;
+import net.shibboleth.utilities.java.support.primitive.StringSupport;
+
 /**
  * Action that creates a new {@link ProfileRequestContext} and binds it to the current conversation under the
  * {@link ProfileRequestContext#BINDING_KEY} key, and sets the profile and logging IDs, if provided.
@@ -71,8 +68,7 @@ public final class InitializeProfileRequestContext extends AbstractProfileAction
      * @param id    profile ID to populate into the context
      */
     public void setProfileId(@Nullable final String id) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         profileId = StringSupport.trimOrNull(id);
     }
     
@@ -84,8 +80,7 @@ public final class InitializeProfileRequestContext extends AbstractProfileAction
      * @since 4.2.0
      */
     public void setLegacyProfileId(@Nullable final String id) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         legacyProfileId = StringSupport.trimOrNull(id);
     }
 
@@ -95,8 +90,7 @@ public final class InitializeProfileRequestContext extends AbstractProfileAction
      * @param id    logging ID to populate into the context
      */
     public void setLoggingId(@Nullable final String id) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         loggingId = StringSupport.trimOrNull(id);
     }
     
@@ -106,8 +100,7 @@ public final class InitializeProfileRequestContext extends AbstractProfileAction
      * @param browser flag to set
      */
     public void setBrowserProfile(final boolean browser) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         browserProfile = browser;
     }
 
@@ -120,8 +113,7 @@ public final class InitializeProfileRequestContext extends AbstractProfileAction
      * @since 4.1.0
      */
     public void setCaptureQueryParameters(final boolean flag) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         captureQueryParameters = flag;
     }
     
@@ -132,7 +124,7 @@ public final class InitializeProfileRequestContext extends AbstractProfileAction
 
         // We have to override execute() because the profile request context doesn't exist yet.
         
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
+        throwComponentStateExceptions();
         
         final ProfileRequestContext prc = new ProfileRequestContext();
         if (profileId != null) {
diff --git a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/PopulateSubjectContext.java b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/PopulateSubjectContext.java
index d7ac07d67..f73aac23f 100644
--- a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/PopulateSubjectContext.java
+++ b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/PopulateSubjectContext.java
@@ -22,19 +22,18 @@ import java.util.function.Function;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
-import net.shibboleth.idp.authn.context.SubjectContext;
-import net.shibboleth.idp.profile.AbstractProfileAction;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-
 import org.opensaml.profile.action.ActionSupport;
 import org.opensaml.profile.action.EventIds;
 import org.opensaml.profile.context.ProfileRequestContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import net.shibboleth.idp.authn.context.SubjectContext;
+import net.shibboleth.idp.profile.AbstractProfileAction;
+import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.utilities.java.support.logic.Constraint;
+
 /**
  * An action that populates a principal name obtained from a lookup function into a {@link SubjectContext}
  * child of the {@link ProfileRequestContext}.
@@ -62,8 +61,7 @@ public class PopulateSubjectContext extends AbstractProfileAction {
      * @param strategy  lookup strategy
      */
     public void setPrincipalNameLookupStrategy(@Nonnull final Function<ProfileRequestContext,String> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         principalNameLookupStrategy = Constraint.isNotNull(strategy, "Principal name lookup strategy cannot be null");
     }
     
diff --git a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/ReloadServiceConfiguration.java b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/ReloadServiceConfiguration.java
index 9ca54ee52..0c0eb2c77 100644
--- a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/ReloadServiceConfiguration.java
+++ b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/ReloadServiceConfiguration.java
@@ -22,16 +22,6 @@ import java.util.function.Function;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
-import jakarta.servlet.http.HttpServletResponse;
-
-import net.shibboleth.idp.profile.AbstractProfileAction;
-import net.shibboleth.idp.profile.context.SpringRequestContext;
-import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.component.IdentifiedComponent;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.service.ReloadableService;
-import net.shibboleth.utilities.java.support.service.ServiceException;
 
 import org.opensaml.profile.action.ActionSupport;
 import org.opensaml.profile.action.EventIds;
@@ -41,6 +31,15 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeansException;
 import org.springframework.webflow.execution.RequestContext;
 
+import jakarta.servlet.http.HttpServletResponse;
+import net.shibboleth.idp.profile.AbstractProfileAction;
+import net.shibboleth.idp.profile.context.SpringRequestContext;
+import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.utilities.java.support.component.IdentifiedComponent;
+import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.utilities.java.support.service.ReloadableService;
+import net.shibboleth.utilities.java.support.service.ServiceException;
+
 /**
  * Action that refreshes a {@link ReloadableService} manually.
  * 
@@ -80,8 +79,7 @@ public class ReloadServiceConfiguration extends AbstractProfileAction {
      * @param strategy  lookup strategy
      */
     public void setServiceLookupStrategy(@Nonnull final Function<ProfileRequestContext,ReloadableService<?>> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         serviceLookupStrategy = Constraint.isNotNull(strategy, "ReloadableService lookup strategy cannot be null");
     }
     
diff --git a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/ResolveAttributes.java b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/ResolveAttributes.java
index 218fec879..822303566 100644
--- a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/ResolveAttributes.java
+++ b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/ResolveAttributes.java
@@ -46,7 +46,6 @@ import net.shibboleth.idp.profile.context.navigate.RelyingPartyIdLookupFunction;
 import net.shibboleth.idp.profile.context.navigate.ResponderIdLookupFunction;
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
 import net.shibboleth.utilities.java.support.logic.Constraint;
 import net.shibboleth.utilities.java.support.logic.FunctionSupport;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
@@ -130,8 +129,7 @@ public final class ResolveAttributes extends AbstractProfileAction {
      * @param registry registry service interface
      */
     public void setTranscoderRegistry(@Nullable final ReloadableService<AttributeTranscoderRegistry> registry) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         transcoderRegistry = registry;
     }
     
@@ -141,8 +139,7 @@ public final class ResolveAttributes extends AbstractProfileAction {
      * @param strategy  lookup strategy
      */
     public void setIssuerLookupStrategy(@Nullable final Function<ProfileRequestContext,String> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         issuerLookupStrategy = strategy;
     }
 
@@ -152,8 +149,7 @@ public final class ResolveAttributes extends AbstractProfileAction {
      * @param strategy  lookup strategy
      */
     public void setRecipientLookupStrategy(@Nullable final Function<ProfileRequestContext,String> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         recipientLookupStrategy = strategy;
     }
     
@@ -163,8 +159,7 @@ public final class ResolveAttributes extends AbstractProfileAction {
      * @param strategy lookup strategy
      */
     public void setPrincipalNameLookupStrategy(@Nullable final Function<ProfileRequestContext,String> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         principalNameLookupStrategy = strategy;
     }
     
@@ -175,8 +170,7 @@ public final class ResolveAttributes extends AbstractProfileAction {
      */
     public void setAttributeContextCreationStrategy(
             @Nonnull final Function<ProfileRequestContext,AttributeContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         attributeContextCreationStrategy =
                 Constraint.isNotNull(strategy, "AttributeContext creation strategy cannot be null");
     }
@@ -188,8 +182,7 @@ public final class ResolveAttributes extends AbstractProfileAction {
      */
     public void setAttributesLookupStrategy(
             @Nonnull final Function<ProfileRequestContext,Collection<String>> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         attributesLookupStrategy = Constraint.isNotNull(strategy, "Attributes lookup strategy cannot be null");
     }
     
@@ -199,8 +192,7 @@ public final class ResolveAttributes extends AbstractProfileAction {
      * @param attributeIds  attribute ID collection
      */
     public void setAttributesToResolve(@Nonnull @NonnullElements final Collection<String> attributeIds) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         Constraint.isNotNull(attributeIds, "Attribute ID collection cannot be null");
         attributesLookupStrategy = FunctionSupport.constant(StringSupport.normalizeStringCollection(attributeIds));
     }
@@ -213,8 +205,7 @@ public final class ResolveAttributes extends AbstractProfileAction {
      * @since 4.2.0
      */
     public void setResolutionContextDecorator(@Nullable final Consumer<AttributeResolutionContext> decorator) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         resolutionContextDecorator = decorator;
     }
     
@@ -226,8 +217,7 @@ public final class ResolveAttributes extends AbstractProfileAction {
      * @param flag flag to set
      */
     public void setMaskFailures(final boolean flag) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         maskFailures = flag;
     }
     
@@ -240,6 +230,7 @@ public final class ResolveAttributes extends AbstractProfileAction {
      * @since 3.4.0
      */
     public void setResolutionLabel(@Nullable final String label) {
+        throwSetterPreconditionExceptions();
         resolutionLabel = StringSupport.trimOrNull(label);
     }
     
@@ -251,8 +242,7 @@ public final class ResolveAttributes extends AbstractProfileAction {
      * @param flag flag to set
      */
     public void setCreateResolutionContext(final boolean flag) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         createResolutionContext = flag;
     }
 
diff --git a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/SelectProfileConfiguration.java b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/SelectProfileConfiguration.java
index 9791a1653..74b8cf10a 100644
--- a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/SelectProfileConfiguration.java
+++ b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/SelectProfileConfiguration.java
@@ -22,6 +22,12 @@ import java.util.function.Function;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
+import org.opensaml.messaging.context.navigate.ChildContextLookup;
+import org.opensaml.profile.action.ActionSupport;
+import org.opensaml.profile.context.ProfileRequestContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import net.shibboleth.idp.profile.AbstractProfileAction;
 import net.shibboleth.idp.profile.IdPEventIds;
 import net.shibboleth.idp.profile.config.ConditionalProfileConfiguration;
@@ -29,16 +35,9 @@ import net.shibboleth.idp.profile.config.ProfileConfiguration;
 import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.relyingparty.RelyingPartyConfiguration;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
 import net.shibboleth.utilities.java.support.logic.Constraint;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
-import org.opensaml.messaging.context.navigate.ChildContextLookup;
-import org.opensaml.profile.action.ActionSupport;
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 /**
  * Action that selects the {@link ProfileConfiguration} for the given request and sets it in the looked-up
  * {@link RelyingPartyContext}.
@@ -82,8 +81,7 @@ public class SelectProfileConfiguration extends AbstractProfileAction {
      */
     public void setRelyingPartyContextLookupStrategy(
             @Nonnull final Function<ProfileRequestContext,RelyingPartyContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         relyingPartyContextLookupStrategy = Constraint.isNotNull(strategy,
                 "RelyingPartyContext lookup strategy cannot be null");
     }
@@ -98,8 +96,7 @@ public class SelectProfileConfiguration extends AbstractProfileAction {
      * @since 4.2.0
      */
     public void setProfileId(@Nullable @NotEmpty final String id) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         profileId = StringSupport.trimOrNull(id);
     }
     
@@ -113,8 +110,7 @@ public class SelectProfileConfiguration extends AbstractProfileAction {
      * @since 4.2.0
      */
     public void setFailIfMissing(final boolean flag) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         failIfMissing = flag;
     }
 
diff --git a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/SelectRelyingPartyConfiguration.java b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/SelectRelyingPartyConfiguration.java
index 2c8f2fcee..bff16034d 100644
--- a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/SelectRelyingPartyConfiguration.java
+++ b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/impl/SelectRelyingPartyConfiguration.java
@@ -22,9 +22,13 @@ import java.util.function.Function;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
+import org.opensaml.messaging.context.BaseContext;
+import org.opensaml.messaging.context.navigate.ChildContextLookup;
 import org.opensaml.profile.action.ActionSupport;
 import org.opensaml.profile.context.ProfileRequestContext;
 import org.opensaml.profile.criterion.ProfileRequestContextCriterion;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import net.shibboleth.idp.profile.AbstractProfileAction;
 import net.shibboleth.idp.profile.IdPEventIds;
@@ -34,17 +38,11 @@ import net.shibboleth.idp.relyingparty.RelyingPartyConfiguration;
 import net.shibboleth.idp.relyingparty.RelyingPartyConfigurationResolver;
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
 import net.shibboleth.utilities.java.support.logic.Constraint;
 import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
 import net.shibboleth.utilities.java.support.resolver.Resolver;
 import net.shibboleth.utilities.java.support.resolver.ResolverException;
 
-import org.opensaml.messaging.context.BaseContext;
-import org.opensaml.messaging.context.navigate.ChildContextLookup;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 /**
  * This action attempts to resolve a {@link RelyingPartyConfiguration} and adds it to the {@link RelyingPartyContext}
  * that was looked up.
@@ -85,8 +83,7 @@ public final class SelectRelyingPartyConfiguration extends AbstractProfileAction
      * @param resolver  the resolver to use
      */
     public void setRelyingPartyConfigurationResolver(@Nonnull final Resolver<RelyingPartyConfiguration,?> resolver) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         rpConfigResolver = Constraint.isNotNull(resolver, "Relying party configuration resolver cannot be null");
     }
     
@@ -99,8 +96,7 @@ public final class SelectRelyingPartyConfiguration extends AbstractProfileAction
      */
     public void setRelyingPartyContextLookupStrategy(
             @Nonnull final Function<ProfileRequestContext, RelyingPartyContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         relyingPartyContextLookupStrategy =
                 Constraint.isNotNull(strategy, "RelyingPartyContext lookup strategy cannot be null");
     }
diff --git a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/interceptor/impl/PopulateProfileInterceptorContext.java b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/interceptor/impl/PopulateProfileInterceptorContext.java
index 1799ec505..117bb122f 100644
--- a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/interceptor/impl/PopulateProfileInterceptorContext.java
+++ b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/interceptor/impl/PopulateProfileInterceptorContext.java
@@ -26,6 +26,11 @@ import java.util.function.Function;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
+import org.opensaml.profile.action.ActionSupport;
+import org.opensaml.profile.context.ProfileRequestContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import net.shibboleth.idp.profile.IdPEventIds;
 import net.shibboleth.idp.profile.context.ProfileInterceptorContext;
 import net.shibboleth.idp.profile.interceptor.AbstractProfileInterceptorAction;
@@ -34,15 +39,9 @@ import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterI
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
 import net.shibboleth.utilities.java.support.logic.Constraint;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
-import org.opensaml.profile.action.ActionSupport;
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 /**
  * An profile interceptor action that populates a {@link ProfileInterceptorContext} with
  * {@link ProfileInterceptorFlowDescriptor} objects based on flow IDs from a lookup function.
@@ -78,8 +77,7 @@ public class PopulateProfileInterceptorContext extends AbstractProfileIntercepto
      * @param flows the flows available for possible use
      */
     public void setAvailableFlows(@Nonnull @NonnullElements final Collection<ProfileInterceptorFlowDescriptor> flows) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         availableFlows = List.copyOf(Constraint.isNotNull(flows, "Flow collection cannot be null"));
     }
     
@@ -90,8 +88,7 @@ public class PopulateProfileInterceptorContext extends AbstractProfileIntercepto
      */
     public void setActiveFlowsLookupStrategy(
             @Nonnull final Function<ProfileRequestContext,Collection<String>> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         activeFlowsLookupStrategy = Constraint.isNotNull(strategy, "Flow lookup strategy cannot be null");
     }
     
@@ -103,8 +100,7 @@ public class PopulateProfileInterceptorContext extends AbstractProfileIntercepto
      * @since 4.2.0
      */
     public void setLoggingLabel(@Nullable @NotEmpty final String label) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         loggingLabel = StringSupport.trimOrNull(label);
     }
     
diff --git a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/messaging/impl/SelectProfileConfiguration.java b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/messaging/impl/SelectProfileConfiguration.java
index 82b95dcf0..8fe60a1f9 100644
--- a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/messaging/impl/SelectProfileConfiguration.java
+++ b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/messaging/impl/SelectProfileConfiguration.java
@@ -37,7 +37,6 @@ import net.shibboleth.idp.profile.context.RelyingPartyContext;
 import net.shibboleth.idp.relyingparty.RelyingPartyConfiguration;
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
 import net.shibboleth.utilities.java.support.logic.Constraint;
 
 /**
@@ -90,8 +89,7 @@ public class SelectProfileConfiguration extends AbstractMessageHandler {
      */
     public void setRelyingPartyContextLookupStrategy(
             @Nonnull final Function<MessageContext,RelyingPartyContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         relyingPartyContextLookupStrategy = Constraint.isNotNull(strategy,
                 "RelyingPartyContext lookup strategy cannot be null");
     }
@@ -126,8 +124,7 @@ public class SelectProfileConfiguration extends AbstractMessageHandler {
      *         {@link MessageContext}
      */
     public void setProfiledIdLookupStrategy(@Nonnull final Function<MessageContext,String> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         profileIdLookupStrategy = strategy;
     }
 
diff --git a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/messaging/impl/SelectRelyingPartyConfiguration.java b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/messaging/impl/SelectRelyingPartyConfiguration.java
index dc5d45434..b200b95be 100644
--- a/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/messaging/impl/SelectRelyingPartyConfiguration.java
+++ b/idp-profile-impl/src/main/java/net/shibboleth/idp/profile/messaging/impl/SelectRelyingPartyConfiguration.java
@@ -37,7 +37,6 @@ import net.shibboleth.idp.relyingparty.CriteriaRelyingPartyConfigurationResolver
 import net.shibboleth.idp.relyingparty.RelyingPartyConfiguration;
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
 import net.shibboleth.utilities.java.support.logic.Constraint;
 import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
 import net.shibboleth.utilities.java.support.resolver.ResolverException;
@@ -80,8 +79,7 @@ public final class SelectRelyingPartyConfiguration extends AbstractMessageHandle
      */
     public void setRelyingPartyConfigurationResolver(
             @Nonnull final CriteriaRelyingPartyConfigurationResolver resolver) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         rpConfigResolver = Constraint.isNotNull(resolver, "Relying party configuration resolver cannot be null");
     }
     
@@ -94,8 +92,7 @@ public final class SelectRelyingPartyConfiguration extends AbstractMessageHandle
      */
     public void setRelyingPartyContextLookupStrategy(
             @Nonnull final Function<MessageContext, RelyingPartyContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         relyingPartyContextLookupStrategy =
                 Constraint.isNotNull(strategy, "RelyingPartyContext lookup strategy cannot be null");
     }
diff --git a/idp-profile-impl/src/main/java/net/shibboleth/idp/relyingparty/impl/CriteriaSelfEntityIDResolver.java b/idp-profile-impl/src/main/java/net/shibboleth/idp/relyingparty/impl/CriteriaSelfEntityIDResolver.java
index f234236c1..cac83e519 100644
--- a/idp-profile-impl/src/main/java/net/shibboleth/idp/relyingparty/impl/CriteriaSelfEntityIDResolver.java
+++ b/idp-profile-impl/src/main/java/net/shibboleth/idp/relyingparty/impl/CriteriaSelfEntityIDResolver.java
@@ -41,7 +41,6 @@ import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElemen
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 import net.shibboleth.utilities.java.support.component.AbstractIdentifiedInitializableComponent;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
 import net.shibboleth.utilities.java.support.component.IdentifiableComponent;
 import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
 import net.shibboleth.utilities.java.support.resolver.Resolver;
@@ -72,7 +71,7 @@ public class CriteriaSelfEntityIDResolver extends AbstractIdentifiedInitializabl
      */
     public void setRelyingPartyConfigurationResolver(
             @Nullable final CriteriaRelyingPartyConfigurationResolver resolver) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
         rpcResolver = resolver;
     }
 
@@ -98,9 +97,7 @@ public class CriteriaSelfEntityIDResolver extends AbstractIdentifiedInitializabl
     /** {@inheritDoc} */
     @Nonnull @NonnullElements public Iterable<String> resolve(
             @Nullable final CriteriaSet criteria) throws ResolverException {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
-        
+        throwComponentStateExceptions();
         final String entityID = resolveSingle(criteria);
         if (entityID != null) {
             return Collections.singletonList(entityID);
@@ -110,9 +107,7 @@ public class CriteriaSelfEntityIDResolver extends AbstractIdentifiedInitializabl
 
     /** {@inheritDoc} */
     @Nullable public String resolveSingle(@Nullable final CriteriaSet criteria) throws ResolverException {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
-        
+        throwComponentStateExceptions();
         final ProfileRequestContext prc = buildContext(criteria);
         final CriteriaSet prcSet = new CriteriaSet(new ProfileRequestContextCriterion(prc));
         
diff --git a/idp-profile-impl/src/main/java/net/shibboleth/idp/relyingparty/impl/DefaultRelyingPartyConfigurationResolver.java b/idp-profile-impl/src/main/java/net/shibboleth/idp/relyingparty/impl/DefaultRelyingPartyConfigurationResolver.java
index 956846a4a..2ed323019 100644
--- a/idp-profile-impl/src/main/java/net/shibboleth/idp/relyingparty/impl/DefaultRelyingPartyConfigurationResolver.java
+++ b/idp-profile-impl/src/main/java/net/shibboleth/idp/relyingparty/impl/DefaultRelyingPartyConfigurationResolver.java
@@ -27,6 +27,13 @@ import java.util.stream.Collectors;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
+import org.opensaml.profile.context.ProfileRequestContext;
+import org.opensaml.security.credential.Credential;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+
 import net.shibboleth.ext.spring.service.AbstractServiceableComponent;
 import net.shibboleth.idp.profile.config.SecurityConfiguration;
 import net.shibboleth.idp.profile.logic.VerifiedProfilePredicate;
@@ -39,17 +46,9 @@ import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotLive;
 import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
 import net.shibboleth.utilities.java.support.logic.Constraint;
 import net.shibboleth.utilities.java.support.resolver.ResolverException;
 
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.opensaml.security.credential.Credential;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-
 /**
  * Retrieves a per-relying party configuration for a given profile request based on the request context.
  * 
@@ -109,8 +108,7 @@ public class DefaultRelyingPartyConfigurationResolver
      * @param configs list of verified relying party configurations
      */
     public void setRelyingPartyConfigurations(@Nonnull @NonnullElements final List<RelyingPartyConfiguration> configs) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         rpConfigurations = List.copyOf(Constraint.isNotNull(configs, "RelyingPartyConfiguration list cannot be null"));
     }
 
@@ -129,8 +127,7 @@ public class DefaultRelyingPartyConfigurationResolver
      * @param configuration default verified configuration
      */
     public void setDefaultConfiguration(@Nonnull final RelyingPartyConfiguration configuration) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         defaultConfiguration = Constraint.isNotNull(configuration, "Default RP configuration cannot be null");
     }
 
@@ -151,8 +148,7 @@ public class DefaultRelyingPartyConfigurationResolver
      * @param configuration unverified configuration
      */
     public void setUnverifiedConfiguration(@Nonnull final RelyingPartyConfiguration configuration) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         unverifiedConfiguration = Constraint.isNotNull(configuration, "Unverified RP configuration cannot be null");
     }
 
@@ -171,8 +167,7 @@ public class DefaultRelyingPartyConfigurationResolver
      * @param predicate predicate to set
      */
     public void setVerificationPredicate(@Nonnull final Predicate<ProfileRequestContext> predicate) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         verificationPredicate = Constraint.isNotNull(predicate, "Verification predicate cannot be null");
     }
     
@@ -182,8 +177,7 @@ public class DefaultRelyingPartyConfigurationResolver
      * @param config  global default
      */
     public void setDefaultSecurityConfiguration(@Nullable final SecurityConfiguration config) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         defaultSecurityConfiguration = config;
     }
 
@@ -204,7 +198,7 @@ public class DefaultRelyingPartyConfigurationResolver
     /** {@inheritDoc} */
     @Override @Nonnull @NonnullElements public Iterable<RelyingPartyConfiguration> resolve(
             @Nullable final ProfileRequestContext context) throws ResolverException {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
+        throwComponentStateExceptions();
 
         if (context == null) {
             return Collections.emptyList();
@@ -244,7 +238,7 @@ public class DefaultRelyingPartyConfigurationResolver
     /** {@inheritDoc} */
     @Override @Nullable public RelyingPartyConfiguration resolveSingle(@Nullable final ProfileRequestContext context)
             throws ResolverException {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
+        throwComponentStateExceptions();
 
         if (context == null) {
             return null;
@@ -299,7 +293,7 @@ public class DefaultRelyingPartyConfigurationResolver
     @Qualifier("signing")
     public void setSigningCredentials(
             @Nullable @NonnullElements final List<RelyingPartyResolverCredentialHolder> credentials) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
         
         if (credentials != null) {
             signingCredentials = credentials.stream()
@@ -328,7 +322,7 @@ public class DefaultRelyingPartyConfigurationResolver
     @Qualifier("encryption")
     public void setEncryptionCredentials(
             @Nullable @NonnullElements final List<RelyingPartyResolverCredentialHolder> credentials) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
         
         if (credentials != null) {
             encryptionCredentials = credentials.stream()
diff --git a/idp-profile-impl/src/main/java/net/shibboleth/idp/relyingparty/impl/DelegatingCriteriaRelyingPartyConfigurationResolver.java b/idp-profile-impl/src/main/java/net/shibboleth/idp/relyingparty/impl/DelegatingCriteriaRelyingPartyConfigurationResolver.java
index f4b66315e..8a207ade0 100644
--- a/idp-profile-impl/src/main/java/net/shibboleth/idp/relyingparty/impl/DelegatingCriteriaRelyingPartyConfigurationResolver.java
+++ b/idp-profile-impl/src/main/java/net/shibboleth/idp/relyingparty/impl/DelegatingCriteriaRelyingPartyConfigurationResolver.java
@@ -44,7 +44,6 @@ import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElemen
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 import net.shibboleth.utilities.java.support.component.AbstractIdentifiedInitializableComponent;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
 import net.shibboleth.utilities.java.support.component.IdentifiableComponent;
 import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
 import net.shibboleth.utilities.java.support.resolver.ResolverException;
@@ -82,7 +81,7 @@ public class DelegatingCriteriaRelyingPartyConfigurationResolver extends Abstrac
      * @param resolver the resolver delegate instance
      */
     public void setDelegate(@Nullable final RelyingPartyConfigurationResolver resolver) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
         delegate = resolver;
     }
 
@@ -108,8 +107,7 @@ public class DelegatingCriteriaRelyingPartyConfigurationResolver extends Abstrac
     /** {@inheritDoc} */
     @Override
     @Nullable public SecurityConfiguration getDefaultSecurityConfiguration(@Nonnull @NotEmpty final String profileId) {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwComponentStateExceptions();
         return delegate.getDefaultSecurityConfiguration(profileId);
     }
     
@@ -117,9 +115,7 @@ public class DelegatingCriteriaRelyingPartyConfigurationResolver extends Abstrac
     @Override
     @Nullable public RelyingPartyConfiguration resolveSingle(@Nullable final CriteriaSet criteria) 
             throws ResolverException {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
-        
+        throwComponentStateExceptions();
         final Iterator<RelyingPartyConfiguration> results = resolve(criteria).iterator();
         if (results.hasNext()) {
             return results.next();
@@ -131,9 +127,7 @@ public class DelegatingCriteriaRelyingPartyConfigurationResolver extends Abstrac
     @Override
     @Nonnull @NonnullElements public Iterable<RelyingPartyConfiguration> resolve(@Nullable final CriteriaSet criteria) 
             throws ResolverException {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
-        
+        throwComponentStateExceptions();
         final ProfileRequestContext prc = buildContext(criteria);
         if (prc != null) {
             return delegate.resolve(prc);
diff --git a/idp-profile-impl/src/main/java/net/shibboleth/idp/relyingparty/impl/ReloadingRelyingPartyConfigurationResolver.java b/idp-profile-impl/src/main/java/net/shibboleth/idp/relyingparty/impl/ReloadingRelyingPartyConfigurationResolver.java
index e6566c449..caf5d9fb1 100644
--- a/idp-profile-impl/src/main/java/net/shibboleth/idp/relyingparty/impl/ReloadingRelyingPartyConfigurationResolver.java
+++ b/idp-profile-impl/src/main/java/net/shibboleth/idp/relyingparty/impl/ReloadingRelyingPartyConfigurationResolver.java
@@ -34,7 +34,6 @@ import net.shibboleth.idp.relyingparty.RelyingPartyConfigurationResolver;
 import net.shibboleth.utilities.java.support.annotation.ParameterName;
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
 import net.shibboleth.utilities.java.support.component.AbstractIdentifiableInitializableComponent;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
 import net.shibboleth.utilities.java.support.logic.Constraint;
 import net.shibboleth.utilities.java.support.resolver.ResolverException;
 import net.shibboleth.utilities.java.support.service.ReloadableService;
@@ -71,8 +70,7 @@ public class ReloadingRelyingPartyConfigurationResolver extends AbstractIdentifi
     /** {@inheritDoc} */
     @Override @Nonnull @NonnullElements public Iterable<RelyingPartyConfiguration> resolve(
             @Nullable final ProfileRequestContext context) throws ResolverException {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
-        
+        throwComponentStateExceptions();
         ServiceableComponent<RelyingPartyConfigurationResolver> component = null;
         try {
             component = service.getServiceableComponent();
@@ -99,8 +97,7 @@ public class ReloadingRelyingPartyConfigurationResolver extends AbstractIdentifi
     /** {@inheritDoc} */
     @Override @Nullable public RelyingPartyConfiguration resolveSingle(@Nullable final ProfileRequestContext context)
             throws ResolverException {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
-
+        throwComponentStateExceptions();
         ServiceableComponent<RelyingPartyConfigurationResolver> component = null;
         try {
             component = service.getServiceableComponent();
@@ -122,8 +119,7 @@ public class ReloadingRelyingPartyConfigurationResolver extends AbstractIdentifi
 
     /** {@inheritDoc} */
     @Override public SecurityConfiguration getDefaultSecurityConfiguration(final String profileId) {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
-
+        throwComponentStateExceptions();
         ServiceableComponent<RelyingPartyConfigurationResolver> component = null;
         try {
             component = service.getServiceableComponent();

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


More information about the commits mailing list