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

Rod Widdowson rdw at steadingsoftware.com
Fri Jul 1 11:02:33 UTC 2022


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

rdw pushed a commit to branch dev/JSPT-98
in repository java-identity-provider.

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

commit f5771e94fa0c9704160fe04d1693a4dc6e397c9a
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Fri Jul 1 11:56:49 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-attribute-resolver-api idp-attribute-resolver-impl
---
 .../resolver/AbstractAttributeDefinition.java      |  7 +---
 .../attribute/resolver/AbstractDataConnector.java  | 13 ++-----
 .../attribute/resolver/AbstractResolverPlugin.java | 22 ++++-------
 .../attribute/resolver/ResolvedDataConnector.java  |  7 +---
 .../resolver/ResolverDataConnectorDependency.java  |  2 +-
 ...ParameterizedExecutableSearchFilterBuilder.java |  5 +--
 .../TemplatedExecutableSearchFilterBuilder.java    |  7 ++--
 .../rdbms/AbstractExecutableStatementBuilder.java  |  3 +-
 .../rdbms/TemplatedExecutableStatementBuilder.java |  6 +--
 .../ad/impl/ContextDerivedAttributeDefinition.java | 16 ++++----
 .../ad/impl/DecryptedAttributeDefinition.java      |  4 +-
 .../ad/impl/PrescopedAttributeDefinition.java      | 13 +++----
 .../ad/impl/RegexSplitAttributeDefinition.java     | 13 +++----
 .../ad/impl/ScopedAttributeDefinition.java         | 12 ++----
 .../ad/impl/ScriptedAttributeDefinition.java       | 13 ++-----
 .../ad/impl/StaticAttributeDefinition.java         | 13 +++----
 .../SubjectDerivedAttributeValuesFunction.java     | 19 +++++----
 .../ad/impl/TemplateAttributeDefinition.java       |  7 +---
 .../ad/mapped/impl/MappedAttributeDefinition.java  | 13 ++-----
 .../resolver/ad/mapped/impl/SourceValue.java       | 11 +++---
 .../dc/http/impl/AbstractHTTPSearchBuilder.java    |  7 +---
 .../resolver/dc/http/impl/HTTPDataConnector.java   |  8 ++--
 .../http/impl/ScriptedResponseMappingStrategy.java |  3 +-
 .../dc/http/impl/TemplatedBodyBuilder.java         | 45 +++++++++-------------
 .../resolver/dc/http/impl/TemplatedURLBuilder.java | 28 ++++++--------
 .../resolver/impl/AttributeResolverImpl.java       |  2 +-
 .../resolver/ad/impl/RegexAtributeTest.java        |  2 +-
 27 files changed, 115 insertions(+), 186 deletions(-)

diff --git a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinition.java b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinition.java
index 15578d234..5a39e7d18 100644
--- a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinition.java
+++ b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractAttributeDefinition.java
@@ -29,7 +29,6 @@ import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
 import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContext;
 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.primitive.DeprecationSupport;
 import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.ObjectType;
 
@@ -68,8 +67,7 @@ public abstract class AbstractAttributeDefinition extends AbstractResolverPlugin
      * @param isDependencyOnly whether this attribute definition is only a dependency
      */
     public void setDependencyOnly(final boolean isDependencyOnly) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
 
         dependencyOnly = isDependencyOnly;
     }
@@ -84,8 +82,7 @@ public abstract class AbstractAttributeDefinition extends AbstractResolverPlugin
      * @param value what to set
      */
     public void setPreRequested(final boolean value) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
         preRequested = value;
     }
 
diff --git a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractDataConnector.java b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractDataConnector.java
index 22627e740..2f0f8fe78 100644
--- a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractDataConnector.java
+++ b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractDataConnector.java
@@ -38,7 +38,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.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.primitive.StringSupport;
 
 /** Base class for data connector resolver plugins. */
@@ -96,8 +95,7 @@ public abstract class AbstractDataConnector extends AbstractResolverPlugin<Map<S
      *            experiences an error
      */
     public void setFailoverDataConnectorId(@Nullable final String id) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
 
         failoverDataConnectorId = StringSupport.trimOrNull(id);
     }
@@ -142,8 +140,7 @@ public abstract class AbstractDataConnector extends AbstractResolverPlugin<Map<S
      * @param delay what to set
      */
     public void setNoRetryDelay(@Nonnull final Duration delay) {
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
         noRetryDelay = delay;
     }
 
@@ -159,8 +156,7 @@ public abstract class AbstractDataConnector extends AbstractResolverPlugin<Map<S
      */
     @Deprecated(since = "4.1.0", forRemoval = true)
     public void setExportAllAttributes(final boolean what) {
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
         exportAllAttributes = what;
     }
 
@@ -176,8 +172,7 @@ public abstract class AbstractDataConnector extends AbstractResolverPlugin<Map<S
      * @param what the list
      */
     public void setExportAttributes(@Nonnull @NonnullElements final Collection<String> what) {
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
         exportAttributes = Set.copyOf(what);
     }
 
diff --git a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractResolverPlugin.java b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractResolverPlugin.java
index e6e046323..d21c41154 100644
--- a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractResolverPlugin.java
+++ b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/AbstractResolverPlugin.java
@@ -46,7 +46,6 @@ import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 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.logic.Constraint;
 import net.shibboleth.utilities.java.support.service.ServiceableComponent;
 
@@ -102,7 +101,8 @@ public abstract class AbstractResolverPlugin<ResolvedType> extends AbstractIdent
      */
     @Deprecated(forRemoval = true, since = "4.2")
     public void setSuppressDisplayInformation(final boolean what) {
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        // Do not check conditions.  This call is going away
+        // throwSetterPreconditionExceptions();
 
         suppressDisplayInformation = what;
     }
@@ -119,8 +119,7 @@ public abstract class AbstractResolverPlugin<ResolvedType> extends AbstractIdent
      * @param propagate true if {@link ResolutionException}s are propagated, false if not
      */
     public void setPropagateResolutionExceptions(final boolean propagate) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
 
         propagateResolutionExceptions = propagate;
     }
@@ -141,8 +140,7 @@ public abstract class AbstractResolverPlugin<ResolvedType> extends AbstractIdent
      * @param strategy the mechanism
      */
     public void setProfileContextStrategy(final Function<AttributeResolutionContext, ProfileRequestContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
         
         profileContextStrategy = Constraint.isNotNull(strategy, "Profile Context Strategy cannot be null");
     }
@@ -158,8 +156,7 @@ public abstract class AbstractResolverPlugin<ResolvedType> extends AbstractIdent
      * @param pred what to set
      */
     public void setActivationCondition(@Nonnull final Predicate<ProfileRequestContext> pred) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
         
         activationCondition = Constraint.isNotNull(pred, "Activation condition cannot be null");
     }
@@ -192,8 +189,7 @@ public abstract class AbstractResolverPlugin<ResolvedType> extends AbstractIdent
      */
     public void setAttributeDependencies(@Nonnull @NonnullElements
             final Set<ResolverAttributeDefinitionDependency> dependencies) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
         Constraint.isNotNull(dependencies, "Attribute Dependencies cannot be null");
 
         attributeDependencies = Set.copyOf(dependencies);
@@ -206,8 +202,7 @@ public abstract class AbstractResolverPlugin<ResolvedType> extends AbstractIdent
      */
     public void setDataConnectorDependencies(@Nonnull @NonnullElements
             final Set<ResolverDataConnectorDependency> dependencies) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
         Constraint.isNotNull(dependencies, "DataConnector Dependencies cannot be null");
 
         dataConnectorDependencies = Set.copyOf(dependencies);
@@ -233,8 +228,7 @@ public abstract class AbstractResolverPlugin<ResolvedType> extends AbstractIdent
      */
     @Override @Nullable public final ResolvedType resolve(@Nonnull final AttributeResolutionContext resolutionContext)
             throws ResolutionException {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwComponentStateExceptions();
 
         Constraint.isNotNull(resolutionContext, "AttributeResolutionContext cannot be null");
 
diff --git a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolvedDataConnector.java b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolvedDataConnector.java
index 1024d5fa0..8ee3867f9 100644
--- a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolvedDataConnector.java
+++ b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolvedDataConnector.java
@@ -33,7 +33,6 @@ import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
 import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContext;
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
 import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
 import net.shibboleth.utilities.java.support.logic.Constraint;
 
 /**
@@ -130,8 +129,7 @@ public final class ResolvedDataConnector extends AbstractDataConnector {
 
     /** {@inheritDoc} */
     @Override public void setExportAllAttributes(@Nullable final boolean what) {
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
     }
 
     /** {@inheritDoc} */
@@ -141,8 +139,7 @@ public final class ResolvedDataConnector extends AbstractDataConnector {
 
     /** {@inheritDoc} */
     @Override public void setExportAttributes(@Nonnull final Collection<String> what) {
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
     }
 
     /** {@inheritDoc} */
diff --git a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolverDataConnectorDependency.java b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolverDataConnectorDependency.java
index b1eebec6e..af4f1d635 100644
--- a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolverDataConnectorDependency.java
+++ b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/ResolverDataConnectorDependency.java
@@ -131,6 +131,6 @@ public final class ResolverDataConnectorDependency  {
         
         return Objects.equals(getDependencyPluginId(), other.getDependencyPluginId())
                 && Objects.equals(getAttributeNames(), other.getAttributeNames()) 
-                && (isAllAttributes() == other.isAllAttributes());
+                && isAllAttributes() == other.isAllAttributes();
     }
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/ParameterizedExecutableSearchFilterBuilder.java b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/ParameterizedExecutableSearchFilterBuilder.java
index 9e3313ad1..c93bc90a9 100644
--- a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/ParameterizedExecutableSearchFilterBuilder.java
+++ b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/ParameterizedExecutableSearchFilterBuilder.java
@@ -29,7 +29,6 @@ import net.shibboleth.idp.attribute.resolver.ResolutionException;
 import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
 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;
 
 /**
@@ -54,7 +53,7 @@ public class ParameterizedExecutableSearchFilterBuilder extends AbstractExecutab
      * @param filter used for the LDAP search
      */
     public void setSearchFilter(@Nonnull final String filter) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
         searchFilter = Constraint.isNotNull(filter, "Search filter can not be null");
     }
     
@@ -68,7 +67,7 @@ public class ParameterizedExecutableSearchFilterBuilder extends AbstractExecutab
     /** {@inheritDoc} */
     @Override public ExecutableSearchFilter build(@Nonnull final AttributeResolutionContext resolutionContext,
             @Nonnull final Map<String, List<IdPAttributeValue>> dependencyAttributes) throws ResolutionException {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
+        throwComponentStateExceptions();
         final SearchFilter sf = new SearchFilter(searchFilter);
         sf.setParameter("principalName", resolutionContext.getPrincipal());
         if (dependencyAttributes != null && !dependencyAttributes.isEmpty()) {
diff --git a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/TemplatedExecutableSearchFilterBuilder.java b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/TemplatedExecutableSearchFilterBuilder.java
index 000634af9..0d4217770 100644
--- a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/TemplatedExecutableSearchFilterBuilder.java
+++ b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/TemplatedExecutableSearchFilterBuilder.java
@@ -40,7 +40,6 @@ import net.shibboleth.idp.attribute.resolver.ResolutionException;
 import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
 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.primitive.StringSupport;
 import net.shibboleth.utilities.java.support.velocity.Template;
 
@@ -93,7 +92,7 @@ public class TemplatedExecutableSearchFilterBuilder extends AbstractExecutableSe
      * @param velocityTemplate template to be evaluated
      */
     public void setTemplateText(@Nullable final String velocityTemplate) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
 
         templateText = StringSupport.trimOrNull(velocityTemplate);
     }
@@ -113,7 +112,7 @@ public class TemplatedExecutableSearchFilterBuilder extends AbstractExecutableSe
      * @param velocityEngine engine to be used
      */
     public void setVelocityEngine(final VelocityEngine velocityEngine) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
 
         engine = velocityEngine;
     }
@@ -133,7 +132,7 @@ public class TemplatedExecutableSearchFilterBuilder extends AbstractExecutableSe
      * @param handler reference insertion event handler to be used
      */
     public void setReferenceInsertionEventHandler(@Nullable final ReferenceInsertionEventHandler handler) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
 
         eventHandler = handler;
     }
diff --git a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/AbstractExecutableStatementBuilder.java b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/AbstractExecutableStatementBuilder.java
index 73a811af1..267fdb2eb 100644
--- a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/AbstractExecutableStatementBuilder.java
+++ b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/AbstractExecutableStatementBuilder.java
@@ -33,7 +33,6 @@ import net.shibboleth.idp.attribute.resolver.ResolutionException;
 import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
 import net.shibboleth.idp.attribute.resolver.dc.ExecutableSearchBuilder;
 import net.shibboleth.utilities.java.support.component.AbstractInitializableComponent;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
 import net.shibboleth.utilities.java.support.logic.Constraint;
 
 /**
@@ -65,7 +64,7 @@ public abstract class AbstractExecutableStatementBuilder extends AbstractInitial
      * @param timeout of the SQL query
      */
     public void setQueryTimeout(@Nonnull final Duration timeout) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
         Constraint.isNotNull(timeout, "Query timeout cannot be null");
         Constraint.isFalse(timeout.isNegative(), "Query timeout cannot be negative");
         
diff --git a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/TemplatedExecutableStatementBuilder.java b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/TemplatedExecutableStatementBuilder.java
index aa2901c0d..541cc592b 100644
--- a/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/TemplatedExecutableStatementBuilder.java
+++ b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/TemplatedExecutableStatementBuilder.java
@@ -92,7 +92,7 @@ public class TemplatedExecutableStatementBuilder extends AbstractExecutableState
      * @param velocityTemplate template to be evaluated
      */
     public void setTemplateText(@Nullable final String velocityTemplate) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
 
         templateText = StringSupport.trimOrNull(velocityTemplate);
     }
@@ -112,7 +112,7 @@ public class TemplatedExecutableStatementBuilder extends AbstractExecutableState
      * @param velocityEngine engine to be used
      */
     public void setVelocityEngine(@Nonnull final VelocityEngine velocityEngine) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
 
         engine = velocityEngine;
     }
@@ -132,7 +132,7 @@ public class TemplatedExecutableStatementBuilder extends AbstractExecutableState
      * @param handler reference insertion event handler to be used
      */
     public void setReferenceInsertionEventHandler(@Nullable final ReferenceInsertionEventHandler handler) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
 
         eventHandler = handler;
     }
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ContextDerivedAttributeDefinition.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ContextDerivedAttributeDefinition.java
index feb48ca7c..1678df0e6 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ContextDerivedAttributeDefinition.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ContextDerivedAttributeDefinition.java
@@ -23,6 +23,11 @@ import java.util.function.Function;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
+import org.opensaml.messaging.context.navigate.ParentContextLookup;
+import org.opensaml.profile.context.ProfileRequestContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import net.shibboleth.idp.attribute.IdPAttribute;
 import net.shibboleth.idp.attribute.IdPAttributeValue;
 import net.shibboleth.idp.attribute.resolver.AbstractAttributeDefinition;
@@ -31,14 +36,8 @@ import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
 import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContext;
 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.messaging.context.navigate.ParentContextLookup;
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 /**
  * An attribute definition which returns an attribute whose values are derived from the
  * {@link ProfileRequestContext} associated with the request via a plugged in {@link Function}.
@@ -72,8 +71,7 @@ public class ContextDerivedAttributeDefinition extends AbstractAttributeDefiniti
      */
     public void setProfileRequestContextLookupStrategy(
             @Nonnull final Function<AttributeResolutionContext,ProfileRequestContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         prcLookupStrategy = Constraint.isNotNull(strategy, "ProfileRequestContext lookup strategy cannot be null");
     }
 
@@ -84,7 +82,7 @@ public class ContextDerivedAttributeDefinition extends AbstractAttributeDefiniti
      */
     public void setAttributeValuesFunction(
             @Nonnull final Function<ProfileRequestContext,List<IdPAttributeValue>> function) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
         attributeValuesFunction = Constraint.isNotNull(function, "Attribute Function cannot be null");
     }
 
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/DecryptedAttributeDefinition.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/DecryptedAttributeDefinition.java
index eb9f3a7e3..04b3f5fc3 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/DecryptedAttributeDefinition.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/DecryptedAttributeDefinition.java
@@ -38,7 +38,6 @@ import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
 import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContext;
 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.security.DataSealer;
 
@@ -66,8 +65,7 @@ public class DecryptedAttributeDefinition extends AbstractAttributeDefinition {
      * @param newSealer what to set
      */
     public void setDataSealer(@Nonnull final DataSealer newSealer) {
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
 
         sealer = Constraint.isNotNull(newSealer, "DataSealer cannot be null");
     }
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/PrescopedAttributeDefinition.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/PrescopedAttributeDefinition.java
index 76387ab04..081d173a7 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/PrescopedAttributeDefinition.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/PrescopedAttributeDefinition.java
@@ -24,6 +24,9 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.ThreadSafe;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import net.shibboleth.idp.attribute.EmptyAttributeValue;
 import net.shibboleth.idp.attribute.IdPAttribute;
 import net.shibboleth.idp.attribute.IdPAttributeValue;
@@ -37,13 +40,9 @@ import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
 import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContext;
 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.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 /**
  * An attribute definition that creates {@link ScopedStringAttributeValue}s by taking a source attribute value splitting
  * it at a delimiter. The first atom becomes the attribute value and the second value becomes the scope.
@@ -72,8 +71,7 @@ public class PrescopedAttributeDefinition extends AbstractAttributeDefinition {
      * @param newScopeDelimiter delimiter between value and scope
      */
     public void setScopeDelimiter(@Nonnull @NotEmpty final String newScopeDelimiter) {
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
 
         scopeDelimiter =
                 Constraint.isNotNull(StringSupport.trimOrNull(newScopeDelimiter), getLogPrefix()
@@ -85,8 +83,7 @@ public class PrescopedAttributeDefinition extends AbstractAttributeDefinition {
             @Nonnull final AttributeResolutionContext resolutionContext,
             @Nonnull final AttributeResolverWorkContext workContext) throws ResolutionException {
         Constraint.isNotNull(workContext, getLogPrefix() + " AttributeResolverWorkContext cannot be null");
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
+        throwComponentStateExceptions();
 
         final IdPAttribute resultantAttribute = new IdPAttribute(getId());
 
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/RegexSplitAttributeDefinition.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/RegexSplitAttributeDefinition.java
index 740f26632..52c2f5b7b 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/RegexSplitAttributeDefinition.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/RegexSplitAttributeDefinition.java
@@ -26,6 +26,9 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.ThreadSafe;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import net.shibboleth.idp.attribute.EmptyAttributeValue;
 import net.shibboleth.idp.attribute.EmptyAttributeValue.EmptyType;
 import net.shibboleth.idp.attribute.IdPAttribute;
@@ -39,12 +42,8 @@ import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
 import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContext;
 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.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 /**
  * An {@link net.shibboleth.idp.attribute.resolver.AttributeDefinition} that produces its attribute values by taking the
  * first group match of a regular expression evaluating against the values of this definition's dependencies.
@@ -73,8 +72,7 @@ public class RegexSplitAttributeDefinition extends AbstractAttributeDefinition {
      * @param expression regular expression used to split input values
      */
     public void setRegularExpression(@Nonnull final Pattern expression) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
 
         regexp = Constraint.isNotNull(expression, "Regular expression cannot be null");
     }
@@ -85,8 +83,7 @@ public class RegexSplitAttributeDefinition extends AbstractAttributeDefinition {
             @Nonnull final AttributeResolverWorkContext workContext) throws ResolutionException {
         Constraint.isNotNull(workContext, "AttributeResolverWorkContext cannot be null");
 
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwComponentStateExceptions();
 
         final List<IdPAttributeValue> resultantValues = new ArrayList<>();
         final IdPAttribute resultantAttribute = new IdPAttribute(getId());
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScopedAttributeDefinition.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScopedAttributeDefinition.java
index 4f6f45a3e..915bf15c8 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScopedAttributeDefinition.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScopedAttributeDefinition.java
@@ -45,7 +45,6 @@ import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContex
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
 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;
 
@@ -83,8 +82,7 @@ public class ScopedAttributeDefinition extends AbstractAttributeDefinition {
      * @param newScope what to set.
      */
     public void setScope(@Nonnull @NotEmpty final String newScope) {
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
 
         scope = Constraint.isNotNull(StringSupport.trimOrNull(newScope), "Scope can not be null or empty");
     }
@@ -104,8 +102,7 @@ public class ScopedAttributeDefinition extends AbstractAttributeDefinition {
      * @param attributeId what to set.
      */
     public void setScopeSource(@Nonnull @NotEmpty final String attributeId) {
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
 
         scopeSource = Constraint.isNotNull(
                 StringSupport.trimOrNull(attributeId), "ScopeSource can not be null or empty");
@@ -135,7 +132,7 @@ public class ScopedAttributeDefinition extends AbstractAttributeDefinition {
             throw new ResolutionException("Exactly one value for scope source required");
         }
         final IdPAttributeValue value = values.get(0);
-        if ((value instanceof StringAttributeValue) && !(value instanceof ScopedStringAttributeValue)) {
+        if (value instanceof StringAttributeValue && !(value instanceof ScopedStringAttributeValue)) {
             return ((StringAttributeValue) value).getValue();
         }
         log.error("{} Attribute {} must return a StringAttributeValue returned a {}", getLogPrefix(),
@@ -148,8 +145,7 @@ public class ScopedAttributeDefinition extends AbstractAttributeDefinition {
             @Nonnull final AttributeResolutionContext resolutionContext,
             @Nonnull final AttributeResolverWorkContext workContext) throws ResolutionException {
 
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
+        throwComponentStateExceptions();
 
         final IdPAttribute resultantAttribute = new IdPAttribute(getId());
         final String scopeValue;
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedAttributeDefinition.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedAttributeDefinition.java
index d2cefeccf..f5ea93a2a 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedAttributeDefinition.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/ScriptedAttributeDefinition.java
@@ -45,7 +45,6 @@ import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContex
 import net.shibboleth.idp.authn.context.SubjectContext;
 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.scripting.AbstractScriptEvaluator;
 import net.shibboleth.utilities.java.support.scripting.EvaluableScript;
@@ -115,8 +114,7 @@ public class ScriptedAttributeDefinition extends AbstractAttributeDefinition {
      * @param object the custom object
      */
     @Nullable public void setCustomObject(final Object object) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
 
         customObject = object;
     }
@@ -136,8 +134,7 @@ public class ScriptedAttributeDefinition extends AbstractAttributeDefinition {
      * @param definitionScript the script to be evaluated
      */
     public void setScript(@Nonnull final EvaluableScript definitionScript) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
 
         script = Constraint.isNotNull(definitionScript, "Attribute definition script cannot be null");
     }
@@ -151,8 +148,7 @@ public class ScriptedAttributeDefinition extends AbstractAttributeDefinition {
      */
     public void setProfileRequestContextLookupStrategy(
             @Nonnull final Function<AttributeResolutionContext,ProfileRequestContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
 
         prcLookupStrategy = Constraint.isNotNull(strategy, "ProfileRequestContext lookup strategy cannot be null");
     }
@@ -166,8 +162,7 @@ public class ScriptedAttributeDefinition extends AbstractAttributeDefinition {
      */
     public void
             setSubjectContextLookupStrategy(@Nonnull final Function<ProfileRequestContext,SubjectContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
 
         scLookupStrategy = Constraint.isNotNull(strategy, "SubjectContext lookup strategy cannot be null");
     }
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/StaticAttributeDefinition.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/StaticAttributeDefinition.java
index 57b2b1ff6..c38ff3f4f 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/StaticAttributeDefinition.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/StaticAttributeDefinition.java
@@ -21,6 +21,9 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.annotation.concurrent.ThreadSafe;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import net.shibboleth.idp.attribute.IdPAttribute;
 import net.shibboleth.idp.attribute.resolver.AbstractAttributeDefinition;
 import net.shibboleth.idp.attribute.resolver.ResolutionException;
@@ -28,10 +31,6 @@ import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
 import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContext;
 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 org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /** An attribute definition that simply returns a static value. */
 @ThreadSafe
@@ -49,8 +48,7 @@ public class StaticAttributeDefinition extends AbstractAttributeDefinition {
      * @param newAttribute what to set.
      */
     public void setValue(@Nullable final IdPAttribute newAttribute) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
 
         value = newAttribute;
     }
@@ -68,8 +66,7 @@ public class StaticAttributeDefinition extends AbstractAttributeDefinition {
     @Override @Nonnull protected IdPAttribute doAttributeDefinitionResolve(
             final AttributeResolutionContext resolutionContext,
             @Nonnull final AttributeResolverWorkContext workContext) throws ResolutionException {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwComponentStateExceptions();
         log.debug("{} resolving static attribute {}", getLogPrefix(), value);
 
         return value;
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/SubjectDerivedAttributeValuesFunction.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/SubjectDerivedAttributeValuesFunction.java
index 3a768e53d..4941b9d89 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/SubjectDerivedAttributeValuesFunction.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/SubjectDerivedAttributeValuesFunction.java
@@ -28,6 +28,11 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.security.auth.Subject;
 
+import org.opensaml.messaging.context.navigate.ChildContextLookup;
+import org.opensaml.profile.context.ProfileRequestContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import net.shibboleth.idp.attribute.IdPAttributeValue;
 import net.shibboleth.idp.authn.context.SubjectCanonicalizationContext;
 import net.shibboleth.idp.authn.context.SubjectContext;
@@ -35,14 +40,8 @@ import net.shibboleth.idp.authn.context.navigate.SubjectCanonicalizationContextS
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
 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.logic.Constraint;
 
-import org.opensaml.messaging.context.navigate.ChildContextLookup;
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 /**
  * A Function which returns {@link IdPAttributeValue}s derived from the {@link java.security.Principal}s
  * associated with the request. The precise values are determined by an injected {@link Function}.
@@ -81,7 +80,7 @@ public class SubjectDerivedAttributeValuesFunction extends AbstractIdentifiableI
      * @param flag flag to set
      */
     public void setForCanonicalization(final boolean flag) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
         
         forCanonicalization = flag;
     }
@@ -95,7 +94,7 @@ public class SubjectDerivedAttributeValuesFunction extends AbstractIdentifiableI
      */
     public void setSubjectContextLookupStrategy(
             @Nonnull final Function<ProfileRequestContext,SubjectContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
 
         scLookupStrategy = Constraint.isNotNull(strategy, "SubjectContext lookup strategy cannot be null");
     }
@@ -106,7 +105,7 @@ public class SubjectDerivedAttributeValuesFunction extends AbstractIdentifiableI
      * @param strategy strategy function
      */
     public void setAttributeValuesFunction(@Nonnull final Function<Principal,List<IdPAttributeValue>> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
         
         attributeValuesFunction = Constraint.isNotNull(strategy, "Attribute value lookup strategy cannot be null");
     }
@@ -120,7 +119,7 @@ public class SubjectDerivedAttributeValuesFunction extends AbstractIdentifiableI
      */
     public void setSubjectLookupStrategy(
             @Nullable final Function<ProfileRequestContext,Subject> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
 
         subjectLookupStrategy = strategy;
     }
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/TemplateAttributeDefinition.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/TemplateAttributeDefinition.java
index ec8a344e8..e34f93546 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/TemplateAttributeDefinition.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/TemplateAttributeDefinition.java
@@ -47,7 +47,6 @@ import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElemen
 import net.shibboleth.utilities.java.support.annotation.constraint.ThreadSafeAfterInit;
 import net.shibboleth.utilities.java.support.collection.LazyMap;
 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 net.shibboleth.utilities.java.support.velocity.Template;
@@ -100,8 +99,7 @@ public class TemplateAttributeDefinition extends AbstractAttributeDefinition {
      * @param velocityTemplate template to be evaluated
      */
     public void setTemplateText(@Nullable final String velocityTemplate) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
 
         templateText = StringSupport.trimOrNull(velocityTemplate);
     }
@@ -121,8 +119,7 @@ public class TemplateAttributeDefinition extends AbstractAttributeDefinition {
      * @param velocityEngine engine to be used
      */
     public void setVelocityEngine(@Nonnull final VelocityEngine velocityEngine) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
 
         engine = Constraint.isNotNull(velocityEngine, "VelocityEngine cannot be null");
     }
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/MappedAttributeDefinition.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/MappedAttributeDefinition.java
index c0943743a..4e936652c 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/MappedAttributeDefinition.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/MappedAttributeDefinition.java
@@ -45,7 +45,6 @@ import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContex
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
 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;
 
@@ -89,8 +88,7 @@ public class MappedAttributeDefinition extends AbstractAttributeDefinition {
      * @param mappings functions used to map an input value to an output value
      */
     public void setValueMaps(@Nullable @NonnullElements final Collection<ValueMap> mappings) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
 
         valueMaps = mappings != null ? Set.copyOf(mappings) : Collections.emptySet();
     }
@@ -122,8 +120,7 @@ public class MappedAttributeDefinition extends AbstractAttributeDefinition {
      * @param newDefaultValue the default return value
      */
     public void setDefaultValue(@Nullable final String newDefaultValue) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
         final String trimmedDefault = StringSupport.trimOrNull(newDefaultValue);
         if (null == trimmedDefault) {
             defaultValue = null;
@@ -147,8 +144,7 @@ public class MappedAttributeDefinition extends AbstractAttributeDefinition {
      * @param newPassThru whether the definition passes unmatched values unchanged or suppresses them.
      */
     public void setPassThru(final boolean newPassThru) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
         passThru = newPassThru;
     }
 
@@ -192,8 +188,7 @@ public class MappedAttributeDefinition extends AbstractAttributeDefinition {
     @Override @Nullable protected IdPAttribute doAttributeDefinitionResolve(
             @Nonnull final AttributeResolutionContext resolutionContext,
             @Nonnull final AttributeResolverWorkContext workContext) throws ResolutionException {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwComponentStateExceptions();
         Constraint.isNotNull(resolutionContext, "Attribute resolution context can not be null");
 
         final List<IdPAttributeValue> unmappedResults =
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/SourceValue.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/SourceValue.java
index f00fc3a6e..2099f9394 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/SourceValue.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/mapped/impl/SourceValue.java
@@ -26,7 +26,6 @@ import com.google.common.base.MoreObjects;
 
 import net.shibboleth.utilities.java.support.component.AbstractInitializableComponent;
 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.DeprecationSupport;
 import net.shibboleth.utilities.java.support.primitive.DeprecationSupport.ObjectType;
@@ -75,7 +74,7 @@ public class SourceValue extends AbstractInitializableComponent {
      * @param theCaseSensitive whether case should be ignored when matching.  Null taken as default;
      */
     public void setCaseSensitive(final boolean theCaseSensitive) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
         caseSensitive = theCaseSensitive;
     }
 
@@ -96,7 +95,7 @@ public class SourceValue extends AbstractInitializableComponent {
      * @deprecated in V4 - use setCaseSensitive
      */
     @Deprecated public void setIgnoreCase(final boolean theIgnoreCase) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
         DeprecationSupport.warnOnce(ObjectType.METHOD, "setIgnoreCase", null, "setCaseSensitive");
             setCaseSensitive(!theIgnoreCase);
     }
@@ -119,7 +118,7 @@ public class SourceValue extends AbstractInitializableComponent {
      * @param thePartialMatch whether partial matches should be allowed.  Null defaults to false;
      */
     public void setPartialMatch(final boolean thePartialMatch) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
         partialMatch = thePartialMatch;
     }
     
@@ -138,7 +137,7 @@ public class SourceValue extends AbstractInitializableComponent {
      * @param theValue value string This may contain regular expressions.
      */
     public void setValue(@Nullable final String theValue) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
         value = StringSupport.trimOrNull(theValue);
     }
     
@@ -159,7 +158,7 @@ public class SourceValue extends AbstractInitializableComponent {
      * @return Returns the pattern.
      */
     @Nonnull public Pattern getPattern() {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
+        throwComponentStateExceptions();
         Constraint.isFalse(isPartialMatch(), "getPattern is only meaningful for a non partial Match, use getValue()");
         return pattern;
     }
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/AbstractHTTPSearchBuilder.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/AbstractHTTPSearchBuilder.java
index c36f3c668..aeeb608e4 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/AbstractHTTPSearchBuilder.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/AbstractHTTPSearchBuilder.java
@@ -47,7 +47,6 @@ import net.shibboleth.utilities.java.support.annotation.constraint.NotLive;
 import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
 import net.shibboleth.utilities.java.support.collection.Pair;
 import net.shibboleth.utilities.java.support.component.AbstractInitializableComponent;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
 import net.shibboleth.utilities.java.support.logic.Constraint;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
@@ -93,8 +92,7 @@ public abstract class AbstractHTTPSearchBuilder extends AbstractInitializableCom
      * @param headers map of headers
      */
     public void setHeaders(@Nonnull @NonnullElements final Map<String,String> headers) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
                 
         Constraint.isNotNull(headers, "Map of headers cannot be null");
         
@@ -130,8 +128,7 @@ public abstract class AbstractHTTPSearchBuilder extends AbstractInitializableCom
      * @param params client security parameters
      */
     public void setHttpClientSecurityParameters(@Nullable final HttpClientSecurityParameters params) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
 
         httpClientSecurityParameters = params;
     }
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/HTTPDataConnector.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/HTTPDataConnector.java
index 56813bac1..3045a6aed 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/HTTPDataConnector.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/HTTPDataConnector.java
@@ -31,6 +31,7 @@ import org.apache.http.client.HttpClient;
 import org.opensaml.security.httpclient.HttpClientSecurityParameters;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+
 import net.shibboleth.idp.attribute.IdPAttribute;
 import net.shibboleth.idp.attribute.resolver.ResolutionException;
 import net.shibboleth.idp.attribute.resolver.dc.ValidationException;
@@ -40,7 +41,6 @@ import net.shibboleth.idp.attribute.resolver.dc.http.HTTPSearch;
 import net.shibboleth.idp.attribute.resolver.dc.impl.AbstractSearchDataConnector;
 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;
 
 /**
@@ -79,8 +79,7 @@ public class HTTPDataConnector extends AbstractSearchDataConnector<HTTPSearch,HT
      * @param client client to use
      */
     public void setHttpClient(@Nonnull final HttpClient client) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
 
         httpClient = Constraint.isNotNull(client, "HttpClient cannot be null");
     }
@@ -91,8 +90,7 @@ public class HTTPDataConnector extends AbstractSearchDataConnector<HTTPSearch,HT
      * @param params the new client security parameters
      */
     public void setHttpClientSecurityParameters(@Nullable final HttpClientSecurityParameters params) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
 
         httpClientSecurityParameters = params;
     }
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/ScriptedResponseMappingStrategy.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/ScriptedResponseMappingStrategy.java
index 98cc269fb..6fa917488 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/ScriptedResponseMappingStrategy.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/ScriptedResponseMappingStrategy.java
@@ -306,8 +306,7 @@ public final class ScriptedResponseMappingStrategy extends AbstractScriptEvaluat
                 if (cause != null) {
                     if (cause instanceof ScriptException) {
                         throw (ScriptException) cause;
-                    }
-                    else if (cause instanceof IOException) {
+                    } else if (cause instanceof IOException) {
                         throw (IOException) cause;
                     }
                 }
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/TemplatedBodyBuilder.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/TemplatedBodyBuilder.java
index cc85980c9..767dead9d 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/TemplatedBodyBuilder.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/TemplatedBodyBuilder.java
@@ -24,17 +24,6 @@ import java.util.Map;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
-import net.shibboleth.idp.attribute.IdPAttributeValue;
-import net.shibboleth.idp.attribute.resolver.ResolutionException;
-import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-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 net.shibboleth.utilities.java.support.velocity.Template;
-
 import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.client.methods.HttpPut;
@@ -51,6 +40,16 @@ import com.google.common.escape.Escaper;
 import com.google.common.net.UrlEscapers;
 import com.google.common.xml.XmlEscapers;
 
+import net.shibboleth.idp.attribute.IdPAttributeValue;
+import net.shibboleth.idp.attribute.resolver.ResolutionException;
+import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
+import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.utilities.java.support.primitive.StringSupport;
+import net.shibboleth.utilities.java.support.velocity.Template;
+
 /**
  * An {@link net.shibboleth.idp.attribute.resolver.dc.ExecutableSearchBuilder} that generates a
  * request by evaluating {@link Template}s against the currently resolved attributes within an
@@ -167,8 +166,7 @@ public class TemplatedBodyBuilder extends AbstractHTTPSearchBuilder {
      * @param text template to be evaluated
      */
     public void setURLTemplateText(@Nullable final String text) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
 
         urlTemplateText = StringSupport.trimOrNull(text);
     }
@@ -188,8 +186,7 @@ public class TemplatedBodyBuilder extends AbstractHTTPSearchBuilder {
      * @param text template to be evaluated
      */
     public void setBodyTemplateText(@Nullable final String text) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
 
         bodyTemplateText = StringSupport.trimOrNull(text);
     }
@@ -209,8 +206,7 @@ public class TemplatedBodyBuilder extends AbstractHTTPSearchBuilder {
      * @param text template to be evaluated
      */
     public void setCacheKeyTemplateText(@Nullable final String text) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
 
         cacheKeyTemplateText = StringSupport.trimOrNull(text);
     }
@@ -230,8 +226,7 @@ public class TemplatedBodyBuilder extends AbstractHTTPSearchBuilder {
      * @param velocityEngine engine to be used
      */
     public void setVelocityEngine(@Nonnull final VelocityEngine velocityEngine) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
 
         engine = Constraint.isNotNull(velocityEngine, "Velocity engine cannot be null");
     }
@@ -244,8 +239,7 @@ public class TemplatedBodyBuilder extends AbstractHTTPSearchBuilder {
      * @param m method
      */
     public void setMethod(@Nonnull @NotEmpty final String m) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
 
         method = Constraint.isNotNull(StringSupport.trimOrNull(m), "HTTP method cannot be null or empty");
         Constraint.isTrue(HttpPost.METHOD_NAME.equals(method) || HttpPut.METHOD_NAME.equals(method),
@@ -260,8 +254,7 @@ public class TemplatedBodyBuilder extends AbstractHTTPSearchBuilder {
      * @param type MIME type
      */
     public void setMIMEType(@Nonnull @NotEmpty final String type) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
 
         mimeType = Constraint.isNotNull(StringSupport.trimOrNull(type), "MIME type cannot be null or empty");
     }
@@ -272,8 +265,7 @@ public class TemplatedBodyBuilder extends AbstractHTTPSearchBuilder {
      * @param c character set
      */
     public void setCharacterSet(@Nullable final String c) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
 
         charset = StringSupport.trimOrNull(c);
     }
@@ -284,8 +276,7 @@ public class TemplatedBodyBuilder extends AbstractHTTPSearchBuilder {
      * @param object the custom object
      */
     public void setCustomObject(@Nullable final Object object) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
 
         customObject = object;
     }
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/TemplatedURLBuilder.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/TemplatedURLBuilder.java
index 04abe6220..4f5c7ae90 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/TemplatedURLBuilder.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/TemplatedURLBuilder.java
@@ -24,26 +24,25 @@ import java.util.Map;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.VelocityEngine;
+import org.apache.velocity.exception.VelocityException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.escape.Escaper;
+import com.google.common.net.UrlEscapers;
+
 import net.shibboleth.idp.attribute.IdPAttributeValue;
 import net.shibboleth.idp.attribute.resolver.ResolutionException;
 import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
 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 net.shibboleth.utilities.java.support.velocity.Template;
 
-import org.apache.velocity.VelocityContext;
-import org.apache.velocity.app.VelocityEngine;
-import org.apache.velocity.exception.VelocityException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.escape.Escaper;
-import com.google.common.net.UrlEscapers;
-
 /**
  * An {@link net.shibboleth.idp.attribute.resolver.dc.ExecutableSearchBuilder} that generates the URL to
  * request by evaluating a {@link Template} against the currently resolved attributes within an
@@ -106,8 +105,7 @@ public class TemplatedURLBuilder extends AbstractHTTPSearchBuilder {
      * @param text template to be evaluated
      */
     public void setTemplateText(@Nullable final String text) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
 
         templateText = StringSupport.trimOrNull(text);
     }
@@ -127,8 +125,7 @@ public class TemplatedURLBuilder extends AbstractHTTPSearchBuilder {
      * @param velocityEngine engine to be used
      */
     public void setVelocityEngine(@Nonnull final VelocityEngine velocityEngine) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
 
         engine = Constraint.isNotNull(velocityEngine, "Velocity engine cannot be null");
     }
@@ -140,8 +137,7 @@ public class TemplatedURLBuilder extends AbstractHTTPSearchBuilder {
      * @param object the custom object
      */
     public void setCustomObject(@Nullable final Object object) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
+        throwSetterPreconditionExceptions();
 
         customObject = object;
     }
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImpl.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImpl.java
index 730096602..c8efbc683 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImpl.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/AttributeResolverImpl.java
@@ -666,7 +666,6 @@ public class AttributeResolverImpl extends AbstractServiceableComponent<Attribut
     /** {@inheritDoc} */
     @SuppressWarnings("removal")
     @Override protected void doInitialize() throws ComponentInitializationException {
-        super.doInitialize();
         
         logPrefix = new StringBuilder("Attribute Resolver '").append(getId()).append("':").toString();
 
@@ -699,6 +698,7 @@ public class AttributeResolverImpl extends AbstractServiceableComponent<Attribut
                 ((AbstractResolverPlugin<?>) plugin).setSuppressDisplayInformation(isSuppressDisplayInformation());
             }
         }
+        super.doInitialize();
     }
 
     /**
diff --git a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/RegexAtributeTest.java b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/RegexAtributeTest.java
index 12d9e2ab9..0923acbb4 100644
--- a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/RegexAtributeTest.java
+++ b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/ad/impl/RegexAtributeTest.java
@@ -242,7 +242,7 @@ public class RegexAtributeTest {
         try {
             attrDef.setRegularExpression(TestSources.CONNECTOR_ATTRIBUTE_VALUE_REGEXP_PATTERN);
             fail("setRegExp after destroy");
-        } catch (final UnmodifiableComponentException e) {
+        } catch (final UnmodifiableComponentException | DestroyedComponentException e) {
             // OK
         }
         try {

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


More information about the commits mailing list