[java-shib-metadata] branch main updated: Null checking

Rod Widdowson rdw at steadingsoftware.com
Mon Jan 30 09:57:53 UTC 2023


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

rdw pushed a commit to branch main
in repository java-shib-metadata.

View the commit online:
http://git.shibboleth.net/view/?p=java-shib-metadata.git;a=commit;h=ed619a5b47c2963910765779079983b8782b8b76

The following commit(s) were added to refs/heads/main by this push:
     new ed619a5b Null checking
ed619a5b is described below

commit ed619a5b47c2963910765779079983b8782b8b76
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Sun Jan 29 14:51:14 2023 +0000

    Null checking
    
    Use non-null methods where they are available.
    Pick off some more low hanging fruit.
---
 .../java/net/shibboleth/idp/saml/metadata/IdPUIInfo.java | 16 +++++++++-------
 .../shibboleth/idp/saml/metadata/OrganizationUIInfo.java |  2 +-
 .../shibboleth/idp/saml/metadata/ScopesContainer.java    | 11 ++++++-----
 .../idp/saml/security/KeyAuthoritySupport.java           |  1 +
 .../metadata/impl/ByReferenceMetadataFilterBridge.java   |  3 ++-
 .../saml/metadata/impl/MetadataProviderContainer.java    |  2 +-
 .../metadata/impl/MetadataResolverServiceGaugeSet.java   |  8 ++++----
 .../metadata/impl/MetadataResolverServiceStrategy.java   |  3 ++-
 .../saml/metadata/impl/ReloadableMetadataResolver.java   |  7 +++----
 .../saml/security/impl/KeyAuthorityNodeProcessor.java    | 12 ++++++------
 .../impl/MetadataPKIXValidationInformationResolver.java  |  2 +-
 .../saml/xmlobject/impl/KeyAuthorityUnmarshaller.java    |  8 ++++----
 .../idp/saml/xmlobject/impl/ScopeUnmarshaller.java       | 11 ++++++-----
 .../shibboleth/spring/http/HTTPResourceFactoryBean.java  | 16 ++++++++--------
 .../NodeProcessingAttachingBeanPostProcessor.java        | 14 +++++++-------
 .../spring/metadata/InlineMetadataParserTest.java        |  5 ++++-
 .../shibboleth/spring/testing/AbstractFailFastTest.java  |  4 ++--
 17 files changed, 67 insertions(+), 58 deletions(-)

diff --git a/shib-metadata-api/src/main/java/net/shibboleth/idp/saml/metadata/IdPUIInfo.java b/shib-metadata-api/src/main/java/net/shibboleth/idp/saml/metadata/IdPUIInfo.java
index a9cad823..2d3da1a5 100644
--- a/shib-metadata-api/src/main/java/net/shibboleth/idp/saml/metadata/IdPUIInfo.java
+++ b/shib-metadata-api/src/main/java/net/shibboleth/idp/saml/metadata/IdPUIInfo.java
@@ -24,21 +24,23 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.function.Predicate;
+import java.util.stream.Collector;
 import java.util.stream.Collectors;
 
 import javax.annotation.Nonnull;
 
+import org.opensaml.saml.ext.saml2mdui.DisplayName;
 import org.opensaml.saml.ext.saml2mdui.Keywords;
 import org.opensaml.saml.ext.saml2mdui.Logo;
 import org.opensaml.saml.ext.saml2mdui.UIInfo;
 import org.opensaml.saml.saml2.metadata.LocalizedName;
 import org.opensaml.saml.saml2.metadata.LocalizedURI;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import net.shibboleth.shared.annotation.constraint.NotLive;
 import net.shibboleth.shared.annotation.constraint.Unmodifiable;
 import net.shibboleth.shared.collection.CollectionSupport;
+import net.shibboleth.shared.primitive.LoggerFactory;
 
 /**
  * Class to contain a processed form of the {@link UIInfo} suitable for display purposes. */
@@ -86,15 +88,15 @@ public class IdPUIInfo {
      * @param uiInfo The OpenSaml UIInfo to convert.
      */
     public IdPUIInfo(@Nonnull final UIInfo uiInfo) {
-        
+        final Collector<DisplayName, ?, Map<Locale, String>> x = Collectors.toUnmodifiableMap(
+                displayName -> Locale.forLanguageTag(displayName.getXMLLang()),
+                displayName -> displayName.getValue(),
+                CollectionSupport.warningMergeFunction("IdpUIInfo DisplayName", false));
         displayNames = uiInfo.
                 getDisplayNames().
                 stream().
-                filter(nullLanguageString("DisplayName")).
-                collect(Collectors.toUnmodifiableMap(
-                        displayName -> Locale.forLanguageTag(displayName.getXMLLang()), 
-                        displayName -> displayName.getValue(),
-                        CollectionSupport.warningMergeFunction("IdpUIInfo DisplayName", false)));
+                filter(nullLanguageString("DisplayName")). 
+                collect(CollectionSupport.nonnullCollector(x)).get();
         keywordList = uiInfo.
                 getKeywords().
                 stream().
diff --git a/shib-metadata-api/src/main/java/net/shibboleth/idp/saml/metadata/OrganizationUIInfo.java b/shib-metadata-api/src/main/java/net/shibboleth/idp/saml/metadata/OrganizationUIInfo.java
index 6042ac19..ea159cde 100644
--- a/shib-metadata-api/src/main/java/net/shibboleth/idp/saml/metadata/OrganizationUIInfo.java
+++ b/shib-metadata-api/src/main/java/net/shibboleth/idp/saml/metadata/OrganizationUIInfo.java
@@ -28,10 +28,10 @@ import org.opensaml.saml.saml2.metadata.LocalizedName;
 import org.opensaml.saml.saml2.metadata.LocalizedURI;
 import org.opensaml.saml.saml2.metadata.Organization;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import net.shibboleth.shared.annotation.constraint.Unmodifiable;
 import net.shibboleth.shared.collection.CollectionSupport;
+import net.shibboleth.shared.primitive.LoggerFactory;
 
 /**
  * Class to contain a processed form of the {@link Organization} suitable for display purposes. */
diff --git a/shib-metadata-api/src/main/java/net/shibboleth/idp/saml/metadata/ScopesContainer.java b/shib-metadata-api/src/main/java/net/shibboleth/idp/saml/metadata/ScopesContainer.java
index e72eadcb..2c230e27 100644
--- a/shib-metadata-api/src/main/java/net/shibboleth/idp/saml/metadata/ScopesContainer.java
+++ b/shib-metadata-api/src/main/java/net/shibboleth/idp/saml/metadata/ScopesContainer.java
@@ -17,7 +17,6 @@
 
 package net.shibboleth.idp.saml.metadata;
 
-import java.util.Collections;
 import java.util.List;
 import java.util.Set;
 import java.util.function.Predicate;
@@ -56,12 +55,13 @@ public class ScopesContainer {
      */
     public void setSimpleScopes(@Nullable final Set<String> scopes) {
         if (scopes == null || scopes.isEmpty()) {
-            simpleScopes = Collections.emptySet();
+            simpleScopes = CollectionSupport.emptySet();
         } else {
             simpleScopes = scopes.stream().
                     map(StringSupport::trimOrNull).
                     filter(e -> null != e).
-                    collect(Collectors.toSet());
+                    collect(CollectionSupport.nonnullCollector(Collectors.toSet())).
+                    get();
         }
     }
     
@@ -71,13 +71,14 @@ public class ScopesContainer {
      */
     public void setRegexpScopes(@Nullable final Set<String> scopes) {
         if (scopes == null || scopes.isEmpty()) {
-            regexpScopes = Collections.emptyList();
+            regexpScopes = CollectionSupport.emptyList();
         } else {
             regexpScopes = scopes.stream().
                     filter(e -> null != e).
                     map(Pattern::compile).
                     map(Pattern::asMatchPredicate).
-                    collect(Collectors.toList());   
+                    collect(CollectionSupport.nonnullCollector(Collectors.toList())).
+                    get();   
         }
     }
     
diff --git a/shib-metadata-api/src/main/java/net/shibboleth/idp/saml/security/KeyAuthoritySupport.java b/shib-metadata-api/src/main/java/net/shibboleth/idp/saml/security/KeyAuthoritySupport.java
index 2e4b880b..c77841d3 100644
--- a/shib-metadata-api/src/main/java/net/shibboleth/idp/saml/security/KeyAuthoritySupport.java
+++ b/shib-metadata-api/src/main/java/net/shibboleth/idp/saml/security/KeyAuthoritySupport.java
@@ -36,6 +36,7 @@ import org.opensaml.xmlsec.signature.KeyInfo;
 
 import net.shibboleth.idp.saml.xmlobject.KeyAuthority;
 import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.logic.Constraint;
 
 
diff --git a/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/ByReferenceMetadataFilterBridge.java b/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/ByReferenceMetadataFilterBridge.java
index 8f0034de..3e27953a 100644
--- a/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/ByReferenceMetadataFilterBridge.java
+++ b/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/ByReferenceMetadataFilterBridge.java
@@ -30,10 +30,11 @@ import org.opensaml.saml.metadata.resolver.filter.MetadataFilterChain;
 import org.opensaml.saml.metadata.resolver.filter.MetadataFilterContext;
 import org.opensaml.saml.metadata.resolver.filter.impl.ByReferenceMetadataFilter;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeansException;
 import org.springframework.context.ApplicationContext;
 
+import net.shibboleth.shared.primitive.LoggerFactory;
+
 /**
  * This is a bridge filter that uses Spring to locate extant {@link ByReferenceMetadataFilter}
  * objects to run.
diff --git a/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/MetadataProviderContainer.java b/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/MetadataProviderContainer.java
index eff91b06..64267ee3 100644
--- a/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/MetadataProviderContainer.java
+++ b/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/MetadataProviderContainer.java
@@ -23,11 +23,11 @@ import javax.annotation.Nonnull;
 
 import org.opensaml.saml.metadata.resolver.MetadataResolver;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
 import net.shibboleth.shared.spring.service.AbstractServiceableComponent;
 
 
diff --git a/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/MetadataResolverServiceGaugeSet.java b/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/MetadataResolverServiceGaugeSet.java
index 9c02c420..a477dafd 100644
--- a/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/MetadataResolverServiceGaugeSet.java
+++ b/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/MetadataResolverServiceGaugeSet.java
@@ -18,7 +18,6 @@ package net.shibboleth.idp.saml.metadata.impl;
 
 import java.time.Instant;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.function.BiConsumer;
@@ -30,7 +29,6 @@ import org.opensaml.saml.metadata.resolver.ChainingMetadataResolver;
 import org.opensaml.saml.metadata.resolver.MetadataResolver;
 import org.opensaml.saml.metadata.resolver.RefreshableMetadataResolver;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import com.codahale.metrics.Gauge;
 import com.codahale.metrics.MetricFilter;
@@ -42,7 +40,9 @@ import com.google.common.collect.ImmutableMap.Builder;
 import net.shibboleth.shared.annotation.ParameterName;
 import net.shibboleth.shared.annotation.constraint.NonnullElements;
 import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.ComponentInitializationException;
+import net.shibboleth.shared.primitive.LoggerFactory;
 import net.shibboleth.shared.resolver.ResolverException;
 import net.shibboleth.shared.service.ReloadableServiceGaugeSet;
 import net.shibboleth.shared.service.ServiceException;
@@ -242,7 +242,7 @@ public class MetadataResolverServiceGaugeSet extends ReloadableServiceGaugeSet<M
      * @param parent - root of the chaining resolver tree.
      * @return - the list.
      */
-    private List<MetadataResolver> getAllChildren(final ChainingMetadataResolver parent) {
+    @Nonnull private List<MetadataResolver> getAllChildren(final ChainingMetadataResolver parent) {
         final ArrayList<MetadataResolver> result = new ArrayList<>(1+ parent.getResolvers().size());
         // Add ourselves
         result.add(parent);
@@ -269,7 +269,7 @@ public class MetadataResolverServiceGaugeSet extends ReloadableServiceGaugeSet<M
         if (rootResolver instanceof ChainingMetadataResolver) {
             return getAllChildren((ChainingMetadataResolver) rootResolver);
         }
-        return Collections.singletonList(rootResolver);
+        return CollectionSupport.singletonList(rootResolver);
     }
 
 }
\ No newline at end of file
diff --git a/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/MetadataResolverServiceStrategy.java b/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/MetadataResolverServiceStrategy.java
index 8f928e90..7935ea5a 100644
--- a/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/MetadataResolverServiceStrategy.java
+++ b/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/MetadataResolverServiceStrategy.java
@@ -31,6 +31,7 @@ import org.opensaml.saml.metadata.resolver.MetadataResolver;
 import org.springframework.beans.factory.BeanCreationException;
 import org.springframework.context.ApplicationContext;
 
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.logic.NonnullFunction;
@@ -85,7 +86,7 @@ public class MetadataResolverServiceStrategy extends AbstractIdentifiableInitial
         try {
             chain.setResolvers(containerList.stream().
                                map(MetadataProviderContainer::getEmbeddedResolver).
-                               collect(Collectors.toList()));
+                               collect(CollectionSupport.nonnullCollector(Collectors.toList())).get());
             chain.setId("MultiFileResolverFor:"+containers.size()+":Resources");
             chain.initialize();
             final MetadataProviderContainer result = new MetadataProviderContainer();
diff --git a/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/ReloadableMetadataResolver.java b/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/ReloadableMetadataResolver.java
index b87aee7b..e8309f0e 100644
--- a/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/ReloadableMetadataResolver.java
+++ b/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/ReloadableMetadataResolver.java
@@ -17,8 +17,6 @@
 
 package net.shibboleth.idp.saml.metadata.impl;
 
-import java.util.Collections;
-
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
@@ -26,11 +24,12 @@ import org.opensaml.saml.metadata.resolver.MetadataResolver;
 import org.opensaml.saml.metadata.resolver.filter.MetadataFilter;
 import org.opensaml.saml.saml2.metadata.EntityDescriptor;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import net.shibboleth.shared.annotation.ParameterName;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
 import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
 import net.shibboleth.shared.resolver.CriteriaSet;
 import net.shibboleth.shared.resolver.ResolverException;
 import net.shibboleth.shared.service.ReloadableService;
@@ -72,7 +71,7 @@ public class ReloadableMetadataResolver extends AbstractIdentifiableInitializabl
                     + "Invalid configuration.", getId(), e);
         }
 
-        return Collections.emptySet();
+        return CollectionSupport.emptySet();
     }
 
     /** {@inheritDoc} */
diff --git a/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/security/impl/KeyAuthorityNodeProcessor.java b/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/security/impl/KeyAuthorityNodeProcessor.java
index 0f7aa62c..73eb160a 100644
--- a/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/security/impl/KeyAuthorityNodeProcessor.java
+++ b/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/security/impl/KeyAuthorityNodeProcessor.java
@@ -17,14 +17,10 @@
 
 package net.shibboleth.idp.saml.security.impl;
 
-import java.util.Collections;
 import java.util.List;
 
 import javax.annotation.Nonnull;
 
-import net.shibboleth.idp.saml.security.KeyAuthoritySupport;
-import net.shibboleth.idp.saml.xmlobject.KeyAuthority;
-
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.saml.metadata.resolver.filter.FilterException;
 import org.opensaml.saml.metadata.resolver.filter.MetadataNodeProcessor;
@@ -34,7 +30,11 @@ import org.opensaml.saml.saml2.metadata.Extensions;
 import org.opensaml.security.SecurityException;
 import org.opensaml.security.x509.PKIXValidationInformation;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+
+import net.shibboleth.idp.saml.security.KeyAuthoritySupport;
+import net.shibboleth.idp.saml.xmlobject.KeyAuthority;
+import net.shibboleth.shared.collection.CollectionSupport;
+import net.shibboleth.shared.primitive.LoggerFactory;
 
 /**
  * An implementation of {@link MetadataNodeProcessor} which supports processing the 
@@ -118,7 +118,7 @@ public class KeyAuthorityNodeProcessor implements MetadataNodeProcessor {
     @Nonnull protected List<XMLObject> getKeyAuthorities(@Nonnull final EntitiesDescriptor entitiesDescriptor) {
         final Extensions extensions = entitiesDescriptor.getExtensions();
         if (extensions == null) {
-            return Collections.emptyList();
+            return CollectionSupport.emptyList();
         }
         
         return extensions.getUnknownXMLObjects(KeyAuthority.DEFAULT_ELEMENT_NAME);
diff --git a/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/security/impl/MetadataPKIXValidationInformationResolver.java b/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/security/impl/MetadataPKIXValidationInformationResolver.java
index 6165a585..5e49b257 100644
--- a/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/security/impl/MetadataPKIXValidationInformationResolver.java
+++ b/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/security/impl/MetadataPKIXValidationInformationResolver.java
@@ -46,7 +46,6 @@ import org.opensaml.security.x509.TrustedNamesCriterion;
 import org.opensaml.xmlsec.keyinfo.KeyInfoSupport;
 import org.opensaml.xmlsec.signature.KeyInfo;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import net.shibboleth.idp.saml.security.KeyAuthoritySupport;
 import net.shibboleth.idp.saml.xmlobject.KeyAuthority;
@@ -54,6 +53,7 @@ import net.shibboleth.shared.annotation.ParameterName;
 import net.shibboleth.shared.collection.LockableClassToInstanceMultiMap;
 import net.shibboleth.shared.component.AbstractInitializableComponent;
 import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.primitive.LoggerFactory;
 import net.shibboleth.shared.primitive.StringSupport;
 import net.shibboleth.shared.resolver.CriteriaSet;
 import net.shibboleth.shared.resolver.ResolverException;
diff --git a/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/xmlobject/impl/KeyAuthorityUnmarshaller.java b/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/xmlobject/impl/KeyAuthorityUnmarshaller.java
index d3d9c832..28989e0a 100644
--- a/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/xmlobject/impl/KeyAuthorityUnmarshaller.java
+++ b/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/xmlobject/impl/KeyAuthorityUnmarshaller.java
@@ -21,17 +21,17 @@ import javax.annotation.Nonnull;
 import javax.annotation.concurrent.ThreadSafe;
 import javax.xml.namespace.QName;
 
-import net.shibboleth.idp.saml.xmlobject.KeyAuthority;
-import net.shibboleth.shared.xml.QNameSupport;
-
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.core.xml.io.AbstractXMLObjectUnmarshaller;
 import org.opensaml.core.xml.io.UnmarshallingException;
 import org.opensaml.xmlsec.signature.KeyInfo;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.w3c.dom.Attr;
 
+import net.shibboleth.idp.saml.xmlobject.KeyAuthority;
+import net.shibboleth.shared.primitive.LoggerFactory;
+import net.shibboleth.shared.xml.QNameSupport;
+
 /** Unmarshaller for {@link KeyAuthority}. */
 @ThreadSafe
 public class KeyAuthorityUnmarshaller extends AbstractXMLObjectUnmarshaller {
diff --git a/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/xmlobject/impl/ScopeUnmarshaller.java b/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/xmlobject/impl/ScopeUnmarshaller.java
index ea0e0457..c481b04f 100644
--- a/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/xmlobject/impl/ScopeUnmarshaller.java
+++ b/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/xmlobject/impl/ScopeUnmarshaller.java
@@ -17,17 +17,18 @@
 
 package net.shibboleth.idp.saml.xmlobject.impl;
 
+import javax.annotation.Nonnull;
 import javax.annotation.concurrent.ThreadSafe;
 
-import net.shibboleth.idp.saml.xmlobject.Scope;
-
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.core.xml.io.AbstractXMLObjectUnmarshaller;
 import org.opensaml.core.xml.io.UnmarshallingException;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.w3c.dom.Attr;
 
+import net.shibboleth.idp.saml.xmlobject.Scope;
+import net.shibboleth.shared.primitive.LoggerFactory;
+
 /** Unmarshaller for {@link Scope}. */
 @ThreadSafe
 public class ScopeUnmarshaller extends AbstractXMLObjectUnmarshaller {
@@ -36,7 +37,7 @@ public class ScopeUnmarshaller extends AbstractXMLObjectUnmarshaller {
     private final Logger log = LoggerFactory.getLogger(ScopeUnmarshaller.class);
 
     /** {@inheritDoc} */
-    protected void processAttribute(final XMLObject xmlObject, final Attr attribute) throws UnmarshallingException {
+    protected void processAttribute(final @Nonnull XMLObject xmlObject, final @Nonnull Attr attribute) throws UnmarshallingException {
         final Scope scope = (Scope) xmlObject;
 
         if (attribute.getLocalName().equals(Scope.REGEXP_ATTRIB_NAME)) {
@@ -48,7 +49,7 @@ public class ScopeUnmarshaller extends AbstractXMLObjectUnmarshaller {
     }
 
     /** {@inheritDoc} */
-    protected void processElementContent(final XMLObject xmlObject, final String elementContent) {
+    protected void processElementContent(final @Nonnull XMLObject xmlObject, final @Nonnull String elementContent) {
         final Scope scope = (Scope) xmlObject;
         scope.setValue(elementContent);
     }
diff --git a/shib-metadata-spring/src/main/java/net/shibboleth/spring/http/HTTPResourceFactoryBean.java b/shib-metadata-spring/src/main/java/net/shibboleth/spring/http/HTTPResourceFactoryBean.java
index e5de6f2f..1cccabb1 100644
--- a/shib-metadata-spring/src/main/java/net/shibboleth/spring/http/HTTPResourceFactoryBean.java
+++ b/shib-metadata-spring/src/main/java/net/shibboleth/spring/http/HTTPResourceFactoryBean.java
@@ -24,7 +24,6 @@ import java.security.cert.CertificateException;
 import java.security.cert.X509Certificate;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 
 import javax.annotation.Nonnull;
@@ -48,7 +47,6 @@ import org.opensaml.security.x509.impl.BasicPKIXValidationInformation;
 import org.opensaml.security.x509.impl.PKIXX509CredentialTrustEngine;
 import org.opensaml.security.x509.impl.StaticPKIXValidationInformationResolver;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.FatalBeanException;
 import org.springframework.beans.factory.BeanCreationException;
 import org.springframework.beans.factory.config.AbstractFactoryBean;
@@ -56,7 +54,9 @@ import org.springframework.core.io.Resource;
 
 import net.shibboleth.shared.annotation.constraint.NonnullElements;
 import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.httpclient.HttpClientContextHandler;
+import net.shibboleth.shared.primitive.LoggerFactory;
 import net.shibboleth.shared.spring.httpclient.resource.FileBackedHTTPResource;
 import net.shibboleth.shared.spring.httpclient.resource.HTTPResource;
 
@@ -97,8 +97,8 @@ public class HTTPResourceFactoryBean extends AbstractFactoryBean<HTTPResource> {
 
     /** Constructor. */
     public HTTPResourceFactoryBean() {
-        keyResources = Collections.emptyList();
-        certificateResources = Collections.emptyList();
+        keyResources = CollectionSupport.emptyList();
+        certificateResources = CollectionSupport.emptyList();
     }
 
     /**
@@ -143,7 +143,7 @@ public class HTTPResourceFactoryBean extends AbstractFactoryBean<HTTPResource> {
      * @param keys the resources
      */
     public void setPublicKeys(@Nullable final List<Resource> keys) {
-        keyResources = keys != null ? keys : Collections.emptyList();
+        keyResources = keys != null ? keys : CollectionSupport.emptyList();
     }
     
     /**
@@ -152,7 +152,7 @@ public class HTTPResourceFactoryBean extends AbstractFactoryBean<HTTPResource> {
      * @param certs the resources
      */
     public void setCertificates(@Nullable final List<Resource> certs) {
-        certificateResources = certs != null ? certs : Collections.emptyList();
+        certificateResources = certs != null ? certs : CollectionSupport.emptyList();
     }
     
     /**
@@ -266,9 +266,9 @@ public class HTTPResourceFactoryBean extends AbstractFactoryBean<HTTPResource> {
             log.debug("Auto-wiring PKIXX509CredentialTrustEngine into HTTPResource");
             final BasicPKIXValidationInformation info =
                     new BasicPKIXValidationInformation(getCertificates(), null, verifyDepth);
-            final StaticPKIXValidationInformationResolver resolver =
+            @Nonnull final StaticPKIXValidationInformationResolver resolver =
                     new StaticPKIXValidationInformationResolver(
-                            Collections.<PKIXValidationInformation>singletonList(info), null, false);
+                            CollectionSupport.<PKIXValidationInformation>singletonList(info), null, false);
             // Second parameter of null disables name checking, since this is already handled for HTTPS.
             final PKIXX509CredentialTrustEngine trustEngine = new PKIXX509CredentialTrustEngine(resolver, null);
             final HttpClientSecurityParameters params = new HttpClientSecurityParameters();
diff --git a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/NodeProcessingAttachingBeanPostProcessor.java b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/NodeProcessingAttachingBeanPostProcessor.java
index 035d5634..335ece48 100644
--- a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/NodeProcessingAttachingBeanPostProcessor.java
+++ b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/NodeProcessingAttachingBeanPostProcessor.java
@@ -18,7 +18,6 @@
 package net.shibboleth.spring.metadata;
 
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 
 import javax.annotation.Nonnull;
@@ -36,6 +35,7 @@ import org.springframework.beans.factory.config.BeanPostProcessor;
 import org.springframework.core.Ordered;
 
 import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.ComponentInitializationException;
 
 /**
@@ -63,9 +63,9 @@ public class NodeProcessingAttachingBeanPostProcessor implements BeanPostProcess
     public NodeProcessingAttachingBeanPostProcessor(
             @Nullable @NonnullElements final Collection<MetadataNodeProcessor> processors) {
         if (processors != null) {
-            nodeProcessors = List.copyOf(processors);
+            nodeProcessors = CollectionSupport.copyToList(processors);
         } else {
-            nodeProcessors = Collections.emptyList();
+            nodeProcessors = CollectionSupport.emptyList();
         }
     }
     
@@ -79,7 +79,7 @@ public class NodeProcessingAttachingBeanPostProcessor implements BeanPostProcess
     public void setNodeProcessors(@Nullable @NonnullElements final Collection<MetadataNodeProcessor> processors) {
         if (processors != null) {
             // Replace auto-wired set.
-            nodeProcessors = List.copyOf(processors);
+            nodeProcessors = CollectionSupport.copyToList(processors);
         }
     }
 
@@ -89,7 +89,7 @@ public class NodeProcessingAttachingBeanPostProcessor implements BeanPostProcess
     }
     
     /** {@inheritDoc} */
-    @Override public Object postProcessBeforeInitialization(final Object bean, final String beanName) {
+    @Override public Object postProcessBeforeInitialization(@Nonnull final Object bean, @Nonnull final String beanName) {
         
         if (nodeProcessors.isEmpty()) {
             return bean;
@@ -117,7 +117,7 @@ public class NodeProcessingAttachingBeanPostProcessor implements BeanPostProcess
             ((MetadataFilterChain) filter).getFilters().add(filterToAttach);
         } else {
             final MetadataFilterChain chain = new MetadataFilterChain();
-            chain.setFilters(List.of(filter, filterToAttach));
+            chain.setFilters(CollectionSupport.listOf(filter, filterToAttach));
             resolver.setMetadataFilter(chain);
         }
 
@@ -125,7 +125,7 @@ public class NodeProcessingAttachingBeanPostProcessor implements BeanPostProcess
     }
 
     /** {@inheritDoc} */
-    @Override public Object postProcessAfterInitialization(final Object bean, final String beanName) {
+    @Override public Object postProcessAfterInitialization(final @Nonnull Object bean, final @Nonnull String beanName) {
         return bean;
     }
 
diff --git a/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/InlineMetadataParserTest.java b/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/InlineMetadataParserTest.java
index 0c00116d..61cc985b 100644
--- a/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/InlineMetadataParserTest.java
+++ b/shib-metadata-spring/src/test/java/net/shibboleth/spring/metadata/InlineMetadataParserTest.java
@@ -23,6 +23,7 @@ import java.util.Collection;
 import java.util.Iterator;
 import java.util.stream.Collectors;
 
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.logic.Constraint;
 import net.shibboleth.shared.resolver.ResolverException;
 import net.shibboleth.shared.service.ServiceableComponent;
@@ -109,7 +110,9 @@ public class InlineMetadataParserTest extends AbstractMetadataParserTest {
         defs.add("net/shibboleth/spring/metadata/beans.xml");
         defs.add("net/shibboleth/spring/metadata/multipleResolvers.xml");
 
-        builder.setServiceConfigurations(defs.stream().map(s -> loader.getResource(s)).collect(Collectors.toList()));
+        builder.setServiceConfigurations(defs.stream().
+                map(s -> loader.getResource(s)).
+                collect(CollectionSupport.nonnullCollector(Collectors.toList())).get());
 
         final GenericApplicationContext context = builder.build();
         
diff --git a/shib-metadata-testing/src/main/java/net/shibboleth/spring/testing/AbstractFailFastTest.java b/shib-metadata-testing/src/main/java/net/shibboleth/spring/testing/AbstractFailFastTest.java
index 9a25e764..9030f2fd 100644
--- a/shib-metadata-testing/src/main/java/net/shibboleth/spring/testing/AbstractFailFastTest.java
+++ b/shib-metadata-testing/src/main/java/net/shibboleth/spring/testing/AbstractFailFastTest.java
@@ -21,7 +21,6 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 
@@ -40,6 +39,7 @@ import org.testng.annotations.BeforeSuite;
 
 import net.shibboleth.shared.annotation.constraint.NonnullElements;
 import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.logic.Constraint;
 import net.shibboleth.shared.service.ReloadableService;
 import net.shibboleth.shared.spring.util.ApplicationContextBuilder;
@@ -126,7 +126,7 @@ public class AbstractFailFastTest extends OpenSAMLInitBaseTestCase {
         
         builder.setName(contextName);
         
-        builder.setPropertySources(Collections.singletonList(propSource));
+        builder.setPropertySources(CollectionSupport.singletonList(propSource));
         
         builder.setServiceConfigurations(Arrays.asList(resources));
 

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


More information about the commits mailing list