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

Rod Widdowson rdw at steadingsoftware.com
Wed Jul 6 14:18:40 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=f3cc146937195bf40edacee6e17d7478488ef0be

commit f3cc146937195bf40edacee6e17d7478488ef0be
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Sun Jul 3 16:28:36 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-authn-api
---
 .../idp/authn/AbstractAuthenticationAction.java    | 11 +++--
 .../idp/authn/AbstractCredentialValidator.java     | 19 ++++----
 .../idp/authn/AbstractExtractionAction.java        | 19 +++-----
 .../AbstractSubjectCanonicalizationAction.java     | 28 +++++-------
 ...bstractUsernamePasswordCredentialValidator.java | 37 ++++++----------
 .../idp/authn/AbstractValidationAction.java        | 43 ++++++++----------
 .../idp/authn/AuthenticationFlowDescriptor.java    | 51 +++++++++-------------
 .../SubjectCanonicalizationFlowDescriptor.java     | 11 +++--
 .../idp/authn/duo/BasicDuoIntegration.java         | 33 ++++++--------
 .../principal/GenericPrincipalSerializer.java      | 10 ++---
 .../authn/principal/SealedPrincipalSerializer.java |  4 +-
 11 files changed, 107 insertions(+), 159 deletions(-)

diff --git a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractAuthenticationAction.java b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractAuthenticationAction.java
index 75361818b..6aebee7f3 100644
--- a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractAuthenticationAction.java
+++ b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractAuthenticationAction.java
@@ -22,15 +22,14 @@ 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 net.shibboleth.idp.authn.context.AuthenticationContext;
 import net.shibboleth.idp.profile.AbstractProfileAction;
-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.context.ProfileRequestContext;
-import org.opensaml.messaging.context.navigate.ChildContextLookup;
-
 /**
  * A base class for authentication related actions.
  * 
@@ -66,7 +65,7 @@ public abstract class AbstractAuthenticationAction
      */
     public void setAuthenticationContextLookupStrategy(
             @Nonnull final Function<ProfileRequestContext,AuthenticationContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
         
         authnCtxLookupStrategy = Constraint.isNotNull(strategy, "Strategy cannot be null");
     }
diff --git a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractCredentialValidator.java b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractCredentialValidator.java
index 9ac11ec8c..fb7b518f3 100644
--- a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractCredentialValidator.java
+++ b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractCredentialValidator.java
@@ -27,6 +27,12 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.security.auth.Subject;
 
+import org.opensaml.profile.context.ProfileRequestContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.base.Predicates;
+
 import net.shibboleth.idp.authn.context.AuthenticationContext;
 import net.shibboleth.idp.authn.context.RequestedPrincipalContext;
 import net.shibboleth.idp.authn.principal.PrincipalEvalPredicate;
@@ -37,15 +43,8 @@ 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.AbstractIdentifiedInitializableComponent;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
 import net.shibboleth.utilities.java.support.logic.Constraint;
 
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Predicates;
-
 /**
  * An abstract {@link CredentialValidator} that handles some common behavior.
  * 
@@ -83,7 +82,7 @@ public abstract class AbstractCredentialValidator extends AbstractIdentifiedInit
      * @param condition condition to use
      */
     public void setActivationCondition(@Nonnull final Predicate<ProfileRequestContext> condition) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
         
         activationCondition = Constraint.isNotNull(condition, "Activation condition cannot be null");
     }
@@ -102,7 +101,7 @@ public abstract class AbstractCredentialValidator extends AbstractIdentifiedInit
      * @param principals supported principals to include
      */
     public void setSupportedPrincipals(@Nullable @NonnullElements final Collection<Principal> principals) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
         
         if (principals != null) {
             final Collection<Principal> copy = Set.copyOf(principals);
@@ -123,7 +122,7 @@ public abstract class AbstractCredentialValidator extends AbstractIdentifiedInit
             @Nonnull final AuthenticationContext authenticationContext,
             @Nullable final WarningHandler warningHandler,
             @Nullable final ErrorHandler errorHandler) throws Exception {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
+        throwComponentStateExceptions();
         
         if (!activationCondition.test(profileRequestContext)) {
             log.debug("{} Activation condition was false, ignoring request", getLogPrefix());
diff --git a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractExtractionAction.java b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractExtractionAction.java
index ebbcb0508..fc016519b 100644
--- a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractExtractionAction.java
+++ b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractExtractionAction.java
@@ -27,16 +27,15 @@ import java.util.regex.Pattern;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 import net.shibboleth.utilities.java.support.collection.Pair;
-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;
-
 /**
  * A base class for authentication actions that extract usernames for subsequent use.
  * 
@@ -75,8 +74,7 @@ public abstract class AbstractExtractionAction extends AbstractAuthenticationAct
      * @param newTransforms collection of replacement transforms
      */
     public void setTransforms(@Nullable @NonnullElements final Collection<Pair<String, String>> newTransforms) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         if (newTransforms != null) {
             transforms = new ArrayList<>();
             for (final Pair<String,String> p : newTransforms) {
@@ -95,8 +93,7 @@ public abstract class AbstractExtractionAction extends AbstractAuthenticationAct
      * @param flag  uppercase flag
      */
     public void setUppercase(final boolean flag) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         uppercase = flag;
     }
 
@@ -106,8 +103,7 @@ public abstract class AbstractExtractionAction extends AbstractAuthenticationAct
      * @param flag lowercase flag
      */
     public void setLowercase(final boolean flag) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         lowercase = flag;
     }
     
@@ -117,8 +113,7 @@ public abstract class AbstractExtractionAction extends AbstractAuthenticationAct
      * @param flag trim flag
      */
     public void setTrim(final boolean flag) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         trim = flag;
     }
     
diff --git a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractSubjectCanonicalizationAction.java b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractSubjectCanonicalizationAction.java
index 9f73bd5d4..91d251a59 100644
--- a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractSubjectCanonicalizationAction.java
+++ b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractSubjectCanonicalizationAction.java
@@ -28,21 +28,20 @@ import java.util.regex.Pattern;
 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.authn.context.SubjectCanonicalizationContext;
 import net.shibboleth.idp.profile.AbstractProfileAction;
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 import net.shibboleth.utilities.java.support.collection.Pair;
-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;
-
 /**
  * A base class for subject canonicalization actions.
  * 
@@ -98,8 +97,7 @@ public abstract class AbstractSubjectCanonicalizationAction
      */
     public void setLookupStrategy(
             @Nonnull final Function<ProfileRequestContext,SubjectCanonicalizationContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         scCtxLookupStrategy = Constraint.isNotNull(strategy, "Strategy cannot be null");
     }
 
@@ -109,8 +107,7 @@ public abstract class AbstractSubjectCanonicalizationAction
      * @param newTransforms collection of replacement transforms
      */
     public void setTransforms(@Nullable @NonnullElements final Collection<Pair<String, String>> newTransforms) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         if (newTransforms != null) {
             transforms = new ArrayList<>();
             for (final Pair<String,String> p : newTransforms) {
@@ -129,8 +126,7 @@ public abstract class AbstractSubjectCanonicalizationAction
      * @param flag  uppercase flag
      */
     public void setUppercase(final boolean flag) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         uppercase = flag;
     }
 
@@ -140,8 +136,7 @@ public abstract class AbstractSubjectCanonicalizationAction
      * @param flag lowercase flag
      */
     public void setLowercase(final boolean flag) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         lowercase = flag;
     }
     
@@ -151,8 +146,7 @@ public abstract class AbstractSubjectCanonicalizationAction
      * @param flag trim flag
      */
     public void setTrim(final boolean flag) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         trim = flag;
     }
     
diff --git a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractUsernamePasswordCredentialValidator.java b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractUsernamePasswordCredentialValidator.java
index b000125df..bda6302f4 100644
--- a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractUsernamePasswordCredentialValidator.java
+++ b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractUsernamePasswordCredentialValidator.java
@@ -30,6 +30,11 @@ import javax.annotation.Nullable;
 import javax.security.auth.Subject;
 import javax.security.auth.login.LoginException;
 
+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.authn.context.AuthenticationContext;
 import net.shibboleth.idp.authn.context.UsernamePasswordContext;
 import net.shibboleth.idp.authn.principal.PasswordPrincipal;
@@ -38,15 +43,9 @@ 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.ThreadSafeAfterInit;
 import net.shibboleth.utilities.java.support.collection.Pair;
-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.context.ProfileRequestContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 /**
  * An abstract {@link CredentialValidator} that checks for a {@link UsernamePasswordContext} and delegates
  * to subclasses to produce a result.
@@ -104,8 +103,7 @@ public abstract class AbstractUsernamePasswordCredentialValidator extends Abstra
      */
     public void setUsernamePasswordContextLookupStrategy(
             @Nonnull final Function<AuthenticationContext,UsernamePasswordContext> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         usernamePasswordContextLookupStrategy = Constraint.isNotNull(strategy,
                 "UsernamePasswordContextLookupStrategy cannot be null");
     }
@@ -125,8 +123,7 @@ public abstract class AbstractUsernamePasswordCredentialValidator extends Abstra
      * @param flag  flag to set
      */
     public void setSavePasswordToCredentialSet(final boolean flag) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         savePasswordToCredentialSet = flag;
     }
 
@@ -155,8 +152,7 @@ public abstract class AbstractUsernamePasswordCredentialValidator extends Abstra
      */
     @Deprecated(since="4.1.0", forRemoval=true)
     public void setRemoveContextAfterValidation(final boolean flag) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         removeContextAfterValidation = flag;
     }
 
@@ -166,8 +162,7 @@ public abstract class AbstractUsernamePasswordCredentialValidator extends Abstra
      * @param expression a matching expression
      */
     public void setMatchExpression(@Nullable final Pattern expression) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         if (expression != null && !expression.pattern().isEmpty()) {
             matchExpression = expression;
         } else {
@@ -181,8 +176,7 @@ public abstract class AbstractUsernamePasswordCredentialValidator extends Abstra
      * @param newTransforms collection of replacement transforms
      */
     public void setTransforms(@Nullable @NonnullElements final Collection<Pair<String,String>> newTransforms) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         if (newTransforms != null) {
             transforms = new ArrayList<>();
             for (final Pair<String,String> p : newTransforms) {
@@ -201,8 +195,7 @@ public abstract class AbstractUsernamePasswordCredentialValidator extends Abstra
      * @param flag  uppercase flag
      */
     public void setUppercase(final boolean flag) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         uppercase = flag;
     }
 
@@ -212,8 +205,7 @@ public abstract class AbstractUsernamePasswordCredentialValidator extends Abstra
      * @param flag lowercase flag
      */
     public void setLowercase(final boolean flag) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         lowercase = flag;
     }
     
@@ -223,8 +215,7 @@ public abstract class AbstractUsernamePasswordCredentialValidator extends Abstra
      * @param flag trim flag
      */
     public void setTrim(final boolean flag) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         trim = flag;
     }
     
@@ -234,7 +225,7 @@ public abstract class AbstractUsernamePasswordCredentialValidator extends Abstra
             @Nonnull final AuthenticationContext authenticationContext,
             @Nullable final WarningHandler warningHandler,
             @Nullable final ErrorHandler errorHandler) throws Exception {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
+        throwComponentStateExceptions();
         
         final UsernamePasswordContext upContext = usernamePasswordContextLookupStrategy.apply(authenticationContext);
         if (upContext == null) {
diff --git a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractValidationAction.java b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractValidationAction.java
index fe5bcc392..bd0be798b 100644
--- a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractValidationAction.java
+++ b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AbstractValidationAction.java
@@ -33,6 +33,15 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.security.auth.Subject;
 
+import org.opensaml.core.metrics.MetricsSupport;
+import org.opensaml.profile.action.ActionSupport;
+import org.opensaml.profile.context.ProfileRequestContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.base.Strings;
+import com.google.common.collect.Iterables;
+
 import net.shibboleth.idp.authn.context.AuthenticationContext;
 import net.shibboleth.idp.authn.context.AuthenticationErrorContext;
 import net.shibboleth.idp.authn.context.AuthenticationWarningContext;
@@ -47,19 +56,9 @@ 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.NotLive;
 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;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
-import org.opensaml.core.metrics.MetricsSupport;
-import org.opensaml.profile.action.ActionSupport;
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Strings;
-import com.google.common.collect.Iterables;
-
 /**
  * A base class for authentication related actions that validate credentials and produce an
  * {@link AuthenticationResult}.
@@ -135,8 +134,7 @@ public abstract class AbstractValidationAction extends AbstractAuthenticationAct
      * @since 3.3.0
      */
     public void setMetricName(@Nonnull @NotEmpty final String name) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         metricName = Constraint.isNotNull(StringSupport.trimOrNull(name), "Metric name cannot be null or empty");
     }
     
@@ -158,8 +156,7 @@ public abstract class AbstractValidationAction extends AbstractAuthenticationAct
      * @param flag flag to set
      */
     public void setAddDefaultPrincipals(final boolean flag) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         addDefaultPrincipals = flag;
     }
     
@@ -183,8 +180,7 @@ public abstract class AbstractValidationAction extends AbstractAuthenticationAct
      * @param messages the error message / event mappings to set
      */
     public void setClassifiedMessages(@Nullable @NonnullElements final Map<String,Collection<String>> messages) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         if (messages != null) {
             classifiedMessages = new LinkedHashMap<>();
             for (final Map.Entry<String, Collection<String>> entry : messages.entrySet()) {
@@ -213,8 +209,7 @@ public abstract class AbstractValidationAction extends AbstractAuthenticationAct
      * @param predicate predicate to apply, or null
      */
     public void setResultCachingPredicate(@Nullable final Predicate<ProfileRequestContext> predicate) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         resultCachingPredicate = predicate;
     }
     
@@ -237,8 +232,7 @@ public abstract class AbstractValidationAction extends AbstractAuthenticationAct
      * @since 4.1.0
      */
     public void setCleanupHook(@Nullable final Consumer<ProfileRequestContext> hook) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         cleanupHook = hook;
     }
     
@@ -259,8 +253,7 @@ public abstract class AbstractValidationAction extends AbstractAuthenticationAct
      * @param strategy lookup strategy
      */
     public void setRequesterLookupStrategy(@Nullable final Function<ProfileRequestContext,String> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         requesterLookupStrategy = strategy;
     }
     
@@ -282,8 +275,7 @@ public abstract class AbstractValidationAction extends AbstractAuthenticationAct
      */
     public void setResponderLookupStrategy(
             @Nullable final Function<ProfileRequestContext,String> strategy) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         responderLookupStrategy = strategy;
     }
     
@@ -303,8 +295,7 @@ public abstract class AbstractValidationAction extends AbstractAuthenticationAct
      * @param principals supported principals to include
      */
     public void setSupportedPrincipals(@Nullable @NonnullElements final Collection<Principal> principals) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         getSubject().getPrincipals().clear();
         
         if (principals != null && !principals.isEmpty()) {
diff --git a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AuthenticationFlowDescriptor.java b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AuthenticationFlowDescriptor.java
index 49eaad7f4..dcde3666a 100644
--- a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AuthenticationFlowDescriptor.java
+++ b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AuthenticationFlowDescriptor.java
@@ -34,6 +34,13 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.security.auth.Subject;
 
+import org.opensaml.profile.context.ProfileRequestContext;
+import org.opensaml.storage.StorageSerializer;
+import org.springframework.core.Ordered;
+
+import com.google.common.base.MoreObjects;
+import com.google.common.base.Predicates;
+
 import net.shibboleth.idp.authn.context.AuthenticationContext;
 import net.shibboleth.idp.authn.principal.PrincipalService;
 import net.shibboleth.idp.authn.principal.PrincipalServiceManager;
@@ -44,18 +51,10 @@ 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.logic.PredicateSupport;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.opensaml.storage.StorageSerializer;
-import org.springframework.core.Ordered;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Predicates;
-
 /**
  * A descriptor for an authentication flow.
  * 
@@ -174,8 +173,7 @@ public class AuthenticationFlowDescriptor extends AbstractIdentifiableInitializa
      * @param isSupported whether this flow supports non-browser clients
      */
     public void setNonBrowserSupported(final boolean isSupported) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         supportsNonBrowser = isSupported;
     }
 
@@ -194,8 +192,7 @@ public class AuthenticationFlowDescriptor extends AbstractIdentifiableInitializa
      * @param isSupported whether this flow supports passive authentication
      */
     public void setPassiveAuthenticationSupported(final boolean isSupported) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         supportsPassive = isSupported;
     }
 
@@ -214,8 +211,7 @@ public class AuthenticationFlowDescriptor extends AbstractIdentifiableInitializa
      * @param isSupported whether this flow supports forced authentication.
      */
     public void setForcedAuthenticationSupported(final boolean isSupported) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         supportsForced = isSupported;
     }
     
@@ -315,7 +311,7 @@ public class AuthenticationFlowDescriptor extends AbstractIdentifiableInitializa
      * @since 3.4.0
      */
     public void setReuseCondition(@Nonnull final Predicate<ProfileRequestContext> condition) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
 
         // Auto-installs a guard against use of a proxied result if requester proxy count is zero.
         reuseCondition = PredicateSupport.and(new ProxyCountPredicate(),
@@ -343,8 +339,7 @@ public class AuthenticationFlowDescriptor extends AbstractIdentifiableInitializa
      * @since 4.1.0
      */
     public void setSubjectDecorator(@Nullable final BiConsumer<ProfileRequestContext,Subject> decorator) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         subjectDecorator = decorator;
     }    
 
@@ -365,7 +360,7 @@ public class AuthenticationFlowDescriptor extends AbstractIdentifiableInitializa
      * @param flowLifetime the lifetime for the flow
      */
     public void setLifetime(@Nullable final Duration flowLifetime) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
         Constraint.isFalse(flowLifetime != null && (flowLifetime.isNegative() || flowLifetime.isZero()),
                 "Lifetime must be null or greater than 0");
 
@@ -391,7 +386,7 @@ public class AuthenticationFlowDescriptor extends AbstractIdentifiableInitializa
      * @param timeout the flow inactivity timeout, must be greater than zero
      */
     public void setInactivityTimeout(@Nonnull final Duration timeout) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
         Constraint.isNotNull(timeout, "Inactivity timeout cannot be null");
         Constraint.isFalse(timeout.isNegative() || timeout.isZero(), "Inactivity timeout must be greater than 0");
 
@@ -445,7 +440,7 @@ public class AuthenticationFlowDescriptor extends AbstractIdentifiableInitializa
      * @param principals supported principals to add
      */
     public void setSupportedPrincipals(@Nonnull @NonnullElements final Collection<Principal> principals) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+        throwSetterPreconditionExceptions();
         Constraint.isNotNull(principals, "Principal collection cannot be null.");
 
         supportedPrincipals.getPrincipals().clear();
@@ -465,8 +460,7 @@ public class AuthenticationFlowDescriptor extends AbstractIdentifiableInitializa
      * @since 4.1.0
      */
     public void setSupportedPrincipalsByString(@Nonnull @NonnullElements final Collection<String> principals) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         stringBasedPrincipals = Set.copyOf(StringSupport.normalizeStringCollection(principals));
     }
 
@@ -491,8 +485,7 @@ public class AuthenticationFlowDescriptor extends AbstractIdentifiableInitializa
      * @param serializer the custom serializer
      */
     public void setResultSerializer(@Nonnull final StorageSerializer<AuthenticationResult> serializer) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-
+        throwSetterPreconditionExceptions();
         resultSerializer = Constraint.isNotNull(serializer, "StorageSerializer cannot be null");
     }
     
@@ -508,8 +501,7 @@ public class AuthenticationFlowDescriptor extends AbstractIdentifiableInitializa
      * @since 4.0.0
      */
     public void setPrincipalWeightMap(@Nullable @NonnullElements final Map<Principal,Integer> map) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         principalWeightMap = map != null ? map : Collections.emptyMap();
     }
     
@@ -521,8 +513,7 @@ public class AuthenticationFlowDescriptor extends AbstractIdentifiableInitializa
      * @since 4.0.1
      */
     public void setPrincipalServiceManager(@Nullable final PrincipalServiceManager manager) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         principalServiceManager = manager;
     }
 
@@ -571,7 +562,7 @@ public class AuthenticationFlowDescriptor extends AbstractIdentifiableInitializa
     /** {@inheritDoc} */
     @Override @Nonnull @NotEmpty public String serialize(@Nonnull final AuthenticationResult instance)
             throws IOException {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
+        throwComponentStateExceptions();
 
         return resultSerializer.serialize(instance);
     }
@@ -581,7 +572,7 @@ public class AuthenticationFlowDescriptor extends AbstractIdentifiableInitializa
             @Nonnull @NotEmpty final String context, @Nonnull @NotEmpty final String key, 
             @Nonnull @NotEmpty final String value, @Nonnull final Long expiration)
             throws IOException {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
+        throwComponentStateExceptions();
 
         // Back the expiration off by the inactivity timeout to recover the last activity time.
         final AuthenticationResult result = resultSerializer.deserialize(version, context, key, value,
diff --git a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/SubjectCanonicalizationFlowDescriptor.java b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/SubjectCanonicalizationFlowDescriptor.java
index 6625aeb32..7a3dd3206 100644
--- a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/SubjectCanonicalizationFlowDescriptor.java
+++ b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/SubjectCanonicalizationFlowDescriptor.java
@@ -21,16 +21,15 @@ import java.util.function.Predicate;
 
 import javax.annotation.Nonnull;
 
-import net.shibboleth.idp.profile.FlowDescriptor;
-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 com.google.common.base.MoreObjects;
 import com.google.common.base.Predicates;
 
+import net.shibboleth.idp.profile.FlowDescriptor;
+import net.shibboleth.utilities.java.support.component.AbstractIdentifiableInitializableComponent;
+import net.shibboleth.utilities.java.support.logic.Constraint;
+
 /**
  * A descriptor for a subject canonicalization flow.
  * 
@@ -60,7 +59,7 @@ public class SubjectCanonicalizationFlowDescriptor extends AbstractIdentifiableI
      * @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");
     }
 
diff --git a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/duo/BasicDuoIntegration.java b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/duo/BasicDuoIntegration.java
index d3aacadd3..eb1840ec2 100644
--- a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/duo/BasicDuoIntegration.java
+++ b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/duo/BasicDuoIntegration.java
@@ -17,24 +17,23 @@
 
 package net.shibboleth.idp.authn.duo;
 
+import java.security.Principal;
+import java.util.Collection;
+import java.util.Set;
+
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+import javax.security.auth.Subject;
+
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
 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.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.StringSupport;
 
-import java.security.Principal;
-import java.util.Collection;
-import java.util.Set;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-import javax.security.auth.Subject;
-
 /**
  * Wrapper for use of Duo.
  * 
@@ -73,8 +72,7 @@ public class BasicDuoIntegration extends AbstractInitializableComponent implemen
      * @param host API host
      */
     public void setAPIHost(@Nonnull @NotEmpty final String host) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         apiHost = Constraint.isNotNull(StringSupport.trimOrNull(host), "API host cannot be null or empty");
     }
 
@@ -89,8 +87,7 @@ public class BasicDuoIntegration extends AbstractInitializableComponent implemen
      * @param key application key
      */
     public void setApplicationKey(@Nullable @NotEmpty final String key) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         applicationKey = StringSupport.trimOrNull(key);
     }
 
@@ -105,8 +102,7 @@ public class BasicDuoIntegration extends AbstractInitializableComponent implemen
      * @param key integration key
      */
     public void setIntegrationKey(@Nonnull @NotEmpty final String key) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         integrationKey = Constraint.isNotNull(StringSupport.trimOrNull(key), "Integration key cannot be null or empty");
     }
 
@@ -121,8 +117,7 @@ public class BasicDuoIntegration extends AbstractInitializableComponent implemen
      * @param key secret key
      */
     public void setSecretKey(@Nonnull @NotEmpty final String key) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         secretKey = Constraint.isNotNull(StringSupport.trimOrNull(key), "Secret key cannot be null or empty");
     }
 
@@ -143,8 +138,8 @@ public class BasicDuoIntegration extends AbstractInitializableComponent implemen
      */
     public <T extends Principal> void setSupportedPrincipals(
             @Nullable @NonnullElements final Collection<T> principals) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
+
         supportedPrincipals.getPrincipals().clear();
         
         if (principals != null && !principals.isEmpty()) {
diff --git a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/principal/GenericPrincipalSerializer.java b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/principal/GenericPrincipalSerializer.java
index 2c7116e2f..4130ef213 100644
--- a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/principal/GenericPrincipalSerializer.java
+++ b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/principal/GenericPrincipalSerializer.java
@@ -51,7 +51,6 @@ import com.google.common.collect.ImmutableBiMap;
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 import net.shibboleth.utilities.java.support.annotation.constraint.ThreadSafeAfterInit;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
 import net.shibboleth.utilities.java.support.logic.Constraint;
 
 /**
@@ -94,8 +93,7 @@ public class GenericPrincipalSerializer extends AbstractPrincipalSerializer<Stri
      * @param mappings  string to symbolic mappings
      */
     public void setSymbolics(@Nonnull @NonnullElements final Map<String,Integer> mappings) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         symbolics = HashBiMap.create(Constraint.isNotNull(mappings, "Mappings cannot be null"));
     }
         
@@ -119,8 +117,7 @@ public class GenericPrincipalSerializer extends AbstractPrincipalSerializer<Stri
 
     /** {@inheritDoc} */
     @Nonnull @NotEmpty public String serialize(@Nonnull final Principal principal) throws IOException {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
-        
+        throwComponentStateExceptions();
         final StringWriter sink = new StringWriter(32);
         
         try (final JsonGenerator gen = getJsonGenerator(sink)) {
@@ -152,8 +149,7 @@ public class GenericPrincipalSerializer extends AbstractPrincipalSerializer<Stri
 
     /** {@inheritDoc} */
     @Nullable public Principal deserialize(@Nonnull @NotEmpty final String value) throws IOException {
-        ComponentSupport.ifNotInitializedThrowUninitializedComponentException(this);
-
+        throwSetterPreconditionExceptions();
         try (final JsonReader reader = getJsonReader(new StringReader(value))) {
             final JsonStructure st = reader.read();
             if (!(st instanceof JsonObject)) {
diff --git a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/principal/SealedPrincipalSerializer.java b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/principal/SealedPrincipalSerializer.java
index 263e83f7a..6c7911e4b 100644
--- a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/principal/SealedPrincipalSerializer.java
+++ b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/principal/SealedPrincipalSerializer.java
@@ -30,7 +30,6 @@ import com.google.common.base.Strings;
 
 import net.shibboleth.utilities.java.support.annotation.ParameterName;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
 import net.shibboleth.utilities.java.support.security.DataSealer;
 import net.shibboleth.utilities.java.support.security.DataSealerException;
 
@@ -73,8 +72,7 @@ public class SealedPrincipalSerializer<T extends Principal> extends SimplePrinci
      * @param theSealer encrypting component to use
      */
     public void setDataSealer(@Nullable final DataSealer theSealer) {
-        ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
-        
+        throwSetterPreconditionExceptions();
         sealer = theSealer;
     }
 

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


More information about the commits mailing list