[java-opensaml] branch main updated: Add missing init guards to metadata filters and fix tests.

Scott Cantor cantor.2 at osu.edu
Tue May 23 16:50:46 UTC 2023


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

scantor pushed a commit to branch main
in repository java-opensaml.

View the commit online:
http://git.shibboleth.net/view/?p=java-opensaml.git;a=commit;h=5b7e0f1927f8a0f8ba784f765dcd678e121030ad

The following commit(s) were added to refs/heads/main by this push:
     new 5b7e0f192 Add missing init guards to metadata filters and fix tests.
5b7e0f192 is described below

commit 5b7e0f1927f8a0f8ba784f765dcd678e121030ad
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Tue May 23 12:50:43 2023 -0400

    Add missing init guards to metadata filters and fix tests.
---
 .../resolver/filter/impl/AlgorithmFilter.java      |   2 +
 .../filter/impl/ByReferenceMetadataFilter.java     |   2 +
 .../filter/impl/EntityAttributesFilter.java        |   1 +
 .../resolver/filter/impl/EntityRoleFilter.java     |  14 +-
 .../resolver/filter/impl/PredicateFilter.java      |   2 +
 .../filter/impl/RequiredValidUntilFilter.java      |   4 +
 .../filter/impl/SchemaValidationFilter.java        |   2 +
 .../filter/impl/SignatureValidationFilter.java     |   7 +
 .../resolver/filter/impl/AlgorithmFilterTest.java  |   1 -
 .../filter/impl/ByReferenceMetadataFilterTest.java |   5 +-
 .../filter/impl/EntityAttributesFilterTest.java    |   2 +-
 .../resolver/filter/impl/EntityRoleFilterTest.java |  22 ++-
 .../filter/impl/NameIDFormatFilterTest.java        |   6 +-
 .../resolver/filter/impl/PredicateFilterTest.java  |  21 ++-
 .../filter/impl/RequiredValidUntilTest.java        |   8 +-
 .../filter/impl/SchemaValidationFilterTest.java    |  16 +-
 .../SignatureValidationFilterExplicitKeyTest.java  | 163 +++++++++++----------
 .../impl/SignatureValidationFilterPKIXTest.java    |  28 ++--
 .../impl/AbstractDynamicMetadataResolverTest.java  |   5 +-
 19 files changed, 181 insertions(+), 130 deletions(-)

diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/AlgorithmFilter.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/AlgorithmFilter.java
index c75988da6..f2daefdd2 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/AlgorithmFilter.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/AlgorithmFilter.java
@@ -135,6 +135,8 @@ public class AlgorithmFilter extends AbstractMetadataFilter {
     /** {@inheritDoc} */
     @Nullable public XMLObject filter(@Nullable final XMLObject metadata, @Nonnull final MetadataFilterContext context)
             throws FilterException {
+        checkComponentActive();
+        
         if (metadata == null) {
             return null;
         }
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/ByReferenceMetadataFilter.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/ByReferenceMetadataFilter.java
index 72fcfe25c..e8db17c75 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/ByReferenceMetadataFilter.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/ByReferenceMetadataFilter.java
@@ -66,6 +66,7 @@ public class ByReferenceMetadataFilter extends AbstractMetadataFilter {
      * @param map filter mappings
      */
     public void setFilterMappings(@Nonnull @NonnullElements final Map<Object,MetadataFilter> map) {
+        checkSetterPreconditions();
         Constraint.isNotNull(map, "Filter mappings cannot be null");
         
         filterMap = new HashMap<>(map.size());
@@ -91,6 +92,7 @@ public class ByReferenceMetadataFilter extends AbstractMetadataFilter {
     /** {@inheritDoc} */
     @Nullable public XMLObject filter(@Nullable final XMLObject metadata, @Nonnull final MetadataFilterContext context)
             throws FilterException {
+        checkComponentActive();
         
         final MetadataSource source = context.get(MetadataSource.class);
         if (source == null || source.getSourceId() == null) {
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/EntityAttributesFilter.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/EntityAttributesFilter.java
index 40c268ebb..79b24cef6 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/EntityAttributesFilter.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/EntityAttributesFilter.java
@@ -125,6 +125,7 @@ public class EntityAttributesFilter extends AbstractMetadataFilter {
     /** {@inheritDoc} */
     @Nullable public XMLObject filter(@Nullable final XMLObject metadata, @Nonnull final MetadataFilterContext context)
             throws FilterException {
+        checkComponentActive();
         if (metadata == null) {
             return null;
         }
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/EntityRoleFilter.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/EntityRoleFilter.java
index 7bad3c25e..294c73b27 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/EntityRoleFilter.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/EntityRoleFilter.java
@@ -90,17 +90,6 @@ public class EntityRoleFilter extends AbstractMetadataFilter {
         extRoleDescriptor = new QName(SAMLConstants.SAML20MD_NS, "RoleDescriptor");
     }
 
-    /**
-     * Get the unmodifiable list of roles that are NOT removed by this filter.
-     * 
-     * @return unmodifiable list of roles that are NOT removed by this filter
-     * @deprecated
-     */
-    @Deprecated(forRemoval=true, since="4.1.0")
-    @Nonnull @NonnullElements @Unmodifiable @NotLive public List<QName> getRoleWhiteList() {
-        return getRetainedRoles();
-    }
-
     /**
      * Get the unmodifiable list of roles that are NOT removed by this filter.
      * 
@@ -125,6 +114,7 @@ public class EntityRoleFilter extends AbstractMetadataFilter {
      * @param remove whether to remove an entity descriptor if it does not contain any roles after filtering
      */
     public void setRemoveRolelessEntityDescriptors(final boolean remove) {
+        checkSetterPreconditions();
         removeRolelessEntityDescriptors = remove;
     }
 
@@ -147,12 +137,14 @@ public class EntityRoleFilter extends AbstractMetadataFilter {
      *            descriptors
      */
     public void setRemoveEmptyEntitiesDescriptors(final boolean remove) {
+        checkSetterPreconditions();
         removeEmptyEntitiesDescriptors = remove;
     }
 
     /** {@inheritDoc} */
     @Nullable public XMLObject filter(@Nullable final XMLObject metadata, @Nonnull final MetadataFilterContext context)
             throws FilterException {
+        checkComponentActive();
         if (metadata == null) {
             return null;
         }
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/PredicateFilter.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/PredicateFilter.java
index 659c924d7..3ce6f8ed6 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/PredicateFilter.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/PredicateFilter.java
@@ -118,12 +118,14 @@ public class PredicateFilter extends AbstractMetadataFilter {
      *            descriptors
      */
     public void setRemoveEmptyEntitiesDescriptors(final boolean remove) {
+        checkSetterPreconditions();
         removeEmptyEntitiesDescriptors = remove;
     }
 
     /** {@inheritDoc} */
     @Nullable public XMLObject filter(@Nullable final XMLObject metadata, @Nonnull final MetadataFilterContext context)
             throws FilterException {
+        checkComponentActive();
         
         if (metadata == null) {
             return null;
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/RequiredValidUntilFilter.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/RequiredValidUntilFilter.java
index 4e5428795..221fa3fd9 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/RequiredValidUntilFilter.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/RequiredValidUntilFilter.java
@@ -71,6 +71,8 @@ public class RequiredValidUntilFilter extends AbstractMetadataFilter {
      * @param validity time between now and the <code>validUntil</code> date
      */
     public void setMaxValidityInterval(@Nullable final Duration validity) {
+        checkSetterPreconditions();
+        
         if (validity != null && !validity.isNegative() && !validity.isZero()) {
             maxValidityInterval = validity;
         } else {
@@ -81,6 +83,8 @@ public class RequiredValidUntilFilter extends AbstractMetadataFilter {
     /** {@inheritDoc} */
     @Nullable public XMLObject filter(@Nullable final XMLObject metadata, @Nonnull final MetadataFilterContext context)
             throws FilterException {
+        checkComponentActive();
+        
         if (metadata == null) {
             return null;
         }
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/SchemaValidationFilter.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/SchemaValidationFilter.java
index f0647e031..01a817b84 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/SchemaValidationFilter.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/SchemaValidationFilter.java
@@ -57,6 +57,8 @@ public class SchemaValidationFilter extends AbstractMetadataFilter {
     /** {@inheritDoc} */
     @Nullable public XMLObject filter(@Nullable final XMLObject metadata, @Nonnull final MetadataFilterContext context)
             throws FilterException {
+        checkComponentActive();
+        
         if (metadata == null) {
             return null;
         }
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/SignatureValidationFilter.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/SignatureValidationFilter.java
index 1f8b0795f..675a51909 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/SignatureValidationFilter.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/SignatureValidationFilter.java
@@ -116,6 +116,7 @@ public class SignatureValidationFilter extends AbstractMetadataFilter {
      * @param flag true if root signature should always be verified, false if should be dynamically determined
      */
     public void setAlwaysVerifyTrustedSource(final boolean flag) {
+        checkSetterPreconditions();
         alwaysVerifyTrustedSource = flag;
     }
 
@@ -138,6 +139,7 @@ public class SignatureValidationFilter extends AbstractMetadataFilter {
      * @param strategy the function, may be null
      */
     public void setDynamicTrustedNamesStrategy(@Nullable final Function<XMLObject, Set<String>> strategy) {
+        checkSetterPreconditions();
         dynamicTrustedNamesStrategy = strategy;
     }
 
@@ -169,6 +171,7 @@ public class SignatureValidationFilter extends AbstractMetadataFilter {
      * @param validator the signature prevalidator to use
      */
     public void setSignaturePrevalidator(@Nullable final SignaturePrevalidator validator) {
+        checkSetterPreconditions();
         signaturePrevalidator = validator;
     }
 
@@ -191,6 +194,7 @@ public class SignatureValidationFilter extends AbstractMetadataFilter {
      * @param require whether incoming metadata is required to be signed
      */
     public void setRequireSignedRoot(final boolean require) {
+        checkSetterPreconditions();
         requireSignedRoot = require;
     }
      
@@ -209,12 +213,15 @@ public class SignatureValidationFilter extends AbstractMetadataFilter {
      * @param newCriteria the new criteria set to use
      */
     public void setDefaultCriteria(@Nullable final CriteriaSet newCriteria) {
+        checkSetterPreconditions();
         defaultCriteria = newCriteria;
     }
 
     /** {@inheritDoc} */
     @Nullable public XMLObject filter(@Nullable final XMLObject metadata, @Nonnull final MetadataFilterContext context)
             throws FilterException {
+        checkComponentActive();
+        
         if (metadata == null) {
             return null;
         }
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/AlgorithmFilterTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/AlgorithmFilterTest.java
index 0f90c2a69..7434ca7a8 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/AlgorithmFilterTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/AlgorithmFilterTest.java
@@ -58,7 +58,6 @@ public class AlgorithmFilterTest extends XMLObjectBaseTestCase implements Predic
     
     @BeforeMethod
     protected void setUp() throws Exception {
-
         URL mdURL = FilesystemMetadataResolverTest.class
                 .getResource("/org/opensaml/saml/metadata/resolver/filter/impl/EntityDescriptorWithAlgorithms.xml");
         mdFile = new File(mdURL.toURI());
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/ByReferenceMetadataFilterTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/ByReferenceMetadataFilterTest.java
index 8f1dc26a5..62b006720 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/ByReferenceMetadataFilterTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/ByReferenceMetadataFilterTest.java
@@ -80,6 +80,7 @@ public class ByReferenceMetadataFilterTest extends XMLObjectBaseTestCase impleme
         nameIDFilter.initialize();
         
         refFilter.setFilterMappings(CollectionSupport.singletonMap("Foo", nameIDFilter));
+        refFilter.initialize();
         
         metadataProvider.initialize();
         
@@ -93,6 +94,7 @@ public class ByReferenceMetadataFilterTest extends XMLObjectBaseTestCase impleme
         nameIDFilter.initialize();
         
         refFilter.setFilterMappings(CollectionSupport.singletonMap(CollectionSupport.listOf("ICMD", "Foo"), nameIDFilter));
+        refFilter.initialize();
         
         metadataProvider.initialize();
         
@@ -126,4 +128,5 @@ public class ByReferenceMetadataFilterTest extends XMLObjectBaseTestCase impleme
     public boolean test(EntityDescriptor input) {
         return "https://carmenwiki.osu.edu/shibboleth".equals(input.getEntityID());
     }
-}
+
+}
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/EntityAttributesFilterTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/EntityAttributesFilterTest.java
index 1177d9cbc..4f1e50772 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/EntityAttributesFilterTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/EntityAttributesFilterTest.java
@@ -66,7 +66,7 @@ public class EntityAttributesFilterTest extends XMLObjectBaseTestCase implements
         valueBuilder = XMLObjectProviderRegistrySupport.getBuilderFactory().<XSString>ensureBuilder(
                 XSString.TYPE_NAME);
 
-        URL mdURL = FilesystemMetadataResolverTest.class
+        final URL mdURL = FilesystemMetadataResolverTest.class
                 .getResource("/org/opensaml/saml/saml2/metadata/InCommon-metadata.xml");
         mdFile = new File(mdURL.toURI());
 
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/EntityRoleFilterTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/EntityRoleFilterTest.java
index 7f4b4cd60..86fdf7edf 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/EntityRoleFilterTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/EntityRoleFilterTest.java
@@ -75,32 +75,40 @@ public class EntityRoleFilterTest extends XMLObjectBaseTestCase {
 
     @Test
     public void testWhiteListSPRole() throws Exception {
-        ArrayList<QName> retainedRoles = new ArrayList<>();
+        final ArrayList<QName> retainedRoles = new ArrayList<>();
         retainedRoles.add(SPSSODescriptor.DEFAULT_ELEMENT_NAME);
-
+        final EntityRoleFilter filter = new EntityRoleFilter(retainedRoles);
+        filter.initialize();
+        
+        metadataProvider.setMetadataFilter(filter);
         metadataProvider.setParserPool(parserPool);
-        metadataProvider.setMetadataFilter(new EntityRoleFilter(retainedRoles));
         metadataProvider.setId("test");
         metadataProvider.initialize();
     }
     
     @Test
     public void testWhiteListIdPRoles() throws Exception {
-        ArrayList<QName> retainedRoles = new ArrayList<>();
+        final ArrayList<QName> retainedRoles = new ArrayList<>();
         retainedRoles.add(IDPSSODescriptor.DEFAULT_ELEMENT_NAME);
         retainedRoles.add(AttributeAuthorityDescriptor.DEFAULT_ELEMENT_NAME);
 
+        final EntityRoleFilter filter = new EntityRoleFilter(retainedRoles);
+        filter.initialize();
+        
+        metadataProvider.setMetadataFilter(filter);
         metadataProvider.setParserPool(parserPool);
-        metadataProvider.setMetadataFilter(new EntityRoleFilter(retainedRoles));
         metadataProvider.setId("test");
         metadataProvider.initialize();
     }
     
     @Test
     public void testWhiteListNoRole() throws Exception {
-        ArrayList<QName> retainedRoles = new ArrayList<>();
+        final ArrayList<QName> retainedRoles = new ArrayList<>();
+        final EntityRoleFilter filter = new EntityRoleFilter(retainedRoles);
+        filter.initialize();
+        
+        metadataProvider.setMetadataFilter(filter);
         metadataProvider.setParserPool(parserPool);
-        metadataProvider.setMetadataFilter(new EntityRoleFilter(retainedRoles));
         metadataProvider.setId("test");
         metadataProvider.initialize();
     }
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/NameIDFormatFilterTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/NameIDFormatFilterTest.java
index d576eb70d..cd06d44b7 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/NameIDFormatFilterTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/NameIDFormatFilterTest.java
@@ -65,7 +65,7 @@ public class NameIDFormatFilterTest extends XMLObjectBaseTestCase implements Pre
         
         metadataFilter = new NameIDFormatFilter();
         
-        formats = List.of(NameIDType.EMAIL, NameIDType.PERSISTENT);
+        formats = CollectionSupport.listOf(NameIDType.EMAIL, NameIDType.PERSISTENT);
     }
     
     @Test
@@ -86,7 +86,7 @@ public class NameIDFormatFilterTest extends XMLObjectBaseTestCase implements Pre
         assert role != null;
         final List<NameIDFormat> attachedFormats = role.getNameIDFormats();
         Assert.assertEquals(attachedFormats.stream().map(NameIDFormat::getURI).collect(Collectors.toUnmodifiableList()),
-                List.of(NameIDType.PERSISTENT, NameIDType.EMAIL));
+                CollectionSupport.listOf(NameIDType.PERSISTENT, NameIDType.EMAIL));
                 
         key = new EntityIdCriterion("https://cms.psu.edu/Shibboleth");
         entity = metadataProvider.resolveSingle(new CriteriaSet(key));
@@ -120,4 +120,4 @@ public class NameIDFormatFilterTest extends XMLObjectBaseTestCase implements Pre
         return "https://carmenwiki.osu.edu/shibboleth".equals(input.getEntityID());
     }
 
-}
+}
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/PredicateFilterTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/PredicateFilterTest.java
index 2f0644ac2..776ccf39c 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/PredicateFilterTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/PredicateFilterTest.java
@@ -55,7 +55,6 @@ public class PredicateFilterTest extends XMLObjectBaseTestCase {
         singleEntityProvider = new ResourceBackedMetadataResolver(null, ResourceHelper.of(singleResource));
         singleEntityProvider.setId("single");
         singleEntityProvider.setParserPool(parserPool);
-
     }
     
     @Test
@@ -66,8 +65,10 @@ public class PredicateFilterTest extends XMLObjectBaseTestCase {
         final String osu = "urn:mace:incommon:osu.edu";
 
         final EntityIdPredicate condition = new EntityIdPredicate(CollectionSupport.singletonList(denied));
+        final PredicateFilter filter = new PredicateFilter(Direction.EXCLUDE, condition);
+        filter.initialize();
         
-        metadataProvider.setMetadataFilter(new PredicateFilter(Direction.EXCLUDE, condition));
+        metadataProvider.setMetadataFilter(filter);
         metadataProvider.initialize();
         
         EntityDescriptor entity = metadataProvider.resolveSingle(new CriteriaSet(new EntityIdCriterion(denied)));
@@ -76,12 +77,11 @@ public class PredicateFilterTest extends XMLObjectBaseTestCase {
         entity = metadataProvider.resolveSingle(new CriteriaSet(new EntityIdCriterion(allowed)));
         Assert.assertNotNull(entity);
         
-        singleEntityProvider.setMetadataFilter(new PredicateFilter(Direction.EXCLUDE, condition));
+        singleEntityProvider.setMetadataFilter(filter);
         singleEntityProvider.initialize();
         
         entity = singleEntityProvider.resolveSingle(new CriteriaSet(new EntityIdCriterion(osu)));
         Assert.assertNull(entity);
-        
     }
     
     @Test
@@ -93,7 +93,10 @@ public class PredicateFilterTest extends XMLObjectBaseTestCase {
 
         final EntityIdPredicate condition = new EntityIdPredicate(CollectionSupport.singletonList(allowed));
         
-        metadataProvider.setMetadataFilter(new PredicateFilter(Direction.INCLUDE, condition));
+        PredicateFilter filter = new PredicateFilter(Direction.INCLUDE, condition);
+        filter.initialize();
+        
+        metadataProvider.setMetadataFilter(filter);
         metadataProvider.initialize();
         
         EntityDescriptor entity = metadataProvider.resolveSingle(new CriteriaSet(new EntityIdCriterion(denied)));
@@ -102,12 +105,14 @@ public class PredicateFilterTest extends XMLObjectBaseTestCase {
         entity = metadataProvider.resolveSingle(new CriteriaSet(new EntityIdCriterion(allowed)));
         Assert.assertNotNull(entity);
         
-        singleEntityProvider.setMetadataFilter(new PredicateFilter(Direction.INCLUDE,
-                new EntityIdPredicate(CollectionSupport.singletonList(osu))));
+        filter = new PredicateFilter(Direction.INCLUDE, new EntityIdPredicate(CollectionSupport.singletonList(osu)));
+        filter.initialize();
+        
+        singleEntityProvider.setMetadataFilter(filter);
         singleEntityProvider.initialize();
         
         entity = singleEntityProvider.resolveSingle(new CriteriaSet(new EntityIdCriterion(osu)));
         Assert.assertNotNull(entity);
-
     }
+    
 }
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/RequiredValidUntilTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/RequiredValidUntilTest.java
index 782e57560..348fc5c86 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/RequiredValidUntilTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/RequiredValidUntilTest.java
@@ -52,6 +52,7 @@ public class RequiredValidUntilTest extends XMLObjectBaseTestCase {
     public void testRequiredValidUntil() throws Exception {
         RequiredValidUntilFilter filter = new RequiredValidUntilFilter();
         filter.setMaxValidityInterval(Duration.ZERO);
+        filter.initialize();
 
         FilesystemMetadataResolver metadataProvider = new FilesystemMetadataResolver(metadataFile);
         metadataProvider.setParserPool(parserPool);
@@ -59,7 +60,7 @@ public class RequiredValidUntilTest extends XMLObjectBaseTestCase {
         metadataProvider.setMetadataFilter(filter);
         try {
             metadataProvider.initialize();
-        } catch (ComponentInitializationException e) {
+        } catch (final ComponentInitializationException e) {
             Assert.fail("Filter disallowed metadata that contained a proper validUntil attribute");
         }
     }
@@ -68,6 +69,7 @@ public class RequiredValidUntilTest extends XMLObjectBaseTestCase {
     public void testRequiredValidUntilWithMaxValidity() throws Exception {
         RequiredValidUntilFilter filter = new RequiredValidUntilFilter();
         filter.setMaxValidityInterval(Duration.ofSeconds(1));
+        filter.initialize();
 
         FilesystemMetadataResolver metadataProvider = new FilesystemMetadataResolver(metadataFile);
         metadataProvider.setParserPool(parserPool);
@@ -77,7 +79,7 @@ public class RequiredValidUntilTest extends XMLObjectBaseTestCase {
         try {
             metadataProvider.initialize();
             Assert.fail("Filter accepted metadata with longer than allowed validity period.");
-        } catch (ComponentInitializationException e) {
+        } catch (final ComponentInitializationException e) {
             // we expect this
             return;
         }
@@ -93,9 +95,11 @@ public class RequiredValidUntilTest extends XMLObjectBaseTestCase {
 
         RequiredValidUntilFilter filter = new RequiredValidUntilFilter();
         filter.setMaxValidityInterval(Duration.ofSeconds(-1));
+        filter.initialize();
         filter.filter(descriptor, new MetadataFilterContext());
         
         filter = new RequiredValidUntilFilter();
+        filter.initialize();
         filter.filter(descriptor, new MetadataFilterContext());
     }
     
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/SchemaValidationFilterTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/SchemaValidationFilterTest.java
index 44d2ee835..1a0a4e4d7 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/SchemaValidationFilterTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/SchemaValidationFilterTest.java
@@ -38,9 +38,13 @@ public class SchemaValidationFilterTest extends XMLObjectBaseTestCase {
     public void testValid() throws Exception {
         final ResourceBackedMetadataResolver metadataProvider = new ResourceBackedMetadataResolver(
                 ResourceHelper.of(new ClassPathResource("org/opensaml/saml/saml2/metadata/valid-metadata.xml")));
+        
+        final SchemaValidationFilter filter = new SchemaValidationFilter(new SAMLSchemaBuilder(SAML1Version.SAML_11));
+        filter.initialize();
+        
         metadataProvider.setParserPool(parserPool);
         metadataProvider.setId("test");
-        metadataProvider.setMetadataFilter(new SchemaValidationFilter(new SAMLSchemaBuilder(SAML1Version.SAML_11)));
+        metadataProvider.setMetadataFilter(filter);
         metadataProvider.initialize();
     }
     
@@ -48,9 +52,12 @@ public class SchemaValidationFilterTest extends XMLObjectBaseTestCase {
     public void testStrict() throws Exception {
         final ResourceBackedMetadataResolver metadataProvider = new ResourceBackedMetadataResolver(
                 ResourceHelper.of(new ClassPathResource("org/opensaml/saml/saml2/metadata/valid-metadata.xml")));
+        final SchemaValidationFilter filter = new SchemaValidationFilter(new SAMLSchemaBuilder(SAML1Version.SAML_11, true));
+        filter.initialize();
+
         metadataProvider.setParserPool(parserPool);
         metadataProvider.setId("test");
-        metadataProvider.setMetadataFilter(new SchemaValidationFilter(new SAMLSchemaBuilder(SAML1Version.SAML_11, true)));
+        metadataProvider.setMetadataFilter(filter);
         metadataProvider.initialize();
     }
     
@@ -58,9 +65,12 @@ public class SchemaValidationFilterTest extends XMLObjectBaseTestCase {
     public void testStrictInvalid() throws Exception {
         final ResourceBackedMetadataResolver metadataProvider = new ResourceBackedMetadataResolver(
                 ResourceHelper.of(new ClassPathResource("org/opensaml/saml/saml2/metadata/invalid-metadata.xml")));
+        final SchemaValidationFilter filter = new SchemaValidationFilter(new SAMLSchemaBuilder(SAML1Version.SAML_11, true));
+        filter.initialize();
+
         metadataProvider.setParserPool(parserPool);
         metadataProvider.setId("test");
-        metadataProvider.setMetadataFilter(new SchemaValidationFilter(new SAMLSchemaBuilder(SAML1Version.SAML_11, true)));
+        metadataProvider.setMetadataFilter(filter);
         metadataProvider.initialize();
         Assert.fail("Should have raised schema validation error");
     }
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/SignatureValidationFilterExplicitKeyTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/SignatureValidationFilterExplicitKeyTest.java
index 34c3ee6be..f922f3b8c 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/SignatureValidationFilterExplicitKeyTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/SignatureValidationFilterExplicitKeyTest.java
@@ -17,17 +17,15 @@
 
 package org.opensaml.saml.metadata.resolver.filter.impl;
 
-import java.security.cert.CertificateException;
 import java.security.cert.X509Certificate;
 
+import net.shibboleth.shared.annotation.constraint.NonnullBeforeTest;
 import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.resolver.CriteriaSet;
-import net.shibboleth.shared.xml.XMLParserException;
 
 import org.opensaml.core.testing.XMLObjectBaseTestCase;
 import org.opensaml.core.xml.XMLObject;
-import org.opensaml.core.xml.io.UnmarshallingException;
 import org.opensaml.saml.metadata.resolver.filter.FilterException;
 import org.opensaml.saml.metadata.resolver.filter.MetadataFilterContext;
 import org.opensaml.saml.metadata.resolver.filter.data.impl.MetadataSource;
@@ -96,9 +94,9 @@ public class SignatureValidationFilterExplicitKeyTest extends XMLObjectBaseTestC
         "vCfzIS7/dk9oPnjeH7GqbxUZMsms4qDZzdNkNDUDWj82lJzIMfZyUKbn2waTsgg3mKja0dGw2UBy" +
         "urPV4NvVcNaIQZJunHI=";
     
-    private KeyInfoCredentialResolver kiResolver;
+    @NonnullBeforeTest private KeyInfoCredentialResolver kiResolver;
     
-    private MetadataFilterContext filterContext;
+    @NonnullBeforeTest private MetadataFilterContext filterContext;
 
     @BeforeClass
     public void buildKeyInfoCredentialResolver() {
@@ -110,203 +108,212 @@ public class SignatureValidationFilterExplicitKeyTest extends XMLObjectBaseTestC
         switchMDDocumentValid = parserPool.parse(SignatureValidationFilterExplicitKeyTest.class.getResourceAsStream(switchMDFileValid));
         switchMDDocumentInvalid = parserPool.parse(SignatureValidationFilterExplicitKeyTest.class.getResourceAsStream(switchMDFileInvalid));
         
-        X509Certificate switchCert = X509Support.decodeCertificate(switchMDCertBase64);
-        X509Credential switchCred = CredentialSupport.getSimpleCredential(switchCert, null);
-        StaticCredentialResolver switchCredResolver = new StaticCredentialResolver(switchCred);
+        final X509Certificate switchCert = X509Support.decodeCertificate(switchMDCertBase64);
+        final X509Credential switchCred = CredentialSupport.getSimpleCredential(switchCert, null);
+        final StaticCredentialResolver switchCredResolver = new StaticCredentialResolver(switchCred);
         switchSigTrustEngine = new ExplicitKeySignatureTrustEngine(switchCredResolver, kiResolver);
 
         filterContext = new MetadataFilterContext();
     }
 
     @Test
-    public void testValidSWITCHStandalone() throws UnmarshallingException {
-        XMLObject xmlObject = unmarshallerFactory.ensureUnmarshaller(switchMDDocumentValid
+    public void testValidSWITCHStandalone() throws Exception {
+        final XMLObject xmlObject = unmarshallerFactory.ensureUnmarshaller(switchMDDocumentValid
                 .getDocumentElement()).unmarshall(switchMDDocumentValid.getDocumentElement());
         
-        SignatureValidationFilter filter = new SignatureValidationFilter(switchSigTrustEngine);
+        final SignatureValidationFilter filter = new SignatureValidationFilter(switchSigTrustEngine);
+        filter.initialize();
         try {
             filter.filter(xmlObject, filterContext);
-        } catch (FilterException e) {
+        } catch (final FilterException e) {
             Assert.fail("Filter failed validation, should have succeeded: " + e.getMessage());
         }
     }
     
     @Test(expectedExceptions=FilterException.class)
-    public void testSWITCHStandaloneBlacklistedSignatureAlgorithm() throws UnmarshallingException, FilterException {
-        XMLObject xmlObject = unmarshallerFactory.ensureUnmarshaller(switchMDDocumentValid
+    public void testSWITCHStandaloneBlacklistedSignatureAlgorithm() throws Exception {
+        final XMLObject xmlObject = unmarshallerFactory.ensureUnmarshaller(switchMDDocumentValid
                 .getDocumentElement()).unmarshall(switchMDDocumentValid.getDocumentElement());
         
-        SignatureValidationFilter filter = new SignatureValidationFilter(switchSigTrustEngine);
+        final SignatureValidationFilter filter = new SignatureValidationFilter(switchSigTrustEngine);
         
-        SignatureValidationParameters sigParams = new SignatureValidationParameters();
+        final SignatureValidationParameters sigParams = new SignatureValidationParameters();
         sigParams.setExcludedAlgorithms(CollectionSupport.singleton(SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA1));
-        CriteriaSet defaultCriteriaSet = new CriteriaSet(new SignatureValidationParametersCriterion(sigParams));
+        final CriteriaSet defaultCriteriaSet = new CriteriaSet(new SignatureValidationParametersCriterion(sigParams));
         filter.setDefaultCriteria(defaultCriteriaSet);
+        filter.initialize();
         
         filter.filter(xmlObject, filterContext);
     }
     
     @Test
-    public void testInvalidSWITCHStandalone() throws UnmarshallingException {
-        XMLObject xmlObject = unmarshallerFactory.ensureUnmarshaller(switchMDDocumentInvalid
+    public void testInvalidSWITCHStandalone() throws Exception {
+        final XMLObject xmlObject = unmarshallerFactory.ensureUnmarshaller(switchMDDocumentInvalid
                 .getDocumentElement()).unmarshall(switchMDDocumentInvalid.getDocumentElement());
         
-        SignatureValidationFilter filter = new SignatureValidationFilter(switchSigTrustEngine);
+        final SignatureValidationFilter filter = new SignatureValidationFilter(switchSigTrustEngine);
+        filter.initialize();
         try {
             filter.filter(xmlObject, filterContext);
             Assert.fail("Filter passed validation, should have failed");
-        } catch (FilterException e) {
+        } catch (final FilterException e) {
             // do nothing, should fail
         }
     }
 
     @Test
-    public void testInvalidSWITCHStandaloneWithRootSkip() throws UnmarshallingException {
+    public void testInvalidSWITCHStandaloneWithRootSkip() throws Exception {
         // Goal here is to test the root signature skip (indicated by filter context data) by using a known invalid root signature.
-        XMLObject xmlObject = unmarshallerFactory.ensureUnmarshaller(switchMDDocumentInvalid
+        final XMLObject xmlObject = unmarshallerFactory.ensureUnmarshaller(switchMDDocumentInvalid
                 .getDocumentElement()).unmarshall(switchMDDocumentInvalid.getDocumentElement());
 
-        MetadataSource metadataSource = new MetadataSource();
+        final MetadataSource metadataSource = new MetadataSource();
         metadataSource.setTrusted(true);
         filterContext.add(metadataSource);
 
-        SignatureValidationFilter filter = new SignatureValidationFilter(switchSigTrustEngine);
+        final SignatureValidationFilter filter = new SignatureValidationFilter(switchSigTrustEngine);
+        filter.initialize();
         try {
             filter.filter(xmlObject, filterContext);
-        } catch (FilterException e) {
+        } catch (final FilterException e) {
             Assert.fail("Filter failed validation, should have passed b/c we implicitly said to skip root signature");
         }
     }
     
     @Test
-    public void testEntityDescriptor() throws UnmarshallingException, CertificateException, XMLParserException {
-        X509Certificate cert = X509Support.decodeCertificate(openIDCertBase64);
-        X509Credential cred = CredentialSupport.getSimpleCredential(cert, null);
-        StaticCredentialResolver credResolver = new StaticCredentialResolver(cred);
-        SignatureTrustEngine trustEngine = new ExplicitKeySignatureTrustEngine(credResolver, kiResolver);
+    public void testEntityDescriptor() throws Exception {
+        final X509Certificate cert = X509Support.decodeCertificate(openIDCertBase64);
+        final X509Credential cred = CredentialSupport.getSimpleCredential(cert, null);
+        final StaticCredentialResolver credResolver = new StaticCredentialResolver(cred);
+        final SignatureTrustEngine trustEngine = new ExplicitKeySignatureTrustEngine(credResolver, kiResolver);
         
-        Document mdDoc = parserPool.parse(SignatureValidationFilterExplicitKeyTest.class.getResourceAsStream(openIDFileValid));
-        XMLObject xmlObject = 
+        final Document mdDoc = parserPool.parse(SignatureValidationFilterExplicitKeyTest.class.getResourceAsStream(openIDFileValid));
+        final XMLObject xmlObject = 
             unmarshallerFactory.ensureUnmarshaller(mdDoc.getDocumentElement()).unmarshall(mdDoc.getDocumentElement());
         Assert.assertTrue(xmlObject instanceof EntityDescriptor);
-        EntityDescriptor ed = (EntityDescriptor) xmlObject;
+        final EntityDescriptor ed = (EntityDescriptor) xmlObject;
         Assert.assertTrue(ed.isSigned());
         Assert.assertNotNull(ed.getSignature(), "Signature was null");
         
-        SignatureValidationFilter filter = new SignatureValidationFilter(trustEngine);
+        final SignatureValidationFilter filter = new SignatureValidationFilter(trustEngine);
+        filter.initialize();
         try {
             filter.filter(ed, filterContext);
-        } catch (FilterException e) {
+        } catch (final FilterException e) {
             Assert.fail("Filter failed validation, should have succeeded: " + e.getMessage());
         }
     }
     
     @Test
-    public void testEntityDescriptorInvalid() throws UnmarshallingException, CertificateException, XMLParserException {
-        X509Certificate cert = X509Support.decodeCertificate(openIDCertBase64);
-        X509Credential cred = CredentialSupport.getSimpleCredential(cert, null);
-        StaticCredentialResolver credResolver = new StaticCredentialResolver(cred);
-        SignatureTrustEngine trustEngine = new ExplicitKeySignatureTrustEngine(credResolver, kiResolver);
+    public void testEntityDescriptorInvalid() throws Exception {
+        final X509Certificate cert = X509Support.decodeCertificate(openIDCertBase64);
+        final X509Credential cred = CredentialSupport.getSimpleCredential(cert, null);
+        final StaticCredentialResolver credResolver = new StaticCredentialResolver(cred);
+        final SignatureTrustEngine trustEngine = new ExplicitKeySignatureTrustEngine(credResolver, kiResolver);
         
-        Document mdDoc = parserPool.parse(SignatureValidationFilterExplicitKeyTest.class.getResourceAsStream(openIDFileInvalid));
-        XMLObject xmlObject = 
+        final Document mdDoc = parserPool.parse(SignatureValidationFilterExplicitKeyTest.class.getResourceAsStream(openIDFileInvalid));
+        final XMLObject xmlObject = 
             unmarshallerFactory.ensureUnmarshaller(mdDoc.getDocumentElement()).unmarshall(mdDoc.getDocumentElement());
         Assert.assertTrue(xmlObject instanceof EntityDescriptor);
-        EntityDescriptor ed = (EntityDescriptor) xmlObject;
+        final EntityDescriptor ed = (EntityDescriptor) xmlObject;
         Assert.assertTrue(ed.isSigned());
         Assert.assertNotNull(ed.getSignature(), "Signature was null");
         
-        SignatureValidationFilter filter = new SignatureValidationFilter(trustEngine);
+        final SignatureValidationFilter filter = new SignatureValidationFilter(trustEngine);
+        filter.initialize();
         try {
             filter.filter(xmlObject, filterContext);
             Assert.fail("Filter passed validation, should have failed");
-        } catch (FilterException e) {
+        } catch (final FilterException e) {
             // do nothing, should fail
         }
     }
 
     @Test
-    public void testEntityDescriptorInvalidWithRootSkip() throws UnmarshallingException, CertificateException, XMLParserException {
+    public void testEntityDescriptorInvalidWithRootSkip() throws Exception {
         // Goal here is to test the root signature skip (indicated by filter context data) by using a known invalid root signature.
-        X509Certificate cert = X509Support.decodeCertificate(openIDCertBase64);
-        X509Credential cred = CredentialSupport.getSimpleCredential(cert, null);
-        StaticCredentialResolver credResolver = new StaticCredentialResolver(cred);
-        SignatureTrustEngine trustEngine = new ExplicitKeySignatureTrustEngine(credResolver, kiResolver);
+        final X509Certificate cert = X509Support.decodeCertificate(openIDCertBase64);
+        final X509Credential cred = CredentialSupport.getSimpleCredential(cert, null);
+        final StaticCredentialResolver credResolver = new StaticCredentialResolver(cred);
+        final SignatureTrustEngine trustEngine = new ExplicitKeySignatureTrustEngine(credResolver, kiResolver);
 
-        Document mdDoc = parserPool.parse(SignatureValidationFilterExplicitKeyTest.class.getResourceAsStream(openIDFileInvalid));
-        XMLObject xmlObject =
+        final Document mdDoc = parserPool.parse(SignatureValidationFilterExplicitKeyTest.class.getResourceAsStream(openIDFileInvalid));
+        final XMLObject xmlObject =
             unmarshallerFactory.ensureUnmarshaller(mdDoc.getDocumentElement()).unmarshall(mdDoc.getDocumentElement());
         Assert.assertTrue(xmlObject instanceof EntityDescriptor);
-        EntityDescriptor ed = (EntityDescriptor) xmlObject;
+        final EntityDescriptor ed = (EntityDescriptor) xmlObject;
         Assert.assertTrue(ed.isSigned());
         Assert.assertNotNull(ed.getSignature(), "Signature was null");
 
-        MetadataSource metadataSource = new MetadataSource();
+        final MetadataSource metadataSource = new MetadataSource();
         metadataSource.setTrusted(true);
         filterContext.add(metadataSource);
 
-        SignatureValidationFilter filter = new SignatureValidationFilter(trustEngine);
+        final SignatureValidationFilter filter = new SignatureValidationFilter(trustEngine);
+        filter.initialize();
         try {
             filter.filter(xmlObject, filterContext);
-        } catch (FilterException e) {
+        } catch (final FilterException e) {
             Assert.fail("Filter failed validation, should have passed b/c we implicitly said to skip root signature");
         }
     }
     
     @Test
-    public void testEntityDescriptorWithProvider() throws CertificateException, XMLParserException, UnmarshallingException {
-        X509Certificate cert = X509Support.decodeCertificate(openIDCertBase64);
-        X509Credential cred = CredentialSupport.getSimpleCredential(cert, null);
-        StaticCredentialResolver credResolver = new StaticCredentialResolver(cred);
-        SignatureTrustEngine trustEngine = new ExplicitKeySignatureTrustEngine(credResolver, kiResolver);
+    public void testEntityDescriptorWithProvider() throws Exception {
+        final X509Certificate cert = X509Support.decodeCertificate(openIDCertBase64);
+        final X509Credential cred = CredentialSupport.getSimpleCredential(cert, null);
+        final StaticCredentialResolver credResolver = new StaticCredentialResolver(cred);
+        final SignatureTrustEngine trustEngine = new ExplicitKeySignatureTrustEngine(credResolver, kiResolver);
         
-        Document mdDoc = parserPool.parse(SignatureValidationFilterExplicitKeyTest.class.getResourceAsStream(openIDFileValid));
+        final Document mdDoc = parserPool.parse(SignatureValidationFilterExplicitKeyTest.class.getResourceAsStream(openIDFileValid));
         
-        DOMMetadataResolver mdProvider = new DOMMetadataResolver(mdDoc.getDocumentElement());
+        final DOMMetadataResolver mdProvider = new DOMMetadataResolver(mdDoc.getDocumentElement());
         mdProvider.setParserPool(parserPool);
         mdProvider.setId("test");
         mdProvider.setRequireValidMetadata(false);
         
-        SignatureValidationFilter filter = new SignatureValidationFilter(trustEngine);
+        final SignatureValidationFilter filter = new SignatureValidationFilter(trustEngine);
+        filter.initialize();
         mdProvider.setMetadataFilter(filter);
         
         try {
             mdProvider.initialize();
-        } catch (ComponentInitializationException e) {
+        } catch (final ComponentInitializationException e) {
             Assert.fail("Failed when initializing metadata provider");
         }
     }
     
     @Test
-    public void testInvalidEntityDescriptorWithProvider() throws CertificateException, XMLParserException, UnmarshallingException {
-        X509Certificate cert = X509Support.decodeCertificate(openIDCertBase64);
-        X509Credential cred = CredentialSupport.getSimpleCredential(cert, null);
-        StaticCredentialResolver credResolver = new StaticCredentialResolver(cred);
+    public void testInvalidEntityDescriptorWithProvider() throws Exception {
+        final X509Certificate cert = X509Support.decodeCertificate(openIDCertBase64);
+        final X509Credential cred = CredentialSupport.getSimpleCredential(cert, null);
+        final StaticCredentialResolver credResolver = new StaticCredentialResolver(cred);
         SignatureTrustEngine trustEngine = new ExplicitKeySignatureTrustEngine(credResolver, kiResolver);
         
-        Document mdDoc = parserPool.parse(SignatureValidationFilterExplicitKeyTest.class.getResourceAsStream(openIDFileInvalid));
+        final Document mdDoc = parserPool.parse(SignatureValidationFilterExplicitKeyTest.class.getResourceAsStream(openIDFileInvalid));
         
-        DOMMetadataResolver mdProvider = new DOMMetadataResolver(mdDoc.getDocumentElement());
+        final DOMMetadataResolver mdProvider = new DOMMetadataResolver(mdDoc.getDocumentElement());
         mdProvider.setParserPool(parserPool);
         mdProvider.setRequireValidMetadata(false);
         
-        SignatureValidationFilter filter = new SignatureValidationFilter(trustEngine);
+        final SignatureValidationFilter filter = new SignatureValidationFilter(trustEngine);
+        filter.initialize();
         mdProvider.setId("test");
         mdProvider.setMetadataFilter(filter);
         
         try {
             mdProvider.initialize();
             Assert.fail("Metadata signature was invalid, provider initialization should have failed");
-        } catch (ComponentInitializationException e) {
+        } catch (final ComponentInitializationException e) {
             // do nothing, failure expected
         }
     }
 
     @Test
-    public void testIsSkipRootSignatureEval() {
-        MetadataFilterContext context = new MetadataFilterContext();
-        SignatureValidationFilter filter = new SignatureValidationFilter(switchSigTrustEngine);
-        MetadataSource metadataSource = new MetadataSource();
+    public void testIsSkipRootSignatureEval() throws ComponentInitializationException {
+        final MetadataFilterContext context = new MetadataFilterContext();
+        final SignatureValidationFilter filter = new SignatureValidationFilter(switchSigTrustEngine);
+        final MetadataSource metadataSource = new MetadataSource();
 
         Assert.assertFalse(filter.isSkipRootSignature(context));
 
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/SignatureValidationFilterPKIXTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/SignatureValidationFilterPKIXTest.java
index 3bf268265..5f1570375 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/SignatureValidationFilterPKIXTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/SignatureValidationFilterPKIXTest.java
@@ -25,6 +25,8 @@ import java.util.Collection;
 import java.util.HashSet;
 import java.util.Set;
 
+import javax.annotation.Nonnull;
+
 import org.opensaml.core.testing.XMLObjectBaseTestCase;
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.core.xml.io.MarshallingException;
@@ -59,19 +61,23 @@ import org.testng.annotations.Test;
 import org.testng.collections.Lists;
 import org.w3c.dom.Element;
 
+import net.shibboleth.shared.annotation.constraint.NonnullBeforeTest;
+import net.shibboleth.shared.component.ComponentInitializationException;
+
 @SuppressWarnings("javadoc")
 public class SignatureValidationFilterPKIXTest extends XMLObjectBaseTestCase {
     
-    private static final String DATA_PATH = "/org/opensaml/saml/metadata/resolver/filter/impl/";
+    @Nonnull private static final String DATA_PATH = "/org/opensaml/saml/metadata/resolver/filter/impl/";
     
-    private SignatureValidationFilter filter;
+    @NonnullBeforeTest private SignatureValidationFilter filter;
     
-    private MetadataFilterContext filterContext;
+    @NonnullBeforeTest private MetadataFilterContext filterContext;
 
     @BeforeMethod
-    public void setUp() {
+    public void setUp() throws ComponentInitializationException {
         filter = new SignatureValidationFilter(buildTrustEngine());
         filter.setDynamicTrustedNamesStrategy(new BasicDynamicTrustedNamesStrategy());
+        filter.initialize();
 
         filterContext = new MetadataFilterContext();
     }
@@ -129,7 +135,7 @@ public class SignatureValidationFilterPKIXTest extends XMLObjectBaseTestCase {
         return unmarshallerFactory.ensureUnmarshaller(dom).unmarshall(dom);
     }
 
-    private SignatureTrustEngine buildTrustEngine() {
+    @Nonnull private SignatureTrustEngine buildTrustEngine() {
         Collection<X509Certificate> roots = getCertificates("root.crt");
         
         PKIXValidationInformation pkixInfo = getPKIXInfoSet(roots, new HashSet<X509CRL>(), 10);
@@ -171,12 +177,11 @@ public class SignatureValidationFilterPKIXTest extends XMLObjectBaseTestCase {
     }
     
     private PrivateKey getPrivateKey(String fileName) {
-        try {
-            InputStream ins = getInputStream(fileName);
+        try (final InputStream ins = getInputStream(fileName)) {
             byte[] encoded = new byte[ins.available()];
             ins.read(encoded);
             return KeySupport.decodePrivateKey(encoded, null);
-        } catch (Exception e) {
+        } catch (final Exception e) {
             Assert.fail("Could not create private key from file: " + fileName + ": " + e.getMessage());
         }
         return null;
@@ -191,12 +196,11 @@ public class SignatureValidationFilterPKIXTest extends XMLObjectBaseTestCase {
     }
     
     private X509Certificate getCertificate(String fileName) {
-        try {
-            InputStream ins = getInputStream(fileName);
+        try (final InputStream ins = getInputStream(fileName)) {
             byte[] encoded = new byte[ins.available()];
             ins.read(encoded);
             return X509Support.decodeCertificates(encoded).iterator().next();
-        } catch (Exception e) {
+        } catch (final Exception e) {
             Assert.fail("Could not create certificate from file: " + fileName + ": " + e.getMessage());
         }
         return null;
@@ -206,4 +210,4 @@ public class SignatureValidationFilterPKIXTest extends XMLObjectBaseTestCase {
         return  this.getClass().getResourceAsStream(DATA_PATH + fileName);
     }
 
-}
+}
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicMetadataResolverTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicMetadataResolverTest.java
index 461c92325..052779869 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicMetadataResolverTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicMetadataResolverTest.java
@@ -20,8 +20,6 @@ package org.opensaml.saml.metadata.resolver.impl;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.security.KeyPair;
-import java.security.NoSuchAlgorithmException;
-import java.security.NoSuchProviderException;
 import java.time.Duration;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -107,7 +105,7 @@ public class AbstractDynamicMetadataResolverTest extends XMLObjectBaseTestCase {
     private boolean allowActivation;
     
     @BeforeClass
-    protected void setUpSigningSupport() throws NoSuchAlgorithmException, NoSuchProviderException {
+    protected void setUpSigningSupport() throws Exception {
         KeyPair kp = KeySupport.generateKeyPair(JCAConstants.KEY_ALGO_RSA, 1024, null);
         signingCred = CredentialSupport.getSimpleCredential(kp.getPublic(), kp.getPrivate());
         
@@ -128,6 +126,7 @@ public class AbstractDynamicMetadataResolverTest extends XMLObjectBaseTestCase {
                 DefaultSecurityConfigurationBootstrap.buildBasicInlineKeyInfoCredentialResolver());
         
         signatureValidationFilter = new SignatureValidationFilter(signatureTrustEngine);
+        signatureValidationFilter.initialize();
     }
     
     @BeforeMethod

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


More information about the commits mailing list