[java-shib-attribute] 01/02: IDP-2069 Null handling task

Rod Widdowson rdw at steadingsoftware.com
Thu May 4 13:17:24 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-attribute.

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

commit 53db84761f8f116f7265670bf3a4c3f4f8c30f14
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Wed May 3 17:44:41 2023 +0100

    IDP-2069 Null handling task
    
    https://shibboleth.atlassian.net/browse/IDP-2069
    
    Remove all non-deprecation warnings from attribute-resolver-spring
    (including tests)
---
 .../dc/http/impl/HTTPDataConnectorParser.java      | 10 +++++--
 .../resolver/spring/dc/impl/CacheConfigParser.java |  1 +
 .../spring/dc/impl/ManagedConnectionParser.java    | 13 ++++++---
 .../dc/impl/PairwiseIdDataConnectorParser.java     | 12 +++++++--
 .../dc/ldap/impl/CredentialConfigFactoryBean.java  |  4 ++-
 .../dc/ldap/impl/LDAPDataConnectorParser.java      | 15 ++++++++---
 .../dc/rdbms/impl/RDBMSDataConnectorParser.java    |  1 +
 .../impl/StorageServiceDataConnectorParser.java    |  5 ++--
 .../resolver/spring/AttributeMapperTest.java       |  1 +
 .../spring/AttributeMappingNodeProcessorTest.java  | 12 ++++-----
 .../resolver/spring/AttributeResolverTest.java     |  6 ++---
 .../idp/attribute/resolver/spring/IdP1676Test.java |  1 +
 .../spring/ad/impl/SimpleAttributeParserTest.java  |  1 +
 .../dc/http/impl/HTTPDataConnectorParserTest.java  | 17 +++++++-----
 .../spring/dc/impl/CacheConfigParserTest.java      | 17 +++++++++---
 .../dc/impl/StoredIdDataConnectorParserTest.java   |  4 +--
 .../dc/ldap/impl/LDAPDataConnectorParserTest.java  | 23 +++++++++-------
 .../rdbms/impl/RDBMSDataConnectorParserTest.java   |  7 ++++-
 .../StorageServiceDataConnectorParserTest.java     | 31 ++++++++++++++--------
 .../failfast/AttributeResolverFailFastTest.java    | 18 ++++++++-----
 .../testing/BaseAttributeDefinitionParserTest.java | 10 +++----
 21 files changed, 140 insertions(+), 69 deletions(-)

diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/http/impl/HTTPDataConnectorParser.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/http/impl/HTTPDataConnectorParser.java
index 13a44fb6a..ea2e32238 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/http/impl/HTTPDataConnectorParser.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/http/impl/HTTPDataConnectorParser.java
@@ -28,6 +28,7 @@ import org.opensaml.spring.credential.BasicX509CredentialFactoryBean;
 import org.opensaml.spring.trust.StaticExplicitKeyFactoryBean;
 import org.opensaml.spring.trust.StaticPKIXFactoryBean;
 import org.slf4j.Logger;
+import org.springframework.beans.factory.BeanCreationException;
 import org.springframework.beans.factory.config.BeanDefinition;
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.ParserContext;
@@ -367,9 +368,14 @@ public class HTTPDataConnectorParser extends AbstractDataConnectorParser {
                 log.warn("{} A maximum of 1 <ResponseMapping> should be specified; the first one has been used",
                         getLogPrefix());
             }
-            
+            if (mappings.isEmpty()) {
+                log.error("{} No <ResponseMapping> provided", getLogPrefix());
+                throw new BeanCreationException("No <ResponseMapping> provided");
+            }
+            final Element map = mappings.get(0);
+            assert map != null;
             final BeanDefinitionBuilder mapper =
-                    ScriptTypeBeanParser.parseScriptType(ScriptedResponseMappingStrategy.class, mappings.get(0));
+                    ScriptTypeBeanParser.parseScriptType(ScriptedResponseMappingStrategy.class, map);
             if (id != null) {
                 mapper.addPropertyValue("logPrefix", id + ':');
             }
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/CacheConfigParser.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/CacheConfigParser.java
index 3cc3cf387..fb7f368ab 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/CacheConfigParser.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/CacheConfigParser.java
@@ -62,6 +62,7 @@ public class CacheConfigParser {
      * Documented cache lifetime (4 hours).  Unfortunately it has to be here since
      * we do not own the implemented class.
      */
+    @SuppressWarnings("null")
     @Nonnull public static final Duration DEFAULT_TTL_MS = Duration.ofHours(4);
     
     /** Class logger. */
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/ManagedConnectionParser.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/ManagedConnectionParser.java
index 462dab5c8..99b55fff0 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/ManagedConnectionParser.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/ManagedConnectionParser.java
@@ -90,11 +90,15 @@ public class ManagedConnectionParser {
         }
         
         if (!simpleManagedElements.isEmpty()) {
-            return createSimpleManagedDataSource(simpleManagedElements.get(0));
+            final Element sme = simpleManagedElements.get(0);
+            assert sme!=null;
+            return createSimpleManagedDataSource(sme);
         }
 
         if (!containerManagedElements.isEmpty()) {
-            return createContainerManagedDataSource(containerManagedElements.get(0));
+            final Element cme = containerManagedElements.get(0);
+            assert cme!=null;
+            return createContainerManagedDataSource(cme);
         }
 
         return null;
@@ -212,8 +216,9 @@ public class ManagedConnectionParser {
             LOG.warn("<BeanManagedConnection> is incompatible with <ContainerManagedConnection>"
                     + "or <SimpleManagedConnection>. The <BeanManagedConnection> has been used");
         }
-        
-        return StringSupport.trimOrNull(ElementSupport.getElementContentAsString(beanManagedElements.get(0)));
+        final Element bme = beanManagedElements.get(0);
+        assert bme != null;
+        return StringSupport.trimOrNull(ElementSupport.getElementContentAsString(bme));
     }
 
 }
\ No newline at end of file
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/PairwiseIdDataConnectorParser.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/PairwiseIdDataConnectorParser.java
index 4f3c448b9..9126ce878 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/PairwiseIdDataConnectorParser.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/PairwiseIdDataConnectorParser.java
@@ -83,7 +83,13 @@ public class PairwiseIdDataConnectorParser extends AbstractDataConnectorParser {
         
         // If this isn't one of the older hard-wired types, inject an arbitrary ID store ref.
         if (getClass().equals(PairwiseIdDataConnectorParser.class)) {
-            builder.addPropertyReference("pairwiseIdStore", config.getAttributeNS(null, "pairwiseIdStoreRef"));
+            final String pairwiseIdStoreRef = config.getAttributeNS(null, "pairwiseIdStoreRef");
+            assert pairwiseIdStoreRef != null;
+            log.debug("{} pairwiseIdStoreRef set to {}", getLogPrefix(), pairwiseIdStoreRef);
+            if (pairwiseIdStoreRef.isEmpty()) {
+                log.warn("{} No pairwiseIdStoreRef provided",getLogPrefix());
+            }
+            builder.addPropertyReference("pairwiseIdStore", pairwiseIdStoreRef);
         }
 
         final List<Element> failoverConnector = ElementSupport.getChildElements(config, 
@@ -106,7 +112,9 @@ public class PairwiseIdDataConnectorParser extends AbstractDataConnectorParser {
      */
     @Override @Nonnull @NotEmpty protected String getLogPrefix() {
         final StringBuilder builder = new StringBuilder("Data Connector '").append(getDefinitionId()).append("':");
-        return builder.toString();
+        final String result = builder.toString();
+        assert result != null;
+        return result;
     }
     
 }
\ No newline at end of file
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/CredentialConfigFactoryBean.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/CredentialConfigFactoryBean.java
index 9d6ea7ccb..24c2125af 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/CredentialConfigFactoryBean.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/CredentialConfigFactoryBean.java
@@ -86,7 +86,9 @@ public class CredentialConfigFactoryBean extends AbstractComponentAwareFactoryBe
                 throw new BeanCreationException("Supplied StartTLSAuthenticationCredential was of wrong type");
             }
         }
-        return CredentialConfigFactory.createX509CredentialConfig(trustCerts, authCert, authKey);
+        final CredentialConfig result = CredentialConfigFactory.createX509CredentialConfig(trustCerts, authCert, authKey);
+        assert result != null;
+        return result; 
     }
 
     /**
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParser.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParser.java
index f6cbc50a2..87bbbf956 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParser.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParser.java
@@ -332,8 +332,10 @@ public class LDAPDataConnectorParser extends AbstractDataConnectorParser {
                     LOG.warn("{} Too many StartTLSTrustCredential elements in {}; only the first has been consulted",
                             getLogPrefix(), parserContext.getReaderContext().getResource().getDescription());
                 }
+                final Element trustElement =  trustElements.get(0);
+                assert trustElement!=null;
                 result.addPropertyValue("trustCredential",
-                        SpringSupport.parseCustomElement(trustElements.get(0), parserContext, result, false));
+                        SpringSupport.parseCustomElement(trustElement, parserContext, result, false));
             }
 
             final List<Element> authElements =
@@ -367,8 +369,10 @@ public class LDAPDataConnectorParser extends AbstractDataConnectorParser {
                             + " only the first has been consulted", getLogPrefix(), 
                             parserContext.getReaderContext().getResource().getDescription());
                 }
+                final Element authElement = authElements.get(0);
+                assert authElement!=null;
                 result.addPropertyValue("authCredential", SpringSupport
-                        .parseCustomElement(authElements.get(0), parserContext, result, false));
+                        .parseCustomElement(authElement, parserContext, result, false));
             }
 
             return result.getBeanDefinition();
@@ -508,7 +512,7 @@ public class LDAPDataConnectorParser extends AbstractDataConnectorParser {
                             "only the first has been consulted.", getLogPrefix());
                 }
                 final Element returnAttrsElement = returnAttrsElements.get(0);
-                
+                assert returnAttrsElement!=null;
                 final BeanDefinitionBuilder returnAttrs =
                         BeanDefinitionBuilder.rootBeanDefinition(V2Parser.class, "buildStringList");
                 returnAttrs.addConstructorArgValue(ElementSupport.getElementContentAsString(returnAttrsElement));
@@ -524,7 +528,7 @@ public class LDAPDataConnectorParser extends AbstractDataConnectorParser {
                       "only the first has been consulted.", getLogPrefix());
                 }
                 final Element binaryAttrsElement = binaryAttrsElements.get(0);
-
+                assert binaryAttrsElement!=null;
                 final BeanDefinitionBuilder binaryAttrs =
                   BeanDefinitionBuilder.rootBeanDefinition(V2Parser.class, "buildStringList");
                 binaryAttrs.addConstructorArgValue(ElementSupport.getElementContentAsString(binaryAttrsElement));
@@ -657,6 +661,7 @@ public class LDAPDataConnectorParser extends AbstractDataConnectorParser {
                         "only the first has been consulted.", getLogPrefix());
             }
             final Element saslConfigElement = saslConfigElements.get(0);
+            assert saslConfigElement!=null;
             final String mechanism = AttributeSupport.getAttributeValue(saslConfigElement, new QName("mechanism"));
             final String authorizationId = AttributeSupport.getAttributeValue(
                     saslConfigElement, new QName("authorizationId"));
@@ -675,6 +680,7 @@ public class LDAPDataConnectorParser extends AbstractDataConnectorParser {
 
             if (!saslProperties.isEmpty()) {
                 for (final Element property : saslProperties) {
+                    assert property != null;
                     final String name = AttributeSupport.getAttributeValue(property, null, "name");
                     final String value = AttributeSupport.getAttributeValue(property, null, "value");
                     if ("javax.security.sasl.qop".equals(name) && value != null) {
@@ -724,6 +730,7 @@ public class LDAPDataConnectorParser extends AbstractDataConnectorParser {
             if (!columns.isEmpty()) {
                 final ManagedMap<String, String> renamingMap = new ManagedMap<>();
                 for (final Element column : columns) {
+                    assert column != null;
                     final String columnName = AttributeSupport.getAttributeValue(column, null, "columnName");
                     final String attributeId = AttributeSupport.getAttributeValue(column, null, "attributeID");
                     if (columnName != null && attributeId != null) {
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/impl/RDBMSDataConnectorParser.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/impl/RDBMSDataConnectorParser.java
index 53098f079..8438a06d7 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/impl/RDBMSDataConnectorParser.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/impl/RDBMSDataConnectorParser.java
@@ -235,6 +235,7 @@ public class RDBMSDataConnectorParser extends AbstractDataConnectorParser {
             if (!columns.isEmpty()) {
                 final ManagedMap<String, String> renamingMap = new ManagedMap<>();
                 for (final Element column : columns) {
+                    assert column != null;
                     final String columnName = AttributeSupport.getAttributeValue(column, null, "columnName");
                     final String attributeId = AttributeSupport.getAttributeValue(column, null, "attributeID");
                     if (columnName != null && attributeId != null) {
diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/storage/impl/StorageServiceDataConnectorParser.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/storage/impl/StorageServiceDataConnectorParser.java
index 9f0524927..8cbe50840 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/storage/impl/StorageServiceDataConnectorParser.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/storage/impl/StorageServiceDataConnectorParser.java
@@ -226,9 +226,10 @@ public class StorageServiceDataConnectorParser extends AbstractDataConnectorPars
                 // No element means to fall back to simple record mapping.
                 return null;
             }
-            
+            final Element mapping = mappings.get(0);
+            assert mapping != null;
             final BeanDefinitionBuilder mapper =
-                    ScriptTypeBeanParser.parseScriptType(ScriptedStorageMappingStrategy.class, mappings.get(0));
+                    ScriptTypeBeanParser.parseScriptType(ScriptedStorageMappingStrategy.class, mapping);
             if (id != null) {
                 mapper.addPropertyValue("logPrefix", id + ':');
             }
diff --git a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/AttributeMapperTest.java b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/AttributeMapperTest.java
index 25bd7f907..ca9dbf10f 100644
--- a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/AttributeMapperTest.java
+++ b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/AttributeMapperTest.java
@@ -86,6 +86,7 @@ public class AttributeMapperTest extends OpenSAMLInitBaseTestCase {
         beanDefinitionReader.loadBeanDefinitions("net/shibboleth/idp/attribute/resolver/spring/mapperTest.xml");
         context.refresh();
 
+        @SuppressWarnings("unchecked")
         final ReloadableService<AttributeTranscoderRegistry> transcoderRegistry = context.getBean(ReloadableService.class);
 
         try (final ServiceableComponent<AttributeTranscoderRegistry> serviceableComponent = transcoderRegistry.getServiceableComponent()){
diff --git a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/AttributeMappingNodeProcessorTest.java b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/AttributeMappingNodeProcessorTest.java
index cf3ce9fa7..a420abe3a 100644
--- a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/AttributeMappingNodeProcessorTest.java
+++ b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/AttributeMappingNodeProcessorTest.java
@@ -82,6 +82,7 @@ public class AttributeMappingNodeProcessorTest extends XMLObjectBaseTestCase {
         processor = new AttributeMappingNodeProcessor(service);
     }
 
+    @SuppressWarnings("unchecked")
     @Nonnull private ReloadableService<AttributeTranscoderRegistry> getService() {
         final GenericApplicationContext context = new GenericApplicationContext();
         setTestContext(context);
@@ -106,16 +107,15 @@ public class AttributeMappingNodeProcessorTest extends XMLObjectBaseTestCase {
 
     // Tests use of default mapping behavior for URI-named, string-valued tags.
     @Test public void entityAttributes() throws FilterException {
-        assert entityDescriptor != null;
-        assertTrue(entityDescriptor.getObjectMetadata().get(AttributesMapContainer.class).isEmpty());
+        final EntityDescriptor localEntityDescriptor = entityDescriptor; 
+        assert localEntityDescriptor != null;
+        assertTrue(localEntityDescriptor.getObjectMetadata().get(AttributesMapContainer.class).isEmpty());
 
         assert processor != null;
-        assert entityDescriptor != null;
-        processor.process(entityDescriptor);
+        processor.process(localEntityDescriptor);
 
-        assert entityDescriptor != null;
         final AttributesMapContainer container =
-                entityDescriptor.getObjectMetadata().get(AttributesMapContainer.class).get(0);
+                localEntityDescriptor.getObjectMetadata().get(AttributesMapContainer.class).get(0);
 
         final Multimap<String, IdPAttribute> map = container.get();
         assert map != null;
diff --git a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/AttributeResolverTest.java b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/AttributeResolverTest.java
index 3f164a7bd..cc4e43954 100644
--- a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/AttributeResolverTest.java
+++ b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/AttributeResolverTest.java
@@ -25,7 +25,6 @@ import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.function.Function;
 import java.util.function.Predicate;
 
@@ -154,8 +153,9 @@ public class AttributeResolverTest extends OpenSAMLInitBaseTestCase {
 
         beanDefinitionReader.loadBeanDefinitions(file);
         context.refresh();
-
-        return context.getBean(ReloadableService.class);
+        @SuppressWarnings("unchecked")
+        final ReloadableService<AttributeResolver> result =  context.getBean(ReloadableService.class);
+        return result;
     }
     
     @Test public void service() throws ComponentInitializationException, ServiceException, ResolutionException {
diff --git a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/IdP1676Test.java b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/IdP1676Test.java
index be86ebc21..79f23e4fc 100644
--- a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/IdP1676Test.java
+++ b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/IdP1676Test.java
@@ -133,6 +133,7 @@ public class IdP1676Test extends OpenSAMLInitBaseTestCase {
         beanDefinitionReader.loadBeanDefinitions("net/shibboleth/idp/attribute/resolver/spring/idp-1676-service.xml");
         context.refresh();
 
+        @SuppressWarnings("unchecked")
         final ReloadableService<AttributeResolver> result =  context.getBean(ReloadableService.class);
         result.initialize();
         return result;
diff --git a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SimpleAttributeParserTest.java b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SimpleAttributeParserTest.java
index 3595a8e45..855968824 100644
--- a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SimpleAttributeParserTest.java
+++ b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SimpleAttributeParserTest.java
@@ -59,6 +59,7 @@ public class SimpleAttributeParserTest extends BaseAttributeDefinitionParserTest
         assertFalse(attrDef.isPreRequested());
         assertEquals(attrDef.getAttributeDependencies().size(), 1);
         
+        @SuppressWarnings("rawtypes")
         final Map<String, Collection> beans = pendingTeardownContext.getBeansOfType(Collection.class);
         assertTrue(beans.isEmpty() || (beans.size() == 1  && beans.containsKey("StaticConnectorValues")));
     }
diff --git a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/http/impl/HTTPDataConnectorParserTest.java b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/http/impl/HTTPDataConnectorParserTest.java
index 2773beb7e..d3eedd01a 100644
--- a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/http/impl/HTTPDataConnectorParserTest.java
+++ b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/http/impl/HTTPDataConnectorParserTest.java
@@ -25,10 +25,11 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Map;
 import java.util.stream.Collectors;
 
+import javax.annotation.Nonnull;
+
 import org.springframework.context.support.GenericApplicationContext;
 import org.springframework.core.env.PropertySource;
 import org.springframework.core.io.ResourceLoader;
@@ -44,6 +45,7 @@ import net.shibboleth.idp.attribute.resolver.ResolutionException;
 import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
 import net.shibboleth.idp.attribute.resolver.dc.http.impl.HTTPDataConnector;
 import net.shibboleth.idp.attribute.resolver.testing.TestSources;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.spring.resource.PreferFileSystemResourceLoader;
 import net.shibboleth.shared.spring.util.ApplicationContextBuilder;
 import net.shibboleth.shared.testing.RepositorySupport;
@@ -52,7 +54,7 @@ import net.shibboleth.shared.testing.RepositorySupport;
 @SuppressWarnings("javadoc")
 public class HTTPDataConnectorParserTest {
 
-    private static final String TEST_URL =
+    @Nonnull private static final String TEST_URL =
             RepositorySupport.buildHTTPSResourceURL("java-shib-attribute",
                     "shib-attribute-resolver-impl/src/test/resources/net/shibboleth/idp/attribute/resolver/impl/dc/http/test.json");
 
@@ -364,10 +366,13 @@ public class HTTPDataConnectorParserTest {
         final Collection<String> defs = new ArrayList<>(Arrays.asList(beanDefinitions));
         defs.add("net/shibboleth/idp/attribute/resolver/spring/dc/http/spring-beans.xml");
 
-        builder.setServiceConfigurations(defs.stream().map(s -> loader.getResource(s)).collect(Collectors.toList()));
-
+        builder.setServiceConfigurations(defs.
+                                         stream().
+                                         map(s -> {assert s != null; return loader.getResource(s);}).
+                                         collect(CollectionSupport.nonnullCollector(Collectors.toList())).
+                                         get());
         if (propSource != null) {
-            builder.setPropertySources(Collections.singletonList(propSource));
+            builder.setPropertySources(CollectionSupport.singletonList(propSource));
         }
         
         final GenericApplicationContext context = builder.build();
@@ -377,7 +382,7 @@ public class HTTPDataConnectorParserTest {
         return (HTTPDataConnector) context.getBean("myHTTP");
     }
 
-    private MockPropertySource singletonPropertySource(final String name, final String value) {
+    private MockPropertySource singletonPropertySource(@Nonnull final String name, @Nonnull final String value) {
         final MockPropertySource propSource = new MockPropertySource("localProperties");
         propSource.setProperty(name, value);
         return propSource;
diff --git a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/CacheConfigParserTest.java b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/CacheConfigParserTest.java
index 3642f812c..26fc3da1c 100644
--- a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/CacheConfigParserTest.java
+++ b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/CacheConfigParserTest.java
@@ -30,6 +30,7 @@ import org.springframework.core.io.ClassPathResource;
 import org.springframework.core.io.Resource;
 import org.testng.annotations.Test;
 import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 
 import com.google.common.cache.Cache;
 
@@ -46,7 +47,9 @@ public class CacheConfigParserTest extends OpenSAMLInitBaseTestCase {
         assert parserPool != null;
         final Resource resource= new ClassPathResource("net/shibboleth/idp/attribute/resolver/spring/dc/ResultCacheElementTimeToLive.xml");
         final Document doc = parserPool.parse(resource.getInputStream());
-        final CacheConfigParser ccp = new CacheConfigParser(doc.getDocumentElement());
+        final Element elem = doc.getDocumentElement();
+        assert elem != null;
+        final CacheConfigParser ccp = new CacheConfigParser(elem);
         
         try (final GenericApplicationContext context = new GenericApplicationContext()) {
             final BeanDefinition cacheBean = ccp.createCache();
@@ -62,7 +65,9 @@ public class CacheConfigParserTest extends OpenSAMLInitBaseTestCase {
         assert parserPool != null;
         final Resource resource= new ClassPathResource("net/shibboleth/idp/attribute/resolver/spring/dc/ResultCacheExpireAfterAccess.xml");
         final Document doc = parserPool.parse(resource.getInputStream());
-            final CacheConfigParser ccp = new CacheConfigParser(doc.getDocumentElement());
+            final Element elem = doc.getDocumentElement();
+            assert elem != null;
+            final CacheConfigParser ccp = new CacheConfigParser(elem);
         
         try (final GenericApplicationContext context = new GenericApplicationContext()) {
             final BeanDefinition cacheBean = ccp.createCache();
@@ -78,7 +83,9 @@ public class CacheConfigParserTest extends OpenSAMLInitBaseTestCase {
         assert parserPool != null;
         final Resource resource= new ClassPathResource("net/shibboleth/idp/attribute/resolver/spring/dc/ResultCacheExpireAfterWrite.xml");
         final Document doc = parserPool.parse(resource.getInputStream());
-            final CacheConfigParser ccp = new CacheConfigParser(doc.getDocumentElement());
+        final Element elem = doc.getDocumentElement();
+        assert elem != null;
+        final CacheConfigParser ccp = new CacheConfigParser(elem);
         
         try (final GenericApplicationContext context = new GenericApplicationContext()) {
             final BeanDefinition cacheBean = ccp.createCache();
@@ -94,7 +101,9 @@ public class CacheConfigParserTest extends OpenSAMLInitBaseTestCase {
         assert parserPool != null;
         final Resource resource= new ClassPathResource("net/shibboleth/idp/attribute/resolver/spring/dc/ResultCacheExpireBoth.xml");
         final Document doc = parserPool.parse(resource.getInputStream());
-            final CacheConfigParser ccp = new CacheConfigParser(doc.getDocumentElement());
+        final Element elem = doc.getDocumentElement();
+        assert elem != null;
+        final CacheConfigParser ccp = new CacheConfigParser(elem);
         
         try (final GenericApplicationContext context = new GenericApplicationContext()) {
             final BeanDefinition cacheBean = ccp.createCache();
diff --git a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/StoredIdDataConnectorParserTest.java b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/StoredIdDataConnectorParserTest.java
index ba82de55c..1b5596060 100644
--- a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/StoredIdDataConnectorParserTest.java
+++ b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/StoredIdDataConnectorParserTest.java
@@ -82,8 +82,8 @@ public class StoredIdDataConnectorParserTest extends BaseAttributeDefinitionPars
         builder.setServiceConfigurations(
                 Arrays.asList(beanDefinitions).
                 stream().
-                map(s -> loader.getResource(s)).
-                collect(Collectors.toList()));
+                map(s -> {assert s != null; return loader.getResource(s);}).
+                collect(CollectionSupport.nonnullCollector(Collectors.toList())).get());
         
         final GenericApplicationContext context = builder.build();
 
diff --git a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParserTest.java b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParserTest.java
index 93e850dba..6123418ef 100644
--- a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParserTest.java
+++ b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParserTest.java
@@ -28,13 +28,10 @@ import java.time.Duration;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Collectors;
 
-import javax.annotation.Nullable;
-
 import org.ldaptive.BindConnectionInitializer;
 import org.ldaptive.BindResponse;
 import org.ldaptive.ConnectionConfig;
@@ -77,6 +74,8 @@ import net.shibboleth.idp.attribute.resolver.dc.ldap.StringAttributeValueMapping
 import net.shibboleth.idp.attribute.resolver.dc.ldap.impl.ConnectionFactoryValidator;
 import net.shibboleth.idp.attribute.resolver.dc.ldap.impl.LDAPDataConnector;
 import net.shibboleth.idp.attribute.resolver.testing.TestSources;
+import net.shibboleth.shared.annotation.constraint.NonnullBeforeTest;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext;
 import net.shibboleth.shared.spring.resource.PreferFileSystemResourceLoader;
 import net.shibboleth.shared.spring.util.ApplicationContextBuilder;
@@ -88,9 +87,9 @@ import net.shibboleth.shared.testing.InMemoryDirectory;
 public class LDAPDataConnectorParserTest {
 
     /** In-memory directory server. */
-    @Nullable private InMemoryDirectory directoryServer;
+    @NonnullBeforeTest private InMemoryDirectory directoryServer;
     
-    @Nullable private GenericApplicationContext pendingTeardownContext = null;
+    @NonnullBeforeTest private GenericApplicationContext pendingTeardownContext = null;
 
     /** Override the default SASL client for testing. */
     public static class TestSaslClient implements SaslClient<DefaultSaslClientRequest>
@@ -118,13 +117,14 @@ public class LDAPDataConnectorParserTest {
      * Creates an in-memory directory server. Leverages LDIF found in test resources.
      */
     @BeforeClass public void setupDirectoryServer() {
+        final Optional<Resource> or =  Optional.of(new ClassPathResource("/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/client.keystore"));
+        assert or != null;
         directoryServer =
             new InMemoryDirectory(
                 new String[] {"dc=shibboleth,dc=net"},
                 new ClassPathResource("/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/ldapDataConnectorTest.ldif"),
                 10389,
-                new ClassPathResource("/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/server.keystore"),
-                Optional.of(new ClassPathResource("/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/client.keystore")));
+                new ClassPathResource("/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/server.keystore"), or);
         directoryServer.start();
         System.setProperty(
                 "org.ldaptive.sasl.defaultSaslClient",
@@ -493,10 +493,15 @@ public class LDAPDataConnectorParserTest {
         final Collection<String> defs = new ArrayList<>(Arrays.asList(beanDefinitions));
         defs.add("net/shibboleth/idp/attribute/resolver/spring/externalBeans.xml");
 
-        builder.setServiceConfigurations(defs.stream().map(s -> loader.getResource(s)).collect(Collectors.toList()));
+        builder.setServiceConfigurations(
+                defs.
+                stream().
+                map(s -> {assert s != null; return loader.getResource(s);}).
+                collect(CollectionSupport.nonnullCollector(Collectors.toList())).
+                get());
 
         if (properties != null) {
-            builder.setPropertySources(Collections.singletonList(new ResourcePropertySource(properties)));
+            builder.setPropertySources(CollectionSupport.singletonList(new ResourcePropertySource(properties)));
         }
         
         final GenericApplicationContext context = builder.build();
diff --git a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/impl/RDBMSDataConnectorParserTest.java b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/impl/RDBMSDataConnectorParserTest.java
index 10db8c591..ec397e7e3 100644
--- a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/impl/RDBMSDataConnectorParserTest.java
+++ b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/impl/RDBMSDataConnectorParserTest.java
@@ -155,7 +155,12 @@ public class RDBMSDataConnectorParserTest {
         final Collection<String> defs = new ArrayList<>(Arrays.asList(beanDefinitions));
         defs.add("net/shibboleth/idp/attribute/resolver/spring/externalBeans.xml");
 
-        builder.setServiceConfigurations(defs.stream().map(s -> loader.getResource(s)).collect(Collectors.toList()));
+        builder.setServiceConfigurations(
+                defs.
+                stream().
+                map(s -> {assert s != null; return loader.getResource(s);}).
+                collect(CollectionSupport.nonnullCollector(Collectors.toList())).
+                get());
 
         if (properties != null) {
             builder.setPropertySources(CollectionSupport.singletonList(new ResourcePropertySource(properties)));
diff --git a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/storage/impl/StorageServiceDataConnectorParserTest.java b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/storage/impl/StorageServiceDataConnectorParserTest.java
index af2b9daf2..79c580138 100644
--- a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/storage/impl/StorageServiceDataConnectorParserTest.java
+++ b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/storage/impl/StorageServiceDataConnectorParserTest.java
@@ -17,16 +17,19 @@
 
 package net.shibboleth.idp.attribute.resolver.spring.dc.storage.impl;
 
-import static org.testng.Assert.*;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertTrue;
 
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Map;
 import java.util.stream.Collectors;
 
+import javax.annotation.Nonnull;
+
 import org.opensaml.storage.StorageService;
 import org.springframework.context.support.GenericApplicationContext;
 import org.springframework.core.env.PropertySource;
@@ -44,6 +47,7 @@ import net.shibboleth.idp.attribute.resolver.NoResultAnErrorResolutionException;
 import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
 import net.shibboleth.idp.attribute.resolver.dc.storage.impl.StorageServiceDataConnector;
 import net.shibboleth.idp.attribute.resolver.testing.TestSources;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.spring.resource.PreferFileSystemResourceLoader;
 import net.shibboleth.shared.spring.util.ApplicationContextBuilder;
 
@@ -104,9 +108,9 @@ public class StorageServiceDataConnectorParserTest {
                 getDataConnector(propSource,
                         "net/shibboleth/idp/attribute/resolver/spring/dc/storage/storage-attribute-resolver-v2.xml");
         assertNotNull(connector);
-
-        pendingTeardownContext.getBean(StorageService.class).create("foo", "bar",
-                Files.streamToString(getClass().getResourceAsStream(SCRIPT_PATH + "test.json")), null);
+        final String streamAsString = Files.streamToString(getClass().getResourceAsStream(SCRIPT_PATH + "test.json"));
+        assert streamAsString!=null;
+        pendingTeardownContext.getBean(StorageService.class).create("foo", "bar", streamAsString, null);
 
         final AttributeResolutionContext context =
                 TestSources.createResolutionContext(TestSources.PRINCIPAL_ID, TestSources.IDP_ENTITY_ID,
@@ -180,8 +184,9 @@ public class StorageServiceDataConnectorParserTest {
                         "net/shibboleth/idp/attribute/resolver/spring/dc/storage/storage-attribute-resolver-spring-context.xml");
         assertNotNull(connector);
 
-        pendingTeardownContext.getBean(StorageService.class).create("foo", "bar",
-                Files.streamToString(getClass().getResourceAsStream(SCRIPT_PATH + "test.json")), null);
+        final String streamAsString = Files.streamToString(getClass().getResourceAsStream(SCRIPT_PATH + "test.json"));
+        assert streamAsString!=null;
+        pendingTeardownContext.getBean(StorageService.class).create("foo", "bar", streamAsString, null);
 
         final AttributeResolutionContext context =
                 TestSources.createResolutionContext(TestSources.PRINCIPAL_ID, TestSources.IDP_ENTITY_ID,
@@ -215,10 +220,14 @@ public class StorageServiceDataConnectorParserTest {
         final Collection<String> defs = new ArrayList<>(Arrays.asList(beanDefinitions));
         defs.add("net/shibboleth/idp/attribute/resolver/spring/dc/storage/spring-beans.xml");
 
-        builder.setServiceConfigurations(defs.stream().map(s -> loader.getResource(s)).collect(Collectors.toList()));
-
+        builder.setServiceConfigurations(
+                defs.
+                stream().
+                map(s -> { assert s != null ; return loader.getResource(s);}).
+                collect(CollectionSupport.nonnullCollector(Collectors.toList())).
+                get());
         if (propSource != null) {
-            builder.setPropertySources(Collections.singletonList(propSource));
+            builder.setPropertySources(CollectionSupport.singletonList(propSource));
         }
         
         final GenericApplicationContext context = builder.build();
@@ -228,7 +237,7 @@ public class StorageServiceDataConnectorParserTest {
         return (StorageServiceDataConnector) context.getBean("myStorage");
     }
 
-    private MockPropertySource singletonPropertySource(final String name, final String value) {
+    private MockPropertySource singletonPropertySource(@Nonnull final String name, @Nonnull final String value) {
         final MockPropertySource propSource = new MockPropertySource("localProperties");
         propSource.setProperty(name, value);
         return propSource;
diff --git a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/failfast/AttributeResolverFailFastTest.java b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/failfast/AttributeResolverFailFastTest.java
index 4962390c3..4eb551ebb 100644
--- a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/failfast/AttributeResolverFailFastTest.java
+++ b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/failfast/AttributeResolverFailFastTest.java
@@ -17,16 +17,19 @@
 
 package net.shibboleth.idp.attribute.resolver.spring.failfast;
 
-import static org.testng.Assert.*;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.fail;
 
 import java.io.IOException;
 import java.util.Optional;
 
 import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
 import javax.sql.DataSource;
 
 import org.springframework.core.io.ClassPathResource;
+import org.springframework.core.io.Resource;
 import org.springframework.mock.env.MockPropertySource;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
@@ -35,13 +38,14 @@ import org.testng.annotations.Test;
 
 import net.shibboleth.idp.attribute.resolver.AttributeResolver;
 import net.shibboleth.idp.attribute.resolver.spring.dc.rdbms.impl.RDBMSDataConnectorParserTest;
+import net.shibboleth.shared.annotation.constraint.NonnullBeforeTest;
 import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.service.ReloadableService;
 import net.shibboleth.shared.service.ServiceException;
 import net.shibboleth.shared.service.ServiceableComponent;
 import net.shibboleth.shared.testing.DatabaseTestingSupport;
-import net.shibboleth.spring.testing.AbstractFailFastTest;
 import net.shibboleth.shared.testing.InMemoryDirectory;
+import net.shibboleth.spring.testing.AbstractFailFastTest;
 
 @Ignore
 @SuppressWarnings({"unchecked", "javadoc"})
@@ -51,20 +55,22 @@ public class AttributeResolverFailFastTest extends AbstractFailFastTest {
         return "/net/shibboleth/idp/attribute/resolver/failfast/";
     }
     
-    @Nullable private InMemoryDirectory directoryServer;
-    @Nullable private DataSource datasource;
+    @NonnullBeforeTest private InMemoryDirectory directoryServer;
+    @NonnullBeforeTest private DataSource datasource;
 
     @BeforeClass(enabled = false) public void setupDirectoryServer() {
         //
         // LDAP
         //
+        final Optional<Resource> or =  Optional.of(new ClassPathResource("/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/client.keystore"));
+        assert or != null;
         directoryServer =
             new InMemoryDirectory(
                 new String[] {"dc=shibboleth,dc=net"},
                 new ClassPathResource("/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/ldapDataConnectorTest.ldif"),
                 20389,
                 new ClassPathResource("/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/server.keystore"),
-                Optional.of(new ClassPathResource("/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/client.keystore")));
+                or);
         directoryServer.start();
 
         //
diff --git a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/testing/BaseAttributeDefinitionParserTest.java b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/testing/BaseAttributeDefinitionParserTest.java
index 4fbaa4c44..6eb4a449d 100644
--- a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/testing/BaseAttributeDefinitionParserTest.java
+++ b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/testing/BaseAttributeDefinitionParserTest.java
@@ -23,6 +23,8 @@ import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashSet;
 
+import javax.annotation.Nonnull;
+
 import org.opensaml.core.testing.OpenSAMLInitBaseTestCase;
 import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
 import org.springframework.context.ApplicationContext;
@@ -31,21 +33,17 @@ import org.springframework.context.support.GenericApplicationContext;
 import org.testng.annotations.AfterMethod;
 
 import net.shibboleth.idp.attribute.resolver.AttributeDefinition;
-import net.shibboleth.idp.attribute.resolver.AttributeResolver;
 import net.shibboleth.idp.attribute.resolver.DataConnector;
 import net.shibboleth.idp.attribute.resolver.impl.AttributeResolverImpl;
 import net.shibboleth.idp.attribute.resolver.spring.ad.BaseAttributeDefinitionParser;
 import net.shibboleth.idp.attribute.resolver.spring.ad.impl.SimpleAttributeDefinitionParser;
-import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverServiceStrategy;
 import net.shibboleth.shared.component.ComponentInitializationException;
-import net.shibboleth.shared.service.ServiceException;
 import net.shibboleth.shared.spring.config.IdentifiableBeanPostProcessor;
 import net.shibboleth.shared.spring.config.StringToDurationConverter;
 import net.shibboleth.shared.spring.config.StringToIPRangeConverter;
 import net.shibboleth.shared.spring.config.StringToResourceConverter;
 import net.shibboleth.shared.spring.context.FilesystemGenericApplicationContext;
 import net.shibboleth.shared.spring.custom.SchemaTypeAwareXMLBeanDefinitionReader;
-import net.shibboleth.shared.spring.service.impl.SpringServiceableComponent;
 
 /**
  * Base class for tests for {@link SimpleAttributeDefinitionParser} and by extension {@link BaseAttributeDefinitionParser}.
@@ -192,13 +190,13 @@ public abstract class BaseAttributeDefinitionParserTest extends OpenSAMLInitBase
         return getBean(DATACONNECTOR_FILE_PATH + fileName, claz, context, supressValid);
     }
 
-    static public AttributeResolverImpl getResolver(final ApplicationContext appContext) throws ComponentInitializationException {
+    static public AttributeResolverImpl getResolver(@Nonnull final ApplicationContext appContext) throws ComponentInitializationException {
 
         final Collection<AttributeDefinition> definitions =
                 appContext.getBeansOfType(AttributeDefinition.class).values();
 
         final Collection<DataConnector> connectors = appContext.getBeansOfType(DataConnector.class).values();
-
+        assert definitions!=null && connectors!=null;
         final AttributeResolverImpl resolver = new AttributeResolverImpl();
         resolver.setAttributeDefinitions(definitions);
         resolver.setDataConnectors(connectors);

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


More information about the commits mailing list