[java-identity-provider] 02/06: JSPT-98 Integrate lifecycle checking methods in base classes
Rod Widdowson
rdw at steadingsoftware.com
Mon Jul 11 16:23:13 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=81154edb2a74aeff9280a8e0be9935da1b7d7032
commit 81154edb2a74aeff9280a8e0be9935da1b7d7032
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