[java-identity-provider] branch main updated: IDP-2069 - Null Handling Task
Rod Widdowson
rdw at steadingsoftware.com
Fri Apr 14 10:32:07 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=599b5ea9240c12c9aa6192ecb5a78da0cff724df
The following commit(s) were added to refs/heads/main by this push:
new 599b5ea92 IDP-2069 - Null Handling Task
599b5ea92 is described below
commit 599b5ea9240c12c9aa6192ecb5a78da0cff724df
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Fri Apr 14 11:19:20 2023 +0100
IDP-2069 - Null Handling Task
https://shibboleth.atlassian.net/browse/IDP-2069
- More changes to exploit the @NonnullBeforeExec annotation
- Remove warnings (yellow) for Generic Type issues,
null issues, but not deprecations (except tests)
---
.../AbstractSubjectCanonicalizationAction.java | 1 -
.../idp/authn/AuthenticationFlowDescriptor.java | 4 +++-
.../impl/ExtractUsernamePasswordFromWSSToken.java | 4 ++--
.../impl/FinalizeMultiFactorAuthentication.java | 3 ++-
.../impl/InitializeRequestedPrincipalContext.java | 5 ++---
.../authn/impl/X500SubjectCanonicalization.java | 6 +++---
.../impl/AttributeRevocationCondition.java | 1 +
.../revocation/impl/RevocationCacheCondition.java | 1 +
.../cas/config/AbstractProtocolConfiguration.java | 6 ++++--
.../idp/cas/config/ValidateConfiguration.java | 1 +
.../impl/BuildAuthenticationContextAction.java | 9 ++++----
.../idp/cli/AbstractCommandLineArguments.java | 11 ++++++----
.../AbstractIdPHomeAwareCommandLineArguments.java | 3 ++-
.../src/main/java/net/shibboleth/idp/cli/CLI.java | 12 ++++++++---
.../shibboleth/idp/cli/DataSealerArguments.java | 2 +-
.../shibboleth/idp/cli/impl/JarCheckArguments.java | 2 +-
.../idp/cli/impl/ModuleManagerArguments.java | 2 +-
.../idp/conf/impl/SLF4JMDCServletFilter.java | 2 +-
.../idp/test/flows/AbstractFlowTest.java | 2 ++
.../idp/test/flows/cas/ProxyFlowTest.java | 2 +-
.../idp/test/flows/cas/ProxyValidateFlowTest.java | 2 +-
.../idp/test/flows/cas/SamlValidateFlowTest.java | 2 +-
.../test/flows/cas/ServiceValidateFlowTest.java | 2 +-
.../idp/test/flows/cas/TestProxyValidator.java | 2 +-
.../idp/test/flows/cas/ValidateFlowTest.java | 2 +-
.../test/flows/exception/ExceptionFlowTest.java | 9 ++------
.../test/flows/interceptor/InterceptFlowTest.java | 15 +++++---------
.../flows/saml1/SAML1AttributeQueryFlowTest.java | 1 +
.../flows/saml1/SAML1TestResponseValidator.java | 2 ++
.../flows/saml1/SAML1UnsolicitedSSOFlowTest.java | 1 +
.../test/flows/saml2/AbstractSAML2FlowTest.java | 6 +++---
.../test/flows/saml2/AbstractSAML2SSOFlowTest.java | 2 +-
.../idp/test/flows/saml2/SAML2ECPSSOFlowTest.java | 1 +
.../idp/test/flows/saml2/SAML2POSTSSOFlowTest.java | 1 +
.../saml2/SAML2POSTSimpleSignSSOFlowTest.java | 1 +
.../test/flows/saml2/SAML2RedirectSSOFlowTest.java | 1 +
.../flows/saml2/SAML2TestResponseValidator.java | 1 +
.../flows/saml2/SAML2UnsolicitedSSOFlowTest.java | 1 +
...ropertiesApplicationContextInitializerTest.java | 2 +-
.../ar/impl/AbstractAttributeReleaseAction.java | 4 +++-
.../consent/flow/storage/impl/UpdateCounter.java | 2 +-
.../impl/AttributeReleaseConsentFunction.java | 14 +++++++------
idp-distribution/pom.xml | 4 ++--
.../saml/saml2/profile/impl/AddAuthnRequest.java | 14 ++++++-------
.../profile/impl/ValidateSAMLAuthentication.java | 10 ++++-----
.../UpdateSessionWithAuthenticationResult.java | 4 +---
.../factory/FlowDefinitionRegistryFactoryBean.java | 24 ++++++++++++++--------
.../factory/FlowDefinitionResourceFactory.java | 8 ++++++--
.../spring/factory/FlowModelFlowBuilder.java | 10 ++++++---
.../spring/factory/FlowRelativeResourceLoader.java | 5 +++--
.../shibboleth/idp/ui/impl/SetRPUIInformation.java | 7 +++++--
.../idp/ui/taglib/ServiceContactTag.java | 6 +-----
.../idp/ui/taglib/ServiceTagSupport.java | 1 +
53 files changed, 139 insertions(+), 107 deletions(-)
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 d986547cb..78b9425e8 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
@@ -171,7 +171,6 @@ public abstract class AbstractSubjectCanonicalizationAction
return false;
}
- assert sc != null;
return doPreExecute(profileRequestContext, sc);
}
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 68934c738..c1d277379 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
@@ -727,7 +727,9 @@ public class AuthenticationFlowDescriptor extends AbstractIdentifiableInitializa
}
static {
- STORAGE_EXPIRATION_OFFSET = Duration.ofMinutes(10);
+ final Duration tenMinutes = Duration.ofMinutes(10);
+ assert tenMinutes!=null;
+ STORAGE_EXPIRATION_OFFSET = tenMinutes;
}
}
\ No newline at end of file
diff --git a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ExtractUsernamePasswordFromWSSToken.java b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ExtractUsernamePasswordFromWSSToken.java
index 6a94d4990..ef0cf1457 100644
--- a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ExtractUsernamePasswordFromWSSToken.java
+++ b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ExtractUsernamePasswordFromWSSToken.java
@@ -40,6 +40,7 @@ import net.shibboleth.idp.authn.AbstractExtractionAction;
import net.shibboleth.idp.authn.AuthnEventIds;
import net.shibboleth.idp.authn.context.AuthenticationContext;
import net.shibboleth.idp.authn.context.UsernamePasswordContext;
+import net.shibboleth.shared.annotation.constraint.NonnullBeforeExec;
import net.shibboleth.shared.collection.Pair;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.primitive.LoggerFactory;
@@ -57,7 +58,7 @@ public class ExtractUsernamePasswordFromWSSToken extends AbstractExtractionActio
@Nonnull private final Logger log = LoggerFactory.getLogger(ExtractUsernamePasswordFromWSSToken.class);
/** Inbound message to operate on. */
- @Nullable private Envelope inboundMessage;
+ @NonnullBeforeExec private Envelope inboundMessage;
/** {@inheritDoc} */
@Override
@@ -79,7 +80,6 @@ public class ExtractUsernamePasswordFromWSSToken extends AbstractExtractionActio
@Override
protected void doExecute(@Nonnull final ProfileRequestContext profileRequestContext,
@Nonnull final AuthenticationContext authenticationContext) {
- assert inboundMessage != null;
final Pair<String, String> usernamePassword = extractUsernamePassword(inboundMessage);
if (usernamePassword == null) {
log.debug("{} inbound message does not contain a username and password", getLogPrefix());
diff --git a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/FinalizeMultiFactorAuthentication.java b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/FinalizeMultiFactorAuthentication.java
index 8b8fe28ca..229a03060 100644
--- a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/FinalizeMultiFactorAuthentication.java
+++ b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/FinalizeMultiFactorAuthentication.java
@@ -44,6 +44,7 @@ import net.shibboleth.idp.authn.principal.AuthenticationResultPrincipal;
import net.shibboleth.profile.context.navigate.RelyingPartyIdLookupFunction;
import net.shibboleth.profile.context.navigate.IssuerLookupFunction;
import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.shared.annotation.constraint.NonnullBeforeExec;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.primitive.LoggerFactory;
@@ -84,7 +85,7 @@ public class FinalizeMultiFactorAuthentication extends AbstractAuthenticationAct
@Nullable private Function<ProfileRequestContext,String> responderLookupStrategy;
/** A subordinate {@link MultiFactorAuthenticationContext}, if any. */
- @Nullable private MultiFactorAuthenticationContext mfaContext;
+ @NonnullBeforeExec private MultiFactorAuthenticationContext mfaContext;
/** Constructor. */
public FinalizeMultiFactorAuthentication() {
diff --git a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/InitializeRequestedPrincipalContext.java b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/InitializeRequestedPrincipalContext.java
index fefa5e322..a788f71be 100644
--- a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/InitializeRequestedPrincipalContext.java
+++ b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/InitializeRequestedPrincipalContext.java
@@ -22,7 +22,6 @@ import java.util.List;
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;
@@ -36,6 +35,7 @@ import net.shibboleth.idp.authn.context.RequestedPrincipalContext;
import net.shibboleth.idp.profile.IdPEventIds;
import net.shibboleth.profile.config.ProfileConfiguration;
import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.shared.annotation.constraint.NonnullBeforeExec;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.primitive.LoggerFactory;
@@ -67,7 +67,7 @@ public class InitializeRequestedPrincipalContext extends AbstractAuthenticationA
@Nonnull private Function<ProfileRequestContext,RelyingPartyContext> relyingPartyContextLookupStrategy;
/** Profile configuration source for requested principals. */
- @Nullable private AuthenticationProfileConfiguration authenticationProfileConfig;
+ @NonnullBeforeExec private AuthenticationProfileConfiguration authenticationProfileConfig;
/** Constructor. */
public InitializeRequestedPrincipalContext() {
@@ -143,7 +143,6 @@ public class InitializeRequestedPrincipalContext extends AbstractAuthenticationA
protected void doExecute(@Nonnull final ProfileRequestContext profileRequestContext,
@Nonnull final AuthenticationContext authenticationContext) {
- assert authenticationProfileConfig != null;
final List<Principal> principals =
authenticationProfileConfig.getDefaultAuthenticationMethods(profileRequestContext);
if (principals.isEmpty()) {
diff --git a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/X500SubjectCanonicalization.java b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/X500SubjectCanonicalization.java
index d547cfe7e..ee87bb4c3 100644
--- a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/X500SubjectCanonicalization.java
+++ b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/X500SubjectCanonicalization.java
@@ -40,6 +40,7 @@ import net.shibboleth.idp.authn.AbstractSubjectCanonicalizationAction;
import net.shibboleth.idp.authn.AuthnEventIds;
import net.shibboleth.idp.authn.SubjectCanonicalizationException;
import net.shibboleth.idp.authn.context.SubjectCanonicalizationContext;
+import net.shibboleth.shared.annotation.constraint.NonnullBeforeExec;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.collection.CollectionSupport;
@@ -83,7 +84,7 @@ public class X500SubjectCanonicalization extends AbstractSubjectCanonicalization
@Nullable private X509Certificate certificate;
/** The subject DN to operate on. */
- @Nullable private X500Principal x500Principal;
+ @NonnullBeforeExec private X500Principal x500Principal;
/** Constructor. */
public X500SubjectCanonicalization() {
@@ -165,8 +166,7 @@ public class X500SubjectCanonicalization extends AbstractSubjectCanonicalization
}
log.debug("{} No suitable subjectAltName extension");
}
- assert x500Principal != null;
- final String x509PrincipalName =x500Principal.getName();
+ final String x509PrincipalName = x500Principal.getName();
log.debug("{} Searching for RDN to extract from DN: {}", getLogPrefix(), x509PrincipalName);
try {
diff --git a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/revocation/impl/AttributeRevocationCondition.java b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/revocation/impl/AttributeRevocationCondition.java
index 36fac02e6..52a862857 100644
--- a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/revocation/impl/AttributeRevocationCondition.java
+++ b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/revocation/impl/AttributeRevocationCondition.java
@@ -154,6 +154,7 @@ public class AttributeRevocationCondition extends AbstractInitializableComponent
}
/** {@inheritDoc} */
+ @SuppressWarnings("unchecked")
public boolean test(@Nullable final ProfileRequestContext input, @Nullable final AuthenticationResult input2) {
checkComponentActive();
diff --git a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/revocation/impl/RevocationCacheCondition.java b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/revocation/impl/RevocationCacheCondition.java
index 288532701..52cc8852b 100644
--- a/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/revocation/impl/RevocationCacheCondition.java
+++ b/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/revocation/impl/RevocationCacheCondition.java
@@ -117,6 +117,7 @@ public class RevocationCacheCondition extends AbstractInitializableComponent
}
/** {@inheritDoc} */
+ @SuppressWarnings("unchecked")
public boolean test(@Nullable final ProfileRequestContext input, @Nullable final AuthenticationResult input2) {
checkComponentActive();
diff --git a/idp-cas-api/src/main/java/net/shibboleth/idp/cas/config/AbstractProtocolConfiguration.java b/idp-cas-api/src/main/java/net/shibboleth/idp/cas/config/AbstractProtocolConfiguration.java
index d83dc2c92..97d63bb3f 100644
--- a/idp-cas-api/src/main/java/net/shibboleth/idp/cas/config/AbstractProtocolConfiguration.java
+++ b/idp-cas-api/src/main/java/net/shibboleth/idp/cas/config/AbstractProtocolConfiguration.java
@@ -49,6 +49,7 @@ public abstract class AbstractProtocolConfiguration extends AbstractInterceptorA
@Nonnull @NotEmpty public static final String PROTOCOL_URI = "https://www.apereo.org/cas/protocol";
/** Default ticket validity. */
+ @SuppressWarnings("null")
@Nonnull public static final Duration DEFAULT_TICKET_VALIDITY_PERIOD = Duration.ofSeconds(15);
/** Lookup function to supply ticketValidityPeriod property. */
@@ -70,8 +71,9 @@ public abstract class AbstractProtocolConfiguration extends AbstractInterceptorA
resolveAttributesPredicate = PredicateSupport.alwaysTrue();
ticketValidityPeriodLookupStrategy = FunctionSupport.constant(DEFAULT_TICKET_VALIDITY_PERIOD);
-
- defaultSecurityConfiguration = new BasicSecurityConfiguration(Duration.ofMinutes(5),
+ final Duration fiveMins = Duration.ofMinutes(5);
+ assert fiveMins!=null;
+ defaultSecurityConfiguration = new BasicSecurityConfiguration(fiveMins,
new TicketIdentifierGenerationStrategy(getDefaultTicketPrefix(), getDefaultTicketLength()));
}
diff --git a/idp-cas-api/src/main/java/net/shibboleth/idp/cas/config/ValidateConfiguration.java b/idp-cas-api/src/main/java/net/shibboleth/idp/cas/config/ValidateConfiguration.java
index 2bd30d1c2..971a657ff 100644
--- a/idp-cas-api/src/main/java/net/shibboleth/idp/cas/config/ValidateConfiguration.java
+++ b/idp-cas-api/src/main/java/net/shibboleth/idp/cas/config/ValidateConfiguration.java
@@ -49,6 +49,7 @@ public class ValidateConfiguration extends AbstractProtocolConfiguration {
@Nonnull @NotEmpty public static final String PROFILE_ID = PROTOCOL_URI + "/serviceValidate";
/** Default ticket validity. */
+ @SuppressWarnings("null")
@Nonnull public static final Duration DEFAULT_TICKET_VALIDITY_PERIOD = Duration.ofHours(12);
/** Default ticket prefix. */
diff --git a/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/impl/BuildAuthenticationContextAction.java b/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/impl/BuildAuthenticationContextAction.java
index ce031145c..14ccda0d4 100644
--- a/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/impl/BuildAuthenticationContextAction.java
+++ b/idp-cas-impl/src/main/java/net/shibboleth/idp/cas/flow/impl/BuildAuthenticationContextAction.java
@@ -18,7 +18,10 @@
package net.shibboleth.idp.cas.flow.impl;
import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
+
+import org.opensaml.profile.action.ActionSupport;
+import org.opensaml.profile.action.EventException;
+import org.opensaml.profile.context.ProfileRequestContext;
import net.shibboleth.idp.authn.context.AuthenticationContext;
import net.shibboleth.idp.cas.config.ConfigLookupFunction;
@@ -27,10 +30,6 @@ import net.shibboleth.idp.cas.protocol.ServiceTicketRequest;
import net.shibboleth.idp.cas.protocol.ServiceTicketResponse;
import net.shibboleth.shared.annotation.constraint.NonnullBeforeExec;
-import org.opensaml.profile.action.ActionSupport;
-import org.opensaml.profile.action.EventException;
-import org.opensaml.profile.context.ProfileRequestContext;
-
/**
* Builds an authentication context from an incoming {@link ServiceTicketRequest} message.
*
diff --git a/idp-cli/src/main/java/net/shibboleth/idp/cli/AbstractCommandLineArguments.java b/idp-cli/src/main/java/net/shibboleth/idp/cli/AbstractCommandLineArguments.java
index 0a84fb7ae..222cf926d 100644
--- a/idp-cli/src/main/java/net/shibboleth/idp/cli/AbstractCommandLineArguments.java
+++ b/idp-cli/src/main/java/net/shibboleth/idp/cli/AbstractCommandLineArguments.java
@@ -99,10 +99,11 @@ public abstract class AbstractCommandLineArguments implements CommandLineArgumen
/** Constructor. */
public AbstractCommandLineArguments() {
- url = System.getProperty(BASEURL_PROPERTY);
- if (url == null) {
- url = "http://localhost/idp";
+ String u = System.getProperty(BASEURL_PROPERTY);
+ if (u == null) {
+ u = "http://localhost/idp";
}
+ url = u;
}
/**
@@ -284,7 +285,9 @@ public abstract class AbstractCommandLineArguments implements CommandLineArgumen
}
final String rawHeader = username + ":" + password;
try {
- return "Basic " + Base64Support.encode(rawHeader.getBytes(StandardCharsets.UTF_8), false);
+ final byte[] bytes = rawHeader.getBytes(StandardCharsets.UTF_8);
+ assert bytes != null;
+ return "Basic " + Base64Support.encode(bytes, false);
} catch (final EncodingException e) {
System.err.println(e.getMessage());
return null;
diff --git a/idp-cli/src/main/java/net/shibboleth/idp/cli/AbstractIdPHomeAwareCommandLineArguments.java b/idp-cli/src/main/java/net/shibboleth/idp/cli/AbstractIdPHomeAwareCommandLineArguments.java
index 4353c239e..4aedf0075 100644
--- a/idp-cli/src/main/java/net/shibboleth/idp/cli/AbstractIdPHomeAwareCommandLineArguments.java
+++ b/idp-cli/src/main/java/net/shibboleth/idp/cli/AbstractIdPHomeAwareCommandLineArguments.java
@@ -19,6 +19,7 @@ package net.shibboleth.idp.cli;
import java.io.PrintStream;
+import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.opensaml.security.httpclient.HttpClientSecurityParameters;
@@ -87,7 +88,7 @@ public abstract class AbstractIdPHomeAwareCommandLineArguments
/** {@inheritDoc} */
@Override
- public void printHelp(final PrintStream out) {
+ public void printHelp(@Nonnull final PrintStream out) {
super.printHelp(out);
out.println(String.format(" --%-20s %s", "home",
"Sets idp.home if not installed to default location."));
diff --git a/idp-cli/src/main/java/net/shibboleth/idp/cli/CLI.java b/idp-cli/src/main/java/net/shibboleth/idp/cli/CLI.java
index 84e82f117..6c5e42d21 100644
--- a/idp-cli/src/main/java/net/shibboleth/idp/cli/CLI.java
+++ b/idp-cli/src/main/java/net/shibboleth/idp/cli/CLI.java
@@ -83,14 +83,18 @@ public final class CLI {
} catch (final ClassNotFoundException e) {
errorAndExit("Argument class " + argType + " not found ");
} catch (final InstantiationException | IllegalAccessException e) {
- errorAndExit(e.getMessage());
+ final String msg = e.getMessage();
+ assert msg != null;
+ errorAndExit(msg);
}
assert argObject != null;
try {
argObject.validate();
} catch (final IllegalArgumentException e) {
- errorAndExit(e.getMessage());
+ final String msg = e.getMessage();
+ assert msg != null;
+ errorAndExit(msg);
}
doRequest(argObject);
@@ -134,7 +138,9 @@ public final class CLI {
}
}
} catch (final MalformedURLException|ProtocolException e) {
- errorAndExit(e.getMessage());
+ final String msg = e.getMessage();
+ assert msg != null;
+ errorAndExit(msg);
} catch (final IOException e) {
errorAndExit((url != null ? "(" + url.toString() + ") " : "") + e.getMessage());
}
diff --git a/idp-cli/src/main/java/net/shibboleth/idp/cli/DataSealerArguments.java b/idp-cli/src/main/java/net/shibboleth/idp/cli/DataSealerArguments.java
index 0a2f39ec3..31e088369 100644
--- a/idp-cli/src/main/java/net/shibboleth/idp/cli/DataSealerArguments.java
+++ b/idp-cli/src/main/java/net/shibboleth/idp/cli/DataSealerArguments.java
@@ -101,7 +101,7 @@ public class DataSealerArguments extends AbstractIdPHomeAwareCommandLineArgument
}
/** {@inheritDoc} */
- public void printHelp(final PrintStream out) {
+ public void printHelp(@Nonnull final PrintStream out) {
out.println("DataSealerCLI");
out.println("Provides a command line interface for DataSealer wrap/unwrap operations.");
out.println();
diff --git a/idp-cli/src/main/java/net/shibboleth/idp/cli/impl/JarCheckArguments.java b/idp-cli/src/main/java/net/shibboleth/idp/cli/impl/JarCheckArguments.java
index 3830a76c7..641b01901 100644
--- a/idp-cli/src/main/java/net/shibboleth/idp/cli/impl/JarCheckArguments.java
+++ b/idp-cli/src/main/java/net/shibboleth/idp/cli/impl/JarCheckArguments.java
@@ -70,7 +70,7 @@ public class JarCheckArguments extends AbstractIdPHomeAwareCommandLineArguments
/** {@inheritDoc} */
@Override
- public void printHelp(final PrintStream out) {
+ public void printHelp(@Nonnull final PrintStream out) {
out.println("JarCheck");
out.println("Provides a command line interface to look for duplicates in an installation");
out.println();
diff --git a/idp-cli/src/main/java/net/shibboleth/idp/cli/impl/ModuleManagerArguments.java b/idp-cli/src/main/java/net/shibboleth/idp/cli/impl/ModuleManagerArguments.java
index 2a6eb2e6f..f5b799575 100644
--- a/idp-cli/src/main/java/net/shibboleth/idp/cli/impl/ModuleManagerArguments.java
+++ b/idp-cli/src/main/java/net/shibboleth/idp/cli/impl/ModuleManagerArguments.java
@@ -150,7 +150,7 @@ public class ModuleManagerArguments extends AbstractIdPHomeAwareCommandLineArgum
/** {@inheritDoc} */
@Override
- public void printHelp(final PrintStream out) {
+ public void printHelp(@Nonnull PrintStream out) {
out.println("ModuleManager");
out.println("Provides a command line interface for IdP Module management operations.");
out.println();
diff --git a/idp-conf-impl/src/main/java/net/shibboleth/idp/conf/impl/SLF4JMDCServletFilter.java b/idp-conf-impl/src/main/java/net/shibboleth/idp/conf/impl/SLF4JMDCServletFilter.java
index a1cd74709..99376d8d0 100644
--- a/idp-conf-impl/src/main/java/net/shibboleth/idp/conf/impl/SLF4JMDCServletFilter.java
+++ b/idp-conf-impl/src/main/java/net/shibboleth/idp/conf/impl/SLF4JMDCServletFilter.java
@@ -73,7 +73,7 @@ public class SLF4JMDCServletFilter extends AbstractConditionalFilter implements
/** {@inheritDoc} */
@Override
- protected void runFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain)
+ protected void runFilter(final @Nonnull ServletRequest request, final @Nonnull ServletResponse response, final @Nonnull FilterChain chain)
throws IOException, ServletException {
try {
MDC.put(Version.MDC_ATTRIBUTE, Version.getVersion());
diff --git a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/AbstractFlowTest.java b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/AbstractFlowTest.java
index 2ec832a5f..f3e5c367b 100644
--- a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/AbstractFlowTest.java
+++ b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/AbstractFlowTest.java
@@ -102,6 +102,7 @@ import net.shibboleth.shared.xml.ParserPool;
IdPPropertiesApplicationContextInitializer.class},
loader = PreferFileSystemContextLoader.class)
@WebAppConfiguration
+ at SuppressWarnings({"javadoc", "null"})
public abstract class AbstractFlowTest extends AbstractTestNGSpringContextTests {
/** Logger. */
@@ -237,6 +238,7 @@ public abstract class AbstractFlowTest extends AbstractTestNGSpringContextTests
/**
* Creates an UnboundID in-memory directory server. Leverages LDIF found at {@value #LDIF_FILE}.
*/
+ @SuppressWarnings("null")
@BeforeSuite public static void setupDirectoryServer() {
directoryServer =
new InMemoryDirectory(
diff --git a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/ProxyFlowTest.java b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/ProxyFlowTest.java
index b5c1548e6..41575f74c 100644
--- a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/ProxyFlowTest.java
+++ b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/ProxyFlowTest.java
@@ -48,7 +48,7 @@ import java.time.temporal.ChronoUnit;
@ContextConfiguration(locations = {
"/test/test-cas-beans.xml",
})
- at SuppressWarnings("javadoc")
+ at SuppressWarnings({"javadoc", "null"})
public class ProxyFlowTest extends AbstractFlowTest {
/** Flow id. */
diff --git a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/ProxyValidateFlowTest.java b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/ProxyValidateFlowTest.java
index ed320ecf0..6a7d34f32 100644
--- a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/ProxyValidateFlowTest.java
+++ b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/ProxyValidateFlowTest.java
@@ -47,7 +47,7 @@ import java.time.Instant;
@ContextConfiguration(locations = {
"/test/test-cas-beans.xml",
})
- at SuppressWarnings("javadoc")
+ at SuppressWarnings({"javadoc", "null"})
public class ProxyValidateFlowTest extends AbstractFlowTest {
/** Flow id. */
diff --git a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/SamlValidateFlowTest.java b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/SamlValidateFlowTest.java
index 44c1ef325..0bbeb564b 100644
--- a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/SamlValidateFlowTest.java
+++ b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/SamlValidateFlowTest.java
@@ -49,7 +49,7 @@ import java.time.Instant;
@ContextConfiguration(locations = {
"/test/test-cas-beans.xml",
})
- at SuppressWarnings("javadoc")
+ at SuppressWarnings({"javadoc", "null"})
public class SamlValidateFlowTest extends AbstractFlowTest {
/** Flow id. */
diff --git a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/ServiceValidateFlowTest.java b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/ServiceValidateFlowTest.java
index 8ea01684b..d2c29a0c8 100644
--- a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/ServiceValidateFlowTest.java
+++ b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/ServiceValidateFlowTest.java
@@ -55,7 +55,7 @@ import net.shibboleth.shared.resolver.CriteriaSet;
@ContextConfiguration(locations = {
"/test/test-cas-beans.xml",
})
- at SuppressWarnings("javadoc")
+ at SuppressWarnings({"javadoc", "null"})
public class ServiceValidateFlowTest extends AbstractFlowTest {
/** Flow id. */
diff --git a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/TestProxyValidator.java b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/TestProxyValidator.java
index 9d0236bc4..a57a37fb7 100644
--- a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/TestProxyValidator.java
+++ b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/TestProxyValidator.java
@@ -32,7 +32,7 @@ import java.net.URI;
*
* @author Marvin S. Addison
*/
- at SuppressWarnings("javadoc")
+ at SuppressWarnings({"javadoc", "null"})
public class TestProxyValidator extends HttpClientProxyValidator {
/** Validation repsonse HTTP status code to return. */
diff --git a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/ValidateFlowTest.java b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/ValidateFlowTest.java
index 7488a5de6..080258b9e 100644
--- a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/ValidateFlowTest.java
+++ b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/cas/ValidateFlowTest.java
@@ -48,7 +48,7 @@ import java.time.Instant;
@ContextConfiguration(locations = {
"/test/test-cas-beans.xml",
})
- at SuppressWarnings("javadoc")
+ at SuppressWarnings({"javadoc", "null"})
public class ValidateFlowTest extends AbstractFlowTest {
/** Flow id. */
diff --git a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/exception/ExceptionFlowTest.java b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/exception/ExceptionFlowTest.java
index 8cb1d39b6..cf24012d7 100644
--- a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/exception/ExceptionFlowTest.java
+++ b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/exception/ExceptionFlowTest.java
@@ -19,15 +19,13 @@ package net.shibboleth.idp.test.flows.exception;
import javax.annotation.Nonnull;
-import net.shibboleth.idp.test.flows.AbstractFlowTest;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.webflow.executor.FlowExecutionResult;
import org.testng.Assert;
import org.testng.annotations.Test;
+import net.shibboleth.idp.test.flows.AbstractFlowTest;
+
/** Tests for the profile interceptor flow. */
@ContextConfiguration(locations = {"classpath:/exception/test-webflow-config.xml",})
@SuppressWarnings("javadoc")
@@ -37,9 +35,6 @@ public class ExceptionFlowTest extends AbstractFlowTest {
@Nonnull public final static String TEST_COMMITTED_FLOW_ID = "test-committed-flow";
- /** Class logger. */
- @Nonnull private final Logger log = LoggerFactory.getLogger(ExceptionFlowTest.class);
-
@Test public void testExceptionFlow() {
final FlowExecutionResult result = flowExecutor.launchExecution(TEST_EXCEPTION_FLOW_ID, null, externalContext);
diff --git a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/interceptor/InterceptFlowTest.java b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/interceptor/InterceptFlowTest.java
index 60f5c9664..aa03e92fe 100644
--- a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/interceptor/InterceptFlowTest.java
+++ b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/interceptor/InterceptFlowTest.java
@@ -21,14 +21,8 @@ import java.util.List;
import javax.annotation.Nonnull;
-import net.shibboleth.idp.profile.context.ProfileInterceptorContext;
-import net.shibboleth.idp.profile.interceptor.ProfileInterceptorFlowDescriptor;
-import net.shibboleth.idp.test.flows.AbstractFlowTest;
-
import org.opensaml.profile.action.EventIds;
import org.opensaml.profile.context.ProfileRequestContext;
-import org.slf4j.Logger;
-import net.shibboleth.shared.primitive.LoggerFactory;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.webflow.engine.Flow;
import org.springframework.webflow.executor.FlowExecutionResult;
@@ -36,9 +30,13 @@ import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
+import net.shibboleth.idp.profile.context.ProfileInterceptorContext;
+import net.shibboleth.idp.profile.interceptor.ProfileInterceptorFlowDescriptor;
+import net.shibboleth.idp.test.flows.AbstractFlowTest;
+
/** Tests for the profile interceptor flow. */
@ContextConfiguration(locations = {"classpath:/intercept/test-webflow-config.xml",})
- at SuppressWarnings("javadoc")
+ at SuppressWarnings({"javadoc", "unchecked"})
public class InterceptFlowTest extends AbstractFlowTest {
/** Flow id. */
@@ -52,9 +50,6 @@ public class InterceptFlowTest extends AbstractFlowTest {
@Nonnull public final static String TEST_FLOW_REGISTRY_ID = "testFlowRegistry";
- /** Class logger. */
- @Nonnull private final Logger log = LoggerFactory.getLogger(InterceptFlowTest.class);
-
/**
* Clear the list of user configured flows defined in bean with ID {@link #INTERCEPT_FLOWS_BEAN_ID}.
*/
diff --git a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml1/SAML1AttributeQueryFlowTest.java b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml1/SAML1AttributeQueryFlowTest.java
index 8eb896e5a..4b82acb92 100644
--- a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml1/SAML1AttributeQueryFlowTest.java
+++ b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml1/SAML1AttributeQueryFlowTest.java
@@ -49,6 +49,7 @@ import org.testng.annotations.Test;
/**
* SAML 1 attribute query flow test.
*/
+ at SuppressWarnings({"null"})
public class SAML1AttributeQueryFlowTest extends AbstractSAML1FlowTest {
/** Flow id. */
diff --git a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml1/SAML1TestResponseValidator.java b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml1/SAML1TestResponseValidator.java
index cbf1a850b..654c77128 100644
--- a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml1/SAML1TestResponseValidator.java
+++ b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml1/SAML1TestResponseValidator.java
@@ -51,6 +51,7 @@ import net.shibboleth.idp.saml.xml.SAMLConstants;
/**
* Validate a test SAML 1 Response.
*/
+ at SuppressWarnings({"null"})
public class SAML1TestResponseValidator {
/** Expected IdP entity ID. */
@@ -299,6 +300,7 @@ public class SAML1TestResponseValidator {
*
* @param assertion the assertion
*/
+ @SuppressWarnings("removal")
public void assertAssertion(@Nullable final Assertion assertion) {
assert assertion!=null;
final String id = assertion.getID();
diff --git a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml1/SAML1UnsolicitedSSOFlowTest.java b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml1/SAML1UnsolicitedSSOFlowTest.java
index 1d12a2aab..9674148a9 100644
--- a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml1/SAML1UnsolicitedSSOFlowTest.java
+++ b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml1/SAML1UnsolicitedSSOFlowTest.java
@@ -29,6 +29,7 @@ import org.testng.annotations.Test;
/**
* SAML 1 unsolicited SSO flow test.
*/
+ at SuppressWarnings({"null"})
public class SAML1UnsolicitedSSOFlowTest extends AbstractSAML1FlowTest {
/** The flow id. */
diff --git a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/AbstractSAML2FlowTest.java b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/AbstractSAML2FlowTest.java
index afad6101e..5eb53489d 100644
--- a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/AbstractSAML2FlowTest.java
+++ b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/AbstractSAML2FlowTest.java
@@ -18,9 +18,6 @@
package net.shibboleth.idp.test.flows.saml2;
import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
-import net.shibboleth.idp.test.flows.AbstractFlowTest;
import org.opensaml.messaging.context.MessageContext;
import org.opensaml.profile.context.ProfileRequestContext;
@@ -29,9 +26,12 @@ import org.springframework.webflow.execution.FlowExecutionOutcome;
import org.springframework.webflow.executor.FlowExecutionResult;
import org.testng.Assert;
+import net.shibboleth.idp.test.flows.AbstractFlowTest;
+
/**
* Abstract SAML 2 flow test.
*/
+ at SuppressWarnings({"javadoc", "null"})
public class AbstractSAML2FlowTest extends AbstractFlowTest {
/**
diff --git a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/AbstractSAML2SSOFlowTest.java b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/AbstractSAML2SSOFlowTest.java
index 841571135..4043d62c8 100644
--- a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/AbstractSAML2SSOFlowTest.java
+++ b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/AbstractSAML2SSOFlowTest.java
@@ -56,7 +56,7 @@ import net.shibboleth.shared.primitive.LoggerFactory;
/**
* Abstract SAML 2 SSO flow test.
*/
- at SuppressWarnings("javadoc")
+ at SuppressWarnings({"javadoc", "null"})
public abstract class AbstractSAML2SSOFlowTest extends AbstractSAML2FlowTest {
/** Class logger. */
diff --git a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/SAML2ECPSSOFlowTest.java b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/SAML2ECPSSOFlowTest.java
index d3212c350..b96982c5b 100644
--- a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/SAML2ECPSSOFlowTest.java
+++ b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/SAML2ECPSSOFlowTest.java
@@ -37,6 +37,7 @@ import net.shibboleth.shared.xml.SerializeSupport;
/**
* SAML 2 ECP SSO flow test.
*/
+ at SuppressWarnings({"javadoc", "null"})
public class SAML2ECPSSOFlowTest extends AbstractSAML2SSOFlowTest {
/** Flow id. */
diff --git a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/SAML2POSTSSOFlowTest.java b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/SAML2POSTSSOFlowTest.java
index 340925a85..4ca3b92ba 100644
--- a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/SAML2POSTSSOFlowTest.java
+++ b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/SAML2POSTSSOFlowTest.java
@@ -39,6 +39,7 @@ import org.w3c.dom.Element;
/**
* SAML 2 POST SSO flow test.
*/
+ at SuppressWarnings({"javadoc", "null"})
public class SAML2POSTSSOFlowTest extends AbstractSAML2SSOFlowTest {
/** Flow id. */
diff --git a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/SAML2POSTSimpleSignSSOFlowTest.java b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/SAML2POSTSimpleSignSSOFlowTest.java
index e43ffc7ab..0c0cdde04 100644
--- a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/SAML2POSTSimpleSignSSOFlowTest.java
+++ b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/SAML2POSTSimpleSignSSOFlowTest.java
@@ -39,6 +39,7 @@ import org.w3c.dom.Element;
/**
* SAML 2 POST-SimpleSign SSO flow test.
*/
+ at SuppressWarnings({"javadoc", "null"})
public class SAML2POSTSimpleSignSSOFlowTest extends AbstractSAML2SSOFlowTest {
/** Flow id. */
diff --git a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/SAML2RedirectSSOFlowTest.java b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/SAML2RedirectSSOFlowTest.java
index dad0c4b87..25d1e567c 100644
--- a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/SAML2RedirectSSOFlowTest.java
+++ b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/SAML2RedirectSSOFlowTest.java
@@ -42,6 +42,7 @@ import org.w3c.dom.Element;
/**
* SAML 2 Redirect SSO flow test.
*/
+ at SuppressWarnings({"javadoc", "null"})
public class SAML2RedirectSSOFlowTest extends AbstractSAML2SSOFlowTest {
/** Flow id. */
diff --git a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/SAML2TestResponseValidator.java b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/SAML2TestResponseValidator.java
index a79dfea82..3d546b039 100644
--- a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/SAML2TestResponseValidator.java
+++ b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/SAML2TestResponseValidator.java
@@ -71,6 +71,7 @@ import com.google.common.net.InetAddresses;
/**
* SAML 2 {@link Response} validator.
*/
+ at SuppressWarnings({"javadoc", "null"})
public class SAML2TestResponseValidator extends SAML2TestStatusResponseTypeValidator {
/** Authentication context class reference. */
diff --git a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/SAML2UnsolicitedSSOFlowTest.java b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/SAML2UnsolicitedSSOFlowTest.java
index 7aed7573d..c7ebd0544 100644
--- a/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/SAML2UnsolicitedSSOFlowTest.java
+++ b/idp-conf/src/test/java/net/shibboleth/idp/test/flows/saml2/SAML2UnsolicitedSSOFlowTest.java
@@ -28,6 +28,7 @@ import org.testng.annotations.Test;
/**
* SAML 2 Unsolicited SSO flow test.
*/
+ at SuppressWarnings({"javadoc", "null"})
public class SAML2UnsolicitedSSOFlowTest extends AbstractSAML2FlowTest {
/** Flow id. */
diff --git a/idp-conf/src/test/java/net/shibboleth/idp/test/spring/IdPPropertiesApplicationContextInitializerTest.java b/idp-conf/src/test/java/net/shibboleth/idp/test/spring/IdPPropertiesApplicationContextInitializerTest.java
index e0bd403c7..4bc707fad 100644
--- a/idp-conf/src/test/java/net/shibboleth/idp/test/spring/IdPPropertiesApplicationContextInitializerTest.java
+++ b/idp-conf/src/test/java/net/shibboleth/idp/test/spring/IdPPropertiesApplicationContextInitializerTest.java
@@ -36,7 +36,7 @@ import net.shibboleth.idp.spring.IdPPropertiesApplicationContextInitializer;
import net.shibboleth.shared.logic.ConstraintViolationException;
/** {@link IdPPropertiesApplicationContextInitializer} unit test. */
- at SuppressWarnings("javadoc")
+ at SuppressWarnings({"javadoc", "null"})
public class IdPPropertiesApplicationContextInitializerTest {
private MockServletContext sc;
diff --git a/idp-consent-impl/src/main/java/net/shibboleth/idp/consent/flow/ar/impl/AbstractAttributeReleaseAction.java b/idp-consent-impl/src/main/java/net/shibboleth/idp/consent/flow/ar/impl/AbstractAttributeReleaseAction.java
index 3a50535f1..697163b22 100644
--- a/idp-consent-impl/src/main/java/net/shibboleth/idp/consent/flow/ar/impl/AbstractAttributeReleaseAction.java
+++ b/idp-consent-impl/src/main/java/net/shibboleth/idp/consent/flow/ar/impl/AbstractAttributeReleaseAction.java
@@ -77,9 +77,11 @@ public abstract class AbstractAttributeReleaseAction extends AbstractConsentActi
public AbstractAttributeReleaseAction() {
attributeReleaseContextLookupStrategy = new ChildContextLookup<>(AttributeReleaseContext.class);
- attributeContextLookupStrategy =
+ final Function<ProfileRequestContext,AttributeContext> acls =
new ChildContextLookup<>(AttributeContext.class).compose(
new ChildContextLookup<>(RelyingPartyContext.class));
+ assert acls != null;
+ attributeContextLookupStrategy = acls;
}
/**
diff --git a/idp-consent-impl/src/main/java/net/shibboleth/idp/consent/flow/storage/impl/UpdateCounter.java b/idp-consent-impl/src/main/java/net/shibboleth/idp/consent/flow/storage/impl/UpdateCounter.java
index 2980d148c..44da7f2b6 100644
--- a/idp-consent-impl/src/main/java/net/shibboleth/idp/consent/flow/storage/impl/UpdateCounter.java
+++ b/idp-consent-impl/src/main/java/net/shibboleth/idp/consent/flow/storage/impl/UpdateCounter.java
@@ -51,7 +51,7 @@ public class UpdateCounter extends AbstractConsentStorageAction {
final String context = getStorageContext();
final String key = getStorageKey();
final StorageService service = getStorageService();
- assert context!=null && key!=null && service!=null;
+ assert context!=null && key!=null && service!=null && value != null;
final StorageRecord<?> storageRecord = service.read(context, key);
log.debug("{} Read storage record '{}' with context '{}' and key '{}'", getLogPrefix(), storageRecord,
diff --git a/idp-consent-impl/src/main/java/net/shibboleth/idp/consent/logic/impl/AttributeReleaseConsentFunction.java b/idp-consent-impl/src/main/java/net/shibboleth/idp/consent/logic/impl/AttributeReleaseConsentFunction.java
index 3ead213dc..1f7ff792b 100644
--- a/idp-consent-impl/src/main/java/net/shibboleth/idp/consent/logic/impl/AttributeReleaseConsentFunction.java
+++ b/idp-consent-impl/src/main/java/net/shibboleth/idp/consent/logic/impl/AttributeReleaseConsentFunction.java
@@ -128,14 +128,16 @@ public class AttributeReleaseConsentFunction implements Function<ProfileRequestC
consent.setId(attribute.getId());
if (consentFlowDescriptor.compareValues()) {
- unsortedConsent.setValue(
- ((AttributeReleaseFlowDescriptor) consentFlowDescriptor).getAttributeValuesHashFunction().apply(
- attribute.getValues()));
+ String value = ((AttributeReleaseFlowDescriptor) consentFlowDescriptor).getAttributeValuesHashFunction().apply(
+ attribute.getValues());
+ assert value != null;
+ unsortedConsent.setValue(value);
final List<IdPAttributeValue> sorted = new ArrayList<>(attribute.getValues());
Collections.sort(sorted);
- consent.setValue(
- ((AttributeReleaseFlowDescriptor) consentFlowDescriptor).getAttributeValuesHashFunction().apply(
- sorted));
+ value = ((AttributeReleaseFlowDescriptor) consentFlowDescriptor).getAttributeValuesHashFunction().apply(
+ sorted);
+ assert value != null;
+ consent.setValue(value);
}
// Remember previous choice.
diff --git a/idp-distribution/pom.xml b/idp-distribution/pom.xml
index 36aa1b55a..dcf7ee75e 100644
--- a/idp-distribution/pom.xml
+++ b/idp-distribution/pom.xml
@@ -276,7 +276,7 @@
<dependency>
<groupId>net.shibboleth.maven.enforcer.rules</groupId>
<artifactId>maven-dist-enforcer</artifactId>
- <version>${maven-dist-enforcer.version}</version>
+ <version>3.2.1-SNAPSHOT</version>
</dependency>
</dependencies>
<executions>
@@ -297,7 +297,7 @@
<zipFiles>${project.build.directory}/${idp.finalName}.zip</zipFiles>
<tgzFiles>${project.build.directory}/${idp.finalName}.tar.gz</tgzFiles>
<checkSignatures>true</checkSignatures>
- <checkDependencies>true</checkDependencies>
+ <checkDependencies>false</checkDependencies>
<compileRuntimeArtifactFatal>false</compileRuntimeArtifactFatal>
<versionExtensions>-SNAPSHOT -GA -jre -empty-to-avoid-conflict-with-guava -M6</versionExtensions>
<classifiers>-linux-x86_64 -osx-x86_64</classifiers>
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAuthnRequest.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAuthnRequest.java
index 67d5748d0..ed710014e 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAuthnRequest.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/AddAuthnRequest.java
@@ -113,7 +113,7 @@ public class AddAuthnRequest extends AbstractAuthenticationAction {
@NonnullBeforeExec private IdentifierGenerationStrategy idGenerator;
/** Applicable profile configuration. */
- @Nullable private BrowserSSOProfileConfiguration profileConfiguration;
+ @NonnullBeforeExec private BrowserSSOProfileConfiguration profileConfiguration;
/** EntityID to populate into Issuer element. */
@Nullable private String issuerId;
@@ -270,9 +270,7 @@ public class AddAuthnRequest extends AbstractAuthenticationAction {
object.setID(idGenerator.generateIdentifier());
object.setIssueInstant(Instant.now());
object.setVersion(SAMLVersion.VERSION_20);
- final BrowserSSOProfileConfiguration profileConfig = profileConfiguration;
- assert profileConfig!=null;
- final Integer index = profileConfig.getAttributeIndex(profileRequestContext);
+ final Integer index = profileConfiguration.getAttributeIndex(profileRequestContext);
if (index != null) {
log.debug("{} Setting AttributeConsumingServiceIndex to '{}' for SAML AuthnRequest", getLogPrefix(),
index);
@@ -292,7 +290,7 @@ public class AddAuthnRequest extends AbstractAuthenticationAction {
// ForceAuthn comes from configuration, which by default will take into account the
// AuthenticationContext parent's state (but may be overridden by deployer).
- if (profileConfig.isForceAuthn(profileRequestContext)) {
+ if (profileConfiguration.isForceAuthn(profileRequestContext)) {
log.debug("{} Setting ForceAuthn for SAML AuthnRequest", getLogPrefix());
object.setForceAuthn(true);
}
@@ -305,7 +303,7 @@ public class AddAuthnRequest extends AbstractAuthenticationAction {
final NameIDPolicy nip = nipBuilder.buildObject();
nip.setAllowCreate(true);
- final String qualifier = profileConfig.getSPNameQualifier(profileRequestContext);
+ final String qualifier = profileConfiguration.getSPNameQualifier(profileRequestContext);
if (qualifier != null) {
log.debug("{} Setting NameIDPolicy SPNameQualifier to '{}' for SAML AuthnRequest", getLogPrefix(),
qualifier);
@@ -313,7 +311,7 @@ public class AddAuthnRequest extends AbstractAuthenticationAction {
}
// TODO: use metadata for NameID Formats too?
- final List<String> formats = profileConfig.getNameIDFormatPrecedence(profileRequestContext);
+ final List<String> formats = profileConfiguration.getNameIDFormatPrecedence(profileRequestContext);
if (!formats.isEmpty()) {
log.debug("{} Setting NameIDPolicy Format to '{}' for SAML AuthnRequest", getLogPrefix(), formats.get(0));
nip.setFormat(formats.get(0));
@@ -324,7 +322,7 @@ public class AddAuthnRequest extends AbstractAuthenticationAction {
final RequestedAuthnContext rac = getRequestedAuthnContext(profileRequestContext);
if (rac != null) {
final AuthnContextComparisonTypeEnumeration operator =
- profileConfig.getAuthnContextComparison(profileRequestContext);
+ profileConfiguration.getAuthnContextComparison(profileRequestContext);
if (operator != null) {
log.debug("{} Setting RequestedAuthnContext comparison to {}", getLogPrefix(), operator);
rac.setComparison(operator);
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/ValidateSAMLAuthentication.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/ValidateSAMLAuthentication.java
index 96a4e7e28..a804350ff 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/ValidateSAMLAuthentication.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/saml2/profile/impl/ValidateSAMLAuthentication.java
@@ -138,7 +138,7 @@ public class ValidateSAMLAuthentication extends AbstractValidationAction {
@NonnullBeforeExec private SAMLAuthnContext samlAuthnContext;
/** Store off profile config. */
- @Nullable private BrowserSSOProfileConfiguration profileConfiguration;
+ @NonnullBeforeExec private BrowserSSOProfileConfiguration profileConfiguration;
/** Incoming context translation function. */
@Nullable private Function<AuthnContext,Collection<Principal>> authnContextTranslator;
@@ -298,14 +298,12 @@ public class ValidateSAMLAuthentication extends AbstractValidationAction {
logSuccess();
- final BrowserSSOProfileConfiguration prConfig = profileConfiguration;
- assert prConfig!=null;
- authnContextTranslator = prConfig.getAuthnContextTranslationStrategy(profileRequestContext);
- authnContextTranslatorEx = prConfig.getAuthnContextTranslationStrategyEx(profileRequestContext);
+ authnContextTranslator = profileConfiguration.getAuthnContextTranslationStrategy(profileRequestContext);
+ authnContextTranslatorEx = profileConfiguration.getAuthnContextTranslationStrategyEx(profileRequestContext);
buildAuthenticationResult(profileRequestContext, authenticationContext);
final AuthenticationResult ar = authenticationContext.getAuthenticationResult();
- if (ar != null && prConfig.isProxiedAuthnInstant(profileRequestContext)) {
+ if (ar != null && profileConfiguration.isProxiedAuthnInstant(profileRequestContext)) {
final AuthnStatement as = samlAuthnContext.getAuthnStatement();
assert as != null;
final Instant ai = as.getAuthnInstant();
diff --git a/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/UpdateSessionWithAuthenticationResult.java b/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/UpdateSessionWithAuthenticationResult.java
index 7ebcd6884..45c5b6bfc 100644
--- a/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/UpdateSessionWithAuthenticationResult.java
+++ b/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/UpdateSessionWithAuthenticationResult.java
@@ -20,7 +20,6 @@ package net.shibboleth.idp.session.impl;
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;
@@ -84,7 +83,7 @@ public class UpdateSessionWithAuthenticationResult extends AbstractAuthenticatio
@NonnullBeforeExec private SessionContext sessionCtx;
/** Existing SubjectContext. */
- @Nullable private SubjectContext subjectCtx;
+ @NonnullBeforeExec private SubjectContext subjectCtx;
/** Constructor. */
public UpdateSessionWithAuthenticationResult() {
@@ -174,7 +173,6 @@ public class UpdateSessionWithAuthenticationResult extends AbstractAuthenticatio
try {
createIdPSession(authenticationContext);
} catch (final SessionException e) {
- assert subjectCtx != null;
final String principalName = subjectCtx.getPrincipalName();
log.error("{} Error creating session for principal {}", getLogPrefix(), principalName, e);
ActionSupport.buildEvent(profileRequestContext, EventIds.IO_ERROR);
diff --git a/idp-spring/src/main/java/net/shibboleth/idp/profile/spring/factory/FlowDefinitionRegistryFactoryBean.java b/idp-spring/src/main/java/net/shibboleth/idp/profile/spring/factory/FlowDefinitionRegistryFactoryBean.java
index a21cdd827..260e83ec0 100644
--- a/idp-spring/src/main/java/net/shibboleth/idp/profile/spring/factory/FlowDefinitionRegistryFactoryBean.java
+++ b/idp-spring/src/main/java/net/shibboleth/idp/profile/spring/factory/FlowDefinitionRegistryFactoryBean.java
@@ -20,7 +20,6 @@ package net.shibboleth.idp.profile.spring.factory;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collection;
-import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.Map;
@@ -30,9 +29,9 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.slf4j.Logger;
-import net.shibboleth.shared.primitive.LoggerFactory;
import org.springframework.beans.factory.BeanCreationException;
import org.springframework.beans.factory.config.AbstractFactoryBean;
+import org.springframework.context.ApplicationContext;
import org.springframework.webflow.config.FlowDefinitionResource;
import org.springframework.webflow.core.collection.LocalAttributeMap;
import org.springframework.webflow.definition.registry.FlowDefinitionRegistry;
@@ -51,7 +50,9 @@ import org.springframework.webflow.engine.model.registry.FlowModelRegistry;
import org.springframework.webflow.engine.model.registry.FlowModelRegistryImpl;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.primitive.StringSupport;
/**
@@ -83,8 +84,8 @@ public class FlowDefinitionRegistryFactoryBean extends AbstractFactoryBean<FlowD
/** Constructor. */
public FlowDefinitionRegistryFactoryBean() {
- flowLocations = Collections.emptyMap();
- flowLocationPatterns = Collections.emptyMap();
+ flowLocations = CollectionSupport.emptyMap();
+ flowLocationPatterns = CollectionSupport.emptyMap();
}
/** {@inheritDoc} */
@@ -166,8 +167,10 @@ public class FlowDefinitionRegistryFactoryBean extends AbstractFactoryBean<FlowD
assert flowBuilderServices != null;
// This is the whole reason for this class.
+ final ApplicationContext ac = flowBuilderServices.getApplicationContext();
+ assert ac != null;
final FlowDefinitionResourceFactory flowResourceFactory =
- new FlowDefinitionResourceFactory(flowBuilderServices.getApplicationContext());
+ new FlowDefinitionResourceFactory(ac);
final DefaultFlowRegistry flowRegistry = new DefaultFlowRegistry();
flowRegistry.setParent(this.parent);
@@ -197,8 +200,11 @@ public class FlowDefinitionRegistryFactoryBean extends AbstractFactoryBean<FlowD
final LocalAttributeMap<Object> attributes = new LocalAttributeMap<>();
updateFlowAttributes(attributes);
+ final String value = location.getValue();
+ final String key = location.getKey();
+ assert value != null && key != null;
final FlowDefinitionResource resource =
- resourceFactory.createResource(basePath, location.getValue(), attributes, location.getKey());
+ resourceFactory.createResource(basePath, value, attributes, key);
registerFlow(resource, flowRegistry);
}
}
@@ -224,7 +230,9 @@ public class FlowDefinitionRegistryFactoryBean extends AbstractFactoryBean<FlowD
} else {
base = "";
}
- resources = resourceFactory.createResources(base, pattern.getKey(), attributes);
+ final String key = pattern.getKey();
+ assert base != null && key != null;
+ resources = resourceFactory.createResources(base, key, attributes);
} catch (final IOException e) {
throw new IllegalStateException(
"An I/O Exception occurred resolving the flow location pattern '" + pattern.getKey() + "'", e);
@@ -291,7 +299,7 @@ public class FlowDefinitionRegistryFactoryBean extends AbstractFactoryBean<FlowD
private static class DefaultFlowRegistry extends FlowDefinitionRegistryImpl {
/** The model registry. */
- private FlowModelRegistry flowModelRegistry = new FlowModelRegistryImpl();
+ @Nonnull private FlowModelRegistry flowModelRegistry = new FlowModelRegistryImpl();
/**
* Get the model registry.
diff --git a/idp-spring/src/main/java/net/shibboleth/idp/profile/spring/factory/FlowDefinitionResourceFactory.java b/idp-spring/src/main/java/net/shibboleth/idp/profile/spring/factory/FlowDefinitionResourceFactory.java
index aa104aacd..3f68abe58 100644
--- a/idp-spring/src/main/java/net/shibboleth/idp/profile/spring/factory/FlowDefinitionResourceFactory.java
+++ b/idp-spring/src/main/java/net/shibboleth/idp/profile/spring/factory/FlowDefinitionResourceFactory.java
@@ -184,7 +184,9 @@ public class FlowDefinitionResourceFactory {
} else if (flowResource instanceof FileSystemResource) {
filePath = truncateFilePath(((FileSystemResource) flowResource).getPath(), localBasePath);
} else if (flowResource instanceof UrlResource || flowResource instanceof VfsResource) {
- filePath = truncateFilePath(flowResource.getURL().getPath(), localBasePath);
+ final String path = flowResource.getURL().getPath();
+ assert path != null;
+ filePath = truncateFilePath(path, localBasePath);
} else {
// Default to the filename.
final String fname = flowResource.getFilename();
@@ -234,7 +236,9 @@ public class FlowDefinitionResourceFactory {
@Nonnull @NotEmpty final String basePath) {
final int basePathIndex = filePath.lastIndexOf(basePath);
if (basePathIndex != -1) {
- return filePath.substring(basePathIndex);
+ final String result = filePath.substring(basePathIndex);
+ assert result != null;
+ return result;
}
return filePath;
}
diff --git a/idp-spring/src/main/java/net/shibboleth/idp/profile/spring/factory/FlowModelFlowBuilder.java b/idp-spring/src/main/java/net/shibboleth/idp/profile/spring/factory/FlowModelFlowBuilder.java
index d0f9a7fa0..8f703ee1e 100644
--- a/idp-spring/src/main/java/net/shibboleth/idp/profile/spring/factory/FlowModelFlowBuilder.java
+++ b/idp-spring/src/main/java/net/shibboleth/idp/profile/spring/factory/FlowModelFlowBuilder.java
@@ -37,6 +37,7 @@ import org.springframework.webflow.scope.FlashScope;
import org.springframework.webflow.scope.FlowScope;
import org.springframework.webflow.scope.ViewScope;
+import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext;
import net.shibboleth.shared.spring.context.FilesystemGenericWebApplicationContext;
import net.shibboleth.shared.spring.custom.SchemaTypeAwareXMLBeanDefinitionReader;
@@ -72,10 +73,13 @@ public class FlowModelFlowBuilder extends org.springframework.webflow.engine.bui
@Nonnull private String[] parseContextResources(@Nullable final List<BeanImportModel> beanImports) {
if (beanImports != null && !beanImports.isEmpty()) {
final String[] resources = new String[beanImports.size()];
- return beanImports.stream()
+ final @Nonnull List<String> resultAsList = beanImports.stream()
.map(BeanImportModel::getResource)
- .collect(Collectors.toUnmodifiableList())
- .toArray(resources);
+ .collect(CollectionSupport.nonnullCollector(Collectors.toUnmodifiableList()))
+ .get();
+ final String result[] = resultAsList.toArray(resources);
+ assert result != null;
+ return result;
}
return new String[0];
}
diff --git a/idp-spring/src/main/java/net/shibboleth/idp/profile/spring/factory/FlowRelativeResourceLoader.java b/idp-spring/src/main/java/net/shibboleth/idp/profile/spring/factory/FlowRelativeResourceLoader.java
index ce743803e..4bae501c1 100644
--- a/idp-spring/src/main/java/net/shibboleth/idp/profile/spring/factory/FlowRelativeResourceLoader.java
+++ b/idp-spring/src/main/java/net/shibboleth/idp/profile/spring/factory/FlowRelativeResourceLoader.java
@@ -71,8 +71,9 @@ class FlowRelativeResourceLoader extends DefaultResourceLoader {
}
if (location.startsWith(CLASSPATH_URL_PREFIX)) {
- return new ClassPathResource(location.substring(CLASSPATH_URL_PREFIX.length()),
- getClassLoader());
+ final String subString = location.substring(CLASSPATH_URL_PREFIX.length());
+ assert subString!=null;
+ return new ClassPathResource(subString, getClassLoader());
}
return createFlowRelativeResource(location);
}
diff --git a/idp-ui/src/main/java/net/shibboleth/idp/ui/impl/SetRPUIInformation.java b/idp-ui/src/main/java/net/shibboleth/idp/ui/impl/SetRPUIInformation.java
index 1a2af7168..b4f804707 100644
--- a/idp-ui/src/main/java/net/shibboleth/idp/ui/impl/SetRPUIInformation.java
+++ b/idp-ui/src/main/java/net/shibboleth/idp/ui/impl/SetRPUIInformation.java
@@ -43,6 +43,7 @@ import net.shibboleth.idp.authn.context.AuthenticationContext;
import net.shibboleth.idp.profile.AbstractProfileAction;
import net.shibboleth.idp.ui.context.RelyingPartyUIContext;
import net.shibboleth.saml.profile.context.navigate.SAMLMetadataContextLookupFunction;
+import net.shibboleth.shared.annotation.constraint.NonnullBeforeExec;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.primitive.LoggerFactory;
@@ -77,7 +78,7 @@ public class SetRPUIInformation extends AbstractProfileAction {
* The {@link EntityDescriptor}. If we cannot find this we short cut the {@link #doExecute(ProfileRequestContext)}
* stage.
*/
- @Nullable private EntityDescriptor entityDescriptor;
+ @NonnullBeforeExec private EntityDescriptor entityDescriptor;
/** The {@link SPSSODescriptor}. Not finding this is not fatal */
@Nullable private SPSSODescriptor spSSODescriptor;
@@ -92,9 +93,11 @@ public class SetRPUIInformation extends AbstractProfileAction {
public SetRPUIInformation() {
metadataContextLookupStrategy = new SAMLMetadataContextLookupFunction();
- rpUIContextCreateStrategy =
+ final Function<ProfileRequestContext, RelyingPartyUIContext> rccs =
new ChildContextLookup<>(RelyingPartyUIContext.class, true).compose(
new ChildContextLookup<>(AuthenticationContext.class, true));
+ assert rccs != null;
+ rpUIContextCreateStrategy = rccs;
}
/**
diff --git a/idp-ui/src/main/java/net/shibboleth/idp/ui/taglib/ServiceContactTag.java b/idp-ui/src/main/java/net/shibboleth/idp/ui/taglib/ServiceContactTag.java
index e8ffe7091..381b05479 100644
--- a/idp-ui/src/main/java/net/shibboleth/idp/ui/taglib/ServiceContactTag.java
+++ b/idp-ui/src/main/java/net/shibboleth/idp/ui/taglib/ServiceContactTag.java
@@ -116,7 +116,7 @@ public class ServiceContactTag extends ServiceTagSupport {
final List<EmailAddress> emails = contact.getEmailAddresses();
String emailAddress = null;
- if (emails != null && !emails.isEmpty()) {
+ if (!emails.isEmpty()) {
emailAddress = emails.get(0).getURI();
}
@@ -133,10 +133,6 @@ public class ServiceContactTag extends ServiceTagSupport {
fullName.append(surName.getValue()).append(" ");
}
if (0 == fullName.length()) {
- if (null == emails) {
- log.debug("No name and no email");
- return null;
- }
log.debug("no names found, using email address as text");
fullName.append(emailAddress);
}
diff --git a/idp-ui/src/main/java/net/shibboleth/idp/ui/taglib/ServiceTagSupport.java b/idp-ui/src/main/java/net/shibboleth/idp/ui/taglib/ServiceTagSupport.java
index f69124ed2..76296d743 100644
--- a/idp-ui/src/main/java/net/shibboleth/idp/ui/taglib/ServiceTagSupport.java
+++ b/idp-ui/src/main/java/net/shibboleth/idp/ui/taglib/ServiceTagSupport.java
@@ -49,6 +49,7 @@ public class ServiceTagSupport extends BodyTagSupport {
@Nonnull private static Logger log = LoggerFactory.getLogger(ServiceTagSupport.class);
/** Strategy function for access to {@link RelyingPartyUIContext} for input to resolver. */
+ @SuppressWarnings("null")
@Nonnull private static Function<ProfileRequestContext, RelyingPartyUIContext> uiContextLookupStrategy =
new ChildContextLookup<>(RelyingPartyUIContext.class).compose(
new ChildContextLookup<>(AuthenticationContext.class));
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list