[java-identity-provider] 02/04: IDP-2069 Null Handling
Rod Widdowson
rdw at steadingsoftware.com
Wed Mar 15 13:38:38 UTC 2023
This is an automated email from the git hooks/post-receive script.
rdw pushed a commit to branch main
in repository java-identity-provider.
View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=338ad5f5ec01f4fe2e8a69004a0e3601100b8ba4
commit 338ad5f5ec01f4fe2e8a69004a0e3601100b8ba4
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Tue Mar 14 10:24:36 2023 +0000
IDP-2069 Null Handling
https://shibboleth.atlassian.net/browse/IDP-2069
Remove several warnings from idp-authn-api
---
.../idp/authn/AbstractCredentialValidator.java | 8 ++++++--
.../idp/authn/AbstractValidationAction.java | 20 ++++++++++++++------
.../idp/authn/AuthenticationFlowDescriptor.java | 16 ++++++++++++----
.../shibboleth/idp/authn/AuthenticationResult.java | 12 +++++++++---
.../idp/authn/context/AuthenticationContext.java | 4 +++-
.../idp/authn/context/RequestedPrincipalContext.java | 4 +++-
.../authn/principal/GenericPrincipalSerializer.java | 12 +++++++++---
.../idp/authn/principal/PrincipalServiceManager.java | 4 +++-
.../authn/principal/SimplePrincipalSerializer.java | 10 +++++++---
.../authn/context/UsernamePasswordContextTest.java | 2 --
10 files changed, 66 insertions(+), 26 deletions(-)
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 46406db52..6b132c3c8 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
@@ -130,12 +130,14 @@ public abstract class AbstractCredentialValidator extends AbstractIdentifiedInit
@Nullable final WarningHandler warningHandler,
@Nullable final ErrorHandler errorHandler) throws Exception {
checkComponentActive();
+ final String id = getId();
+ assert id!=null;
if (!activationCondition.test(profileRequestContext)) {
log.debug("{} Activation condition was false, ignoring request", getLogPrefix());
return null;
} else if (!isAcceptable(authenticationContext.getSubcontext(RequestedPrincipalContext.class),
- customPrincipals, getId())) {
+ customPrincipals, id)) {
return null;
}
@@ -215,7 +217,9 @@ public abstract class AbstractCredentialValidator extends AbstractIdentifiedInit
final PrincipalSupportingComponent wrapper = new PrincipalSupportingComponent() {
@Nonnull
public <T extends Principal> Set<T> getSupportedPrincipals(@Nonnull final Class<T> c) {
- return subject.getPrincipals(c);
+ Set<T> principals = subject.getPrincipals(c);
+ assert principals!=null;
+ return principals;
}
};
if (predicate.test(wrapper)) {
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 9b06c067f..8b30e0c3e 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
@@ -170,7 +170,9 @@ public abstract class AbstractValidationAction extends AbstractAuthenticationAct
*/
@Nonnull @NonnullElements @Unmodifiable @NotLive public Map<String,Collection<String>> getClassifiedErrors() {
// For now this is using the older wrapper approach to guarding a live map to maintain the map insertion order.
- return Collections.unmodifiableMap(classifiedMessages);
+ final Map<String,Collection<String>> result = Collections.unmodifiableMap(classifiedMessages);
+ assert result != null;
+ return result;
}
/**
@@ -284,7 +286,9 @@ public abstract class AbstractValidationAction extends AbstractAuthenticationAct
@Override
@Nonnull @NonnullElements @Unmodifiable @NotLive public <T extends Principal> Set<T> getSupportedPrincipals(
@Nonnull final Class<T> c) {
- return getSubject().getPrincipals(c);
+ final Set<T> result = getSubject().getPrincipals(c);
+ assert result != null;
+ return result;
}
/**
@@ -522,11 +526,13 @@ public abstract class AbstractValidationAction extends AbstractAuthenticationAct
for (final Map.Entry<String, Collection<String>> entry : classifiedMessages.entrySet()) {
if (Iterables.any(entry.getValue(), checker::test)) {
+ final String key = entry.getKey();
+ assert key!=null;
authenticationContext.getOrCreateSubcontext(
- AuthenticationErrorContext.class).getClassifiedErrors().add(entry.getKey());
+ AuthenticationErrorContext.class).getClassifiedErrors().add(key);
if (!eventSet) {
eventSet = true;
- ActionSupport.buildEvent(profileRequestContext, entry.getKey());
+ ActionSupport.buildEvent(profileRequestContext, key);
}
}
}
@@ -566,11 +572,13 @@ public abstract class AbstractValidationAction extends AbstractAuthenticationAct
for (final Map.Entry<String, Collection<String>> entry : classifiedMessages.entrySet()) {
if (Iterables.any(entry.getValue(), checker::test)) {
+ final String key = entry.getKey();
+ assert key!=null;
authenticationContext.getOrCreateSubcontext(
- AuthenticationWarningContext.class).getClassifiedWarnings().add(entry.getKey());
+ AuthenticationWarningContext.class).getClassifiedWarnings().add(key);
if (!eventSet) {
eventSet = true;
- ActionSupport.buildEvent(profileRequestContext, entry.getKey());
+ ActionSupport.buildEvent(profileRequestContext, key);
}
}
}
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 c09f66175..68934c738 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
@@ -142,7 +142,9 @@ public class AuthenticationFlowDescriptor extends AbstractIdentifiableInitializa
reuseCondition = new ProxyCountPredicate();
supportedPrincipals = new Subject();
activationCondition = PredicateSupport.alwaysTrue();
- inactivityTimeout = Duration.ofMinutes(30);
+ final Duration thirtyMins = Duration.ofMinutes(30);
+ assert thirtyMins != null;
+ inactivityTimeout = thirtyMins;
principalWeightMap = CollectionSupport.emptyMap();
stringBasedPrincipals = CollectionSupport.emptySet();
}
@@ -446,7 +448,9 @@ public class AuthenticationFlowDescriptor extends AbstractIdentifiableInitializa
/** {@inheritDoc} */
@Override @Nonnull @NonnullElements @Unmodifiable public <T extends Principal> Set<T> getSupportedPrincipals(
@Nonnull final Class<T> c) {
- return supportedPrincipals.getPrincipals(c);
+ final Set<T> result = supportedPrincipals.getPrincipals(c);
+ assert result != null;
+ return result;
}
/**
@@ -459,7 +463,9 @@ public class AuthenticationFlowDescriptor extends AbstractIdentifiableInitializa
* @return a live collection of supported principals
*/
@Nonnull @NonnullElements public Collection<Principal> getSupportedPrincipals() {
- return supportedPrincipals.getPrincipals();
+ final Collection<Principal> result = supportedPrincipals.getPrincipals();
+ assert result != null;
+ return result;
}
/**
@@ -578,7 +584,9 @@ public class AuthenticationFlowDescriptor extends AbstractIdentifiableInitializa
* @return the new result
*/
@Nonnull public AuthenticationResult newAuthenticationResult(@Nonnull final Subject subject) {
- final AuthenticationResult result = new AuthenticationResult(getId(), subject);
+ final String id = getId();
+ assert id != null;
+ final AuthenticationResult result = new AuthenticationResult(id, subject);
if (proxyRestrictionsEnforced) {
result.setReuseCondition(PredicateSupport.and(reuseCondition, result.new ProxyRestrictionReusePredicate()));
diff --git a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AuthenticationResult.java b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AuthenticationResult.java
index 8c2193420..c8b9868de 100644
--- a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AuthenticationResult.java
+++ b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/AuthenticationResult.java
@@ -94,7 +94,9 @@ public class AuthenticationResult implements PrincipalSupportingComponent, Predi
authenticationFlowId = Constraint.isNotNull(StringSupport.trimOrNull(flowId),
"Authentication flow ID cannot be null nor empty");
subject = Constraint.isNotNull(newSubject, "Subject list cannot be null or empty");
- authenticationInstant = Instant.now();
+ final Instant now = Instant.now();
+ assert now != null;
+ authenticationInstant = now;
lastActivityInstant = authenticationInstant;
additionalData = new HashMap<>();
@@ -172,7 +174,9 @@ public class AuthenticationResult implements PrincipalSupportingComponent, Predi
@Override
@Nonnull @NonnullElements @Unmodifiable @NotLive public <T extends Principal> Set<T> getSupportedPrincipals(
@Nonnull final Class<T> c) {
- return subject.getPrincipals(c);
+ final Set<T> result = subject.getPrincipals(c);
+ assert result != null;
+ return result;
}
/**
@@ -224,7 +228,9 @@ public class AuthenticationResult implements PrincipalSupportingComponent, Predi
* Set the last activity instant for this result to the current time.
*/
public void setLastActivityInstantToNow() {
- lastActivityInstant = Instant.now();
+ final Instant now = Instant.now();
+ assert now != null;
+ lastActivityInstant = now;
}
/**
diff --git a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/context/AuthenticationContext.java b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/context/AuthenticationContext.java
index 35a20d487..ae9785eb6 100644
--- a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/context/AuthenticationContext.java
+++ b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/context/AuthenticationContext.java
@@ -134,7 +134,9 @@ public final class AuthenticationContext extends BaseContext {
/** Constructor. */
public AuthenticationContext() {
- initiationInstant = Instant.now();
+ final Instant now = Instant.now();
+ assert now!=null;
+ initiationInstant = now;
availableFlows = new HashMap<>();
potentialFlows = new LinkedHashMap<>();
diff --git a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/context/RequestedPrincipalContext.java b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/context/RequestedPrincipalContext.java
index df21df33d..03ecea46e 100644
--- a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/context/RequestedPrincipalContext.java
+++ b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/context/RequestedPrincipalContext.java
@@ -254,7 +254,9 @@ public final class RequestedPrincipalContext extends BaseContext {
return isAcceptable(new PrincipalSupportingComponent() {
@Nonnull public <TT extends Principal> Set<TT> getSupportedPrincipals(@Nonnull final Class<TT> c) {
if (c.isAssignableFrom(principal.getClass())) {
- return CollectionSupport.singleton(c.cast(principal));
+ final TT cast = c.cast(principal);
+ assert cast != null;
+ return CollectionSupport.singleton(cast);
}
return CollectionSupport.emptySet();
}
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 6619c9a00..2dcb8f0d8 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
@@ -84,8 +84,12 @@ public class GenericPrincipalSerializer extends AbstractPrincipalSerializer<Stri
* Constructor.
*/
public GenericPrincipalSerializer() {
- symbolics = ImmutableBiMap.of();
- compatiblePrincipalTypes = Collections.synchronizedSet(new HashSet<Class<? extends Principal>>());
+ final BiMap<String,Integer> s = ImmutableBiMap.of();
+ assert s!=null;
+ symbolics = s;
+ final Set<Class<? extends Principal>> cpt = Collections.synchronizedSet(new HashSet<Class<? extends Principal>>());
+ assert cpt!=null;
+ compatiblePrincipalTypes = cpt;
}
/**
@@ -95,7 +99,9 @@ public class GenericPrincipalSerializer extends AbstractPrincipalSerializer<Stri
*/
public void setSymbolics(@Nonnull @NonnullElements final Map<String,Integer> mappings) {
checkSetterPreconditions();
- symbolics = HashBiMap.create(Constraint.isNotNull(mappings, "Mappings cannot be null"));
+ final BiMap<String,Integer> s = HashBiMap.create(Constraint.isNotNull(mappings, "Mappings cannot be null"));
+ assert s!=null;
+ symbolics = s;
}
/** {@inheritDoc} */
diff --git a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/principal/PrincipalServiceManager.java b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/principal/PrincipalServiceManager.java
index 1c3e2bf82..646e7c925 100644
--- a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/principal/PrincipalServiceManager.java
+++ b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/principal/PrincipalServiceManager.java
@@ -79,7 +79,9 @@ public class PrincipalServiceManager {
* @return all registered services
*/
@Nonnull @NonnullElements @NotLive @Unmodifiable public Collection<PrincipalService<?>> all() {
- return CollectionSupport.copyToList(classIndexedMap.values());
+ final Collection<PrincipalService<?>> values = classIndexedMap.values();
+ assert values!=null;
+ return CollectionSupport.copyToList(values);
}
/**
diff --git a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/principal/SimplePrincipalSerializer.java b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/principal/SimplePrincipalSerializer.java
index 651a7b4f9..ba28e81ac 100644
--- a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/principal/SimplePrincipalSerializer.java
+++ b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/principal/SimplePrincipalSerializer.java
@@ -76,10 +76,14 @@ public class SimplePrincipalSerializer<T extends Principal> extends AbstractPrin
@Nonnull @NotEmpty @ParameterName(name="name") final String name)
throws NoSuchMethodException, SecurityException {
- principalType = Constraint.isNotNull(claz, "Principal type cannot be null");
- ctor = principalType.getConstructor(String.class);
+ final Class<T> typeClaz = principalType = Constraint.isNotNull(claz, "Principal type cannot be null");
+ final Constructor<T> constructor = typeClaz.getConstructor(String.class);
+ assert constructor!=null;
+ ctor = constructor;
fieldName = Constraint.isNotNull(StringSupport.trimOrNull(name), "Field name cannot be empty or null");
- jsonPattern = Pattern.compile("^\\{\"" + fieldName + "\":.*\\}$");
+ final Pattern pattern = Pattern.compile("^\\{\"" + fieldName + "\":.*\\}$");
+ assert pattern != null;
+ jsonPattern = pattern;
}
/** {@inheritDoc} */
diff --git a/idp-authn-api/src/test/java/net/shibboleth/idp/authn/context/UsernamePasswordContextTest.java b/idp-authn-api/src/test/java/net/shibboleth/idp/authn/context/UsernamePasswordContextTest.java
index 16012e8ce..a6acd783e 100644
--- a/idp-authn-api/src/test/java/net/shibboleth/idp/authn/context/UsernamePasswordContextTest.java
+++ b/idp-authn-api/src/test/java/net/shibboleth/idp/authn/context/UsernamePasswordContextTest.java
@@ -17,8 +17,6 @@
package net.shibboleth.idp.authn.context;
-import net.shibboleth.idp.authn.context.UsernamePasswordContext;
-
import org.testng.Assert;
import org.testng.annotations.Test;
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list