[java-metadata-aggregator] 02/02: Nullability

Ian Young ian at iay.org.uk
Mon Apr 3 20:33:38 UTC 2023


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

iay pushed a commit to branch main
in repository java-metadata-aggregator.

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

commit 5a943be14a8da4f34a5f025ceb4071e7ac04095b
Author: Ian Young <ian at iay.org.uk>
AuthorDate: Mon Apr 3 21:33:29 2023 +0100

    Nullability
---
 .../metadata/DeduplicatingItemIdMergeStrategy.java |  1 +
 .../dom/AbstractAttributeValidationStage.java      |  8 +++---
 .../metadata/dom/AbstractDOMTraversalStage.java    |  3 +-
 .../metadata/dom/AbstractElementVisitingStage.java |  4 +--
 .../AbstractElementVisitingValidationStage.java    |  4 +--
 .../net/shibboleth/metadata/dom/Container.java     |  3 ++
 .../shibboleth/metadata/dom/DOMElementItem.java    | 11 ++++----
 .../metadata/dom/DOMElementSerializer.java         |  4 ++-
 .../metadata/dom/ElementsStrippingStage.java       |  4 +--
 .../metadata/dom/EmptyContainerStrippingStage.java |  1 +
 .../dom/saml/ContactPersonFilterStage.java         | 10 +++++--
 .../dom/saml/DiscoFeedCollectionSerializer.java    |  2 ++
 .../mdattr/AbstractEntityAttributeMatcher.java     |  2 +-
 .../dom/saml/mdattr/AbstractExactValueMatcher.java |  1 +
 .../metadata/dom/saml/mdattr/MDAttrSupport.java    | 11 ++++----
 .../metadata/dom/saml/mdui/MDUISupport.java        | 19 +++++++------
 .../metadata/pipeline/AbstractFilteringStage.java  |  1 +
 .../metadata/pipeline/CompositeStage.java          |  5 ++--
 .../metadata/validate/BaseValidator.java           |  3 +-
 .../validate/x509/AbstractX509Validator.java       |  2 +-
 .../java/net/shibboleth/metadata/BaseTest.java     | 27 +++++++++++-------
 .../net/shibboleth/metadata/BeansFileTest.java     |  2 ++
 .../net/shibboleth/metadata/dom/BaseDOMTest.java   |  7 ++---
 .../net/shibboleth/metadata/dom/ContainerTest.java | 19 ++++++++++---
 .../dom/saml/AttributeElementMakerTest.java        |  1 +
 .../metadata/dom/saml/CRDetectionStageTest.java    |  8 ++++--
 .../dom/saml/ContactPersonFilterStageTest.java     | 33 +++++++++++-----------
 .../saml/DiscoFeedCollectionSerializerTest.java    | 18 +++++++-----
 .../metadata/pipeline/CompositeStageTest.java      | 23 ++++++++-------
 29 files changed, 142 insertions(+), 95 deletions(-)

diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/DeduplicatingItemIdMergeStrategy.java b/mda-framework/src/main/java/net/shibboleth/metadata/DeduplicatingItemIdMergeStrategy.java
index 94f81f1..a56dbc0 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/DeduplicatingItemIdMergeStrategy.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/DeduplicatingItemIdMergeStrategy.java
@@ -47,6 +47,7 @@ public class DeduplicatingItemIdMergeStrategy implements CollectionMergeStrategy
         }
 
         for (final List<Item<T>> source : sources) {
+            assert source != null;
             merge(presentItemIds, target, source);
         }
     }
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/AbstractAttributeValidationStage.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/AbstractAttributeValidationStage.java
index ff46985..88ed8a3 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/AbstractAttributeValidationStage.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/AbstractAttributeValidationStage.java
@@ -83,7 +83,7 @@ public abstract class AbstractAttributeValidationStage<T> extends AbstractElemen
         for (final var name : names) {
             qnames.add(new QName(name));
         }
-        attributeNames = Set.copyOf(qnames);
+        attributeNames = CollectionSupport.copyToSet(qnames);
     }
     
     /**
@@ -97,7 +97,7 @@ public abstract class AbstractAttributeValidationStage<T> extends AbstractElemen
     public final synchronized void setAttributeName(@Nonnull final String name) {
         checkSetterPreconditions();
         Constraint.isNotNull(name, "unqualifiedAttributeName may not be null");
-        attributeNames = Set.of(new QName(name));
+        attributeNames = CollectionSupport.setOf(new QName(name));
     }
     
     /**
@@ -108,7 +108,7 @@ public abstract class AbstractAttributeValidationStage<T> extends AbstractElemen
     public final synchronized void setQualifiedAttributeNames(@Nonnull final Collection<QName> names) {
         checkSetterPreconditions();
         Constraint.isNotNull(names, "attributeNames may not be null");
-        attributeNames = Set.copyOf(names);
+        attributeNames = CollectionSupport.copyToSet(names);
     }
     
     /**
@@ -119,7 +119,7 @@ public abstract class AbstractAttributeValidationStage<T> extends AbstractElemen
     public final synchronized void setQualifiedAttributeName(@Nonnull final QName name) {
         checkSetterPreconditions();
         Constraint.isNotNull(name, "attributeName may not be null");
-        attributeNames = Set.of(name);
+        attributeNames = CollectionSupport.setOf(name);
     }
     
     @Override
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/AbstractDOMTraversalStage.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/AbstractDOMTraversalStage.java
index 6ef878a..9196d42 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/AbstractDOMTraversalStage.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/AbstractDOMTraversalStage.java
@@ -106,7 +106,8 @@ public abstract class AbstractDOMTraversalStage<C extends DOMTraversalContext>
     private void traverse(@Nonnull final Element element, @Nonnull final C context) 
         throws StageProcessingException {
         final List<Element> children = ElementSupport.getChildElements(element);
-        for (@Nonnull final Element child : children) {
+        for (final Element child : children) {
+            assert child != null;
             traverse(child, context);
         }
         if (applicable(element, context)) {
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/AbstractElementVisitingStage.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/AbstractElementVisitingStage.java
index 91aafea..a0ed78d 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/AbstractElementVisitingStage.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/AbstractElementVisitingStage.java
@@ -64,7 +64,7 @@ public abstract class AbstractElementVisitingStage extends AbstractDOMTraversalS
     public synchronized void setElementNames(@Nonnull @NonnullElements @Unmodifiable final Collection<QName> names) {
         checkSetterPreconditions();
         Constraint.isNotNull(names, "elementNames may not be null");
-        elementNames = Set.copyOf(names);
+        elementNames = CollectionSupport.copyToSet(names);
     }
     
     /**
@@ -77,7 +77,7 @@ public abstract class AbstractElementVisitingStage extends AbstractDOMTraversalS
     public synchronized void setElementName(@Nonnull final QName name) {
         checkSetterPreconditions();
         Constraint.isNotNull(name, "elementName may not be null");
-        elementNames = Set.of(name);
+        elementNames = CollectionSupport.setOf(name);
     }
     
     @Override
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/AbstractElementVisitingValidationStage.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/AbstractElementVisitingValidationStage.java
index bad7a5e..8254765 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/AbstractElementVisitingValidationStage.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/AbstractElementVisitingValidationStage.java
@@ -74,7 +74,7 @@ public abstract class AbstractElementVisitingValidationStage<V, N>
     public final synchronized void setElementNames(@Nonnull final Collection<QName> names) {
         checkSetterPreconditions();
         Constraint.isNotNull(names, "elementNames may not be null");
-        elementNames = Set.copyOf(names);
+        elementNames = CollectionSupport.copyToSet(names);
     }
     
     /**
@@ -87,7 +87,7 @@ public abstract class AbstractElementVisitingValidationStage<V, N>
     public final synchronized void setElementName(@Nonnull final QName name) {
         checkSetterPreconditions();
         Constraint.isNotNull(name, "elementName may not be null");
-        elementNames = Set.of(name);
+        elementNames = CollectionSupport.setOf(name);
     }
 
     @Override
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/Container.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/Container.java
index de8312d..ce70672 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/Container.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/Container.java
@@ -214,6 +214,7 @@ public class Container {
     @Nullable
     public Container findChild(@Nonnull final Predicate<Element> matcher) {
         for (final Element e : ElementSupport.getChildElements(element)) {
+            assert e != null;
             if (matcher.test(e)) {
                 return new Container(e, this);
             }
@@ -231,6 +232,7 @@ public class Container {
     public List<Container> findChildren(@Nonnull final Predicate<Element> matcher) {
         final List<Container> list = new ArrayList<>();
         for (final Element e : ElementSupport.getChildElements(element)) {
+            assert e != null;
             if (matcher.test(e)) {
                 list.add(new Container(e, this));
             }
@@ -262,6 +264,7 @@ public class Container {
     public Container addChild(@Nonnull final Function<Container, Element> maker,
             @Nonnull final ChildAddingStrategy adder) {
         final Element child = maker.apply(this);
+        assert child != null;
         return addChild(child, adder);
     }
 
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/DOMElementItem.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/DOMElementItem.java
index 57bdb96..2ef73f4 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/DOMElementItem.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/DOMElementItem.java
@@ -77,11 +77,11 @@ public class DOMElementItem extends AbstractItem<Element> {
      * @param document {@link Document} to wrap
      * @return processed element
      */
-    @Nonnull private static Element processDocument(@Nonnull final Document document) {
+    private static @Nonnull Element processDocument(@Nonnull final Document document) {
         Constraint.isNotNull(document, "DOM Document can not be null");
         
-        final Element docElement = document.getDocumentElement();
-        Constraint.isNotNull(docElement, "DOM Document Element may not be null");
+        final @Nonnull Element docElement =
+                Constraint.isNotNull(document.getDocumentElement(), "DOM Document Element may not be null");
 
         return docElement;
     }
@@ -98,19 +98,20 @@ public class DOMElementItem extends AbstractItem<Element> {
      * @param element {@link Element} to process
      * @return processed element
      */
-    @Nonnull private static Element processElement(@Nonnull final Element element) {
+    private static @Nonnull Element processElement(@Nonnull final Element element) {
         Constraint.isNotNull(element, "DOM Document Element may not be null");
 
         final DOMImplementation domImpl = element.getOwnerDocument().getImplementation();
         final Document newDocument = domImpl.createDocument(null, null, null);
         final Element newDocumentRoot = (Element) newDocument.importNode(element, true);
+        assert newDocumentRoot != null;
         ElementSupport.setDocumentElement(newDocument, newDocumentRoot);
 
         return newDocumentRoot;
     }
 
     @Override
-    public Item<Element> copy() {
+    public @Nonnull Item<Element> copy() {
         final DOMElementItem clone = new DOMElementItem(unwrap());
         clone.getItemMetadata().putAll(getItemMetadata());
         return clone;
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/DOMElementSerializer.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/DOMElementSerializer.java
index d904c83..35cf2a6 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/DOMElementSerializer.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/DOMElementSerializer.java
@@ -74,7 +74,9 @@ public class DOMElementSerializer implements ItemSerializer<Element>, ItemCollec
             @Nonnull final OutputStream output) throws IOException {
         final Iterator<Item<Element>> iter = items.iterator();
         if (iter.hasNext()) {
-            serialize(iter.next(), output);
+            final var item = iter.next();
+            assert item != null;
+            serialize(item, output);
             if (iter.hasNext()) {
                 LOG.warn("collection contained more than one Item; rest ignored");
             }
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/ElementsStrippingStage.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/ElementsStrippingStage.java
index ed76dbf..d8a7824 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/ElementsStrippingStage.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/ElementsStrippingStage.java
@@ -187,7 +187,7 @@ public class ElementsStrippingStage extends AbstractDOMTraversalStage<ElementsSt
     public synchronized void setElementNames(
             @Nonnull @NonnullElements @Unmodifiable @NotEmpty final Collection<String> names) {
         checkSetterPreconditions();
-        elementNames = Set.copyOf(names);
+        elementNames = CollectionSupport.copyToSet(names);
     }
 
     /**
@@ -236,7 +236,7 @@ public class ElementsStrippingStage extends AbstractDOMTraversalStage<ElementsSt
     }
 
     @Override
-    protected synchronized Context buildContext(@Nonnull final Item<Element> item) {
+    protected synchronized @Nonnull Context buildContext(@Nonnull final Item<Element> item) {
         return new Context(item, getElementNamespace(), getElementNames(), isWhitelisting());
     }
 
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/EmptyContainerStrippingStage.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/EmptyContainerStrippingStage.java
index 5981e69..e469259 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/EmptyContainerStrippingStage.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/EmptyContainerStrippingStage.java
@@ -112,6 +112,7 @@ public class EmptyContainerStrippingStage extends AbstractIteratingStage<Element
         // handled correctly.
         for (int eIndex = extensionList.getLength()-1; eIndex >= 0; eIndex--) {
             final Element extensions = (Element) extensionList.item(eIndex);
+            assert extensions != null;
             if (!hasChildElements(extensions)) {
                 extensions.getParentNode().removeChild(extensions);
             }
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/ContactPersonFilterStage.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/ContactPersonFilterStage.java
index c2cc867..41935f6 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/ContactPersonFilterStage.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/ContactPersonFilterStage.java
@@ -34,6 +34,7 @@ import net.shibboleth.metadata.pipeline.AbstractIteratingStage;
 import net.shibboleth.metadata.pipeline.StageProcessingException;
 import net.shibboleth.shared.annotation.constraint.NonnullElements;
 import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.logic.Constraint;
 import net.shibboleth.shared.primitive.LoggerFactory;
 import net.shibboleth.shared.primitive.StringSupport;
@@ -74,14 +75,15 @@ public class ContactPersonFilterStage extends AbstractIteratingStage<Element> {
 
     /** Allowed contact person types. */
     @Nonnull @NonnullElements @Unmodifiable
-    private static final Set<String> ALLOWED_TYPES = Set.of(TECHNICAL, SUPPORT, ADMINISTRATIVE, BILLING, OTHER);
+    private static final Set<String> ALLOWED_TYPES =
+        CollectionSupport.setOf(TECHNICAL, SUPPORT, ADMINISTRATIVE, BILLING, OTHER);
 
     /** Class logger. */
     private static final @Nonnull Logger LOG = LoggerFactory.getLogger(ContactPersonFilterStage.class);
 
     /** Person types which are white/black listed depending on the value of {@link #whitelistingTypes}. */
     @Nonnull @NonnullElements @Unmodifiable @GuardedBy("this")
-    private Set<String> designatedTypes = Set.copyOf(ALLOWED_TYPES);
+    private Set<String> designatedTypes = CollectionSupport.copyToSet(ALLOWED_TYPES);
 
     /** Whether {@link #designatedTypes} should be considered a whitelist. Default value: true */
     @GuardedBy("this") private boolean whitelistingTypes = true;
@@ -115,7 +117,7 @@ public class ContactPersonFilterStage extends AbstractIteratingStage<Element> {
             }
         }
 
-        designatedTypes = Set.copyOf(checkedTypes);
+        designatedTypes = CollectionSupport.copyToSet(checkedTypes);
     }
 
     /**
@@ -156,6 +158,7 @@ public class ContactPersonFilterStage extends AbstractIteratingStage<Element> {
     protected void processEntitiesDescriptor(@Nonnull final Element entitiesDescriptor) {
         final List<Element> children = ElementSupport.getChildElements(entitiesDescriptor);
         for (final Element child : children) {
+            assert child != null;
             if (SAMLMetadataSupport.isEntitiesDescriptor(child)) {
                 processEntitiesDescriptor(child);
             } else if (SAMLMetadataSupport.isEntityDescriptor(child)) {
@@ -178,6 +181,7 @@ public class ContactPersonFilterStage extends AbstractIteratingStage<Element> {
         if (!contactPersons.isEmpty()) {
             LOG.debug("{} pipeline stage filtering ContactPerson from EntityDescriptor {}", getId(), entityId);
             for (final Element contactPerson : contactPersons) {
+                assert contactPerson != null;
                 if (!isRetainedContactPersonType(contactPerson)) {
                     entityDescriptor.removeChild(contactPerson);
                 }
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/DiscoFeedCollectionSerializer.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/DiscoFeedCollectionSerializer.java
index 55a08a4..29e8613 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/DiscoFeedCollectionSerializer.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/DiscoFeedCollectionSerializer.java
@@ -129,6 +129,7 @@ public class DiscoFeedCollectionSerializer extends AbstractInitializableComponen
     @Nullable
     private Element findFirstUIInfo(@Nonnull @NonnullElements final List<Element> idpDescriptors) {
         for (final var idpDescriptor : idpDescriptors) {
+            assert idpDescriptor != null;
             final var uiInfo = SAMLMetadataSupport.getDescriptorExtension(idpDescriptor, MDUISupport.UIINFO_NAME);
             if (uiInfo != null) {
                 return uiInfo;
@@ -189,6 +190,7 @@ public class DiscoFeedCollectionSerializer extends AbstractInitializableComponen
             if (!attributes.isEmpty()) {
                 gen.writeStartArray("EntityAttributes");
                     for (final var attribute : attributes) {
+                        assert attribute != null;
                         final var values = ElementSupport.getChildElements(attribute, SAMLSupport.ATTRIBUTE_VALUE_NAME);
                         if (!values.isEmpty()) {
                             gen.writeStartObject();
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdattr/AbstractEntityAttributeMatcher.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdattr/AbstractEntityAttributeMatcher.java
index 838107f..8c7615e 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdattr/AbstractEntityAttributeMatcher.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdattr/AbstractEntityAttributeMatcher.java
@@ -73,7 +73,7 @@ public abstract class AbstractEntityAttributeMatcher implements Predicate<Entity
     protected abstract boolean matchRegistrationAuthority(@Nullable final String inputRegistrationAuthority);
 
     @Override
-    public boolean test(@Nonnull final EntityAttributeContext input) {
+    public boolean test(final EntityAttributeContext input) {
         return matchRegistrationAuthority(input.getRegistrationAuthority()) &&
                 matchAttributeNameFormat(input.getNameFormat()) &&
                 matchAttributeName(input.getName()) &&
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdattr/AbstractExactValueMatcher.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdattr/AbstractExactValueMatcher.java
index 65703fd..c179863 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdattr/AbstractExactValueMatcher.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdattr/AbstractExactValueMatcher.java
@@ -85,6 +85,7 @@ public abstract class AbstractExactValueMatcher extends AbstractEntityAttributeM
             // ignore the context's registration authority value
             return true;
         }
+        assert registrationAuthority != null;
         return registrationAuthority.equals(inputRegistrationAuthority);
     }
 
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdattr/MDAttrSupport.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdattr/MDAttrSupport.java
index dd4de35..c6c855e 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdattr/MDAttrSupport.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdattr/MDAttrSupport.java
@@ -20,6 +20,7 @@ package net.shibboleth.metadata.dom.saml.mdattr;
 import java.util.function.Function;
 import java.util.function.Predicate;
 
+import javax.annotation.Nonnull;
 import javax.annotation.concurrent.ThreadSafe;
 import javax.xml.namespace.QName;
 
@@ -38,20 +39,20 @@ import net.shibboleth.metadata.dom.ElementMatcher;
 public final class MDAttrSupport {
 
     /** MDAttr namespace. */
-    public static final String MDATTR_NS = "urn:oasis:names:tc:SAML:metadata:attribute";
+    public static final @Nonnull String MDATTR_NS = "urn:oasis:names:tc:SAML:metadata:attribute";
     
     /** MDAttr conventional prefix. */
-    public static final String MDATTR_PREFIX = "mdattr";
+    public static final @Nonnull String MDATTR_PREFIX = "mdattr";
 
     /** mdattr:EntityAttributes element. */
-    public static final QName ENTITY_ATTRIBUTES_NAME = new QName(MDATTR_NS, "EntityAttributes", MDATTR_PREFIX);
+    public static final @Nonnull QName ENTITY_ATTRIBUTES_NAME = new QName(MDATTR_NS, "EntityAttributes", MDATTR_PREFIX);
 
     /**
      * Matcher for the <code>EntityAttributes</code> element, for use with the {@link Container} system.
      *
      * @since 0.10.0
      */
-    public static final Predicate<Element> ENTITY_ATTRIBUTES_MATCHER =
+    public static final @Nonnull Predicate<Element> ENTITY_ATTRIBUTES_MATCHER =
             new ElementMatcher(ENTITY_ATTRIBUTES_NAME);
 
     /**
@@ -59,7 +60,7 @@ public final class MDAttrSupport {
      *
      * @since 0.10.0
      */
-    public static final Function<Container, Element> ENTITY_ATTRIBUTES_MAKER =
+    public static final @Nonnull Function<Container, Element> ENTITY_ATTRIBUTES_MAKER =
             new ElementMaker(ENTITY_ATTRIBUTES_NAME);
 
     /** Constructor. */
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdui/MDUISupport.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdui/MDUISupport.java
index b446e09..7dd89fd 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdui/MDUISupport.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdui/MDUISupport.java
@@ -17,6 +17,7 @@
 
 package net.shibboleth.metadata.dom.saml.mdui;
 
+import javax.annotation.Nonnull;
 import javax.annotation.concurrent.ThreadSafe;
 import javax.xml.namespace.QName;
 
@@ -25,35 +26,35 @@ import javax.xml.namespace.QName;
 public final class MDUISupport {
 
     /** MDUI namespace. */
-    public static final String MDUI_NS = "urn:oasis:names:tc:SAML:metadata:ui";
+    public static final @Nonnull String MDUI_NS = "urn:oasis:names:tc:SAML:metadata:ui";
 
     /** {@link QName} representing an <code>mdui:UIInfo</code>. */
-    public static final QName UIINFO_NAME = new QName(MDUI_NS, "UIInfo");
+    public static final @Nonnull QName UIINFO_NAME = new QName(MDUI_NS, "UIInfo");
     
     /** {@link QName} representing an <code>mdui:DisplayName</code>. */
-    public static final QName DISPLAYNAME_NAME = new QName(MDUI_NS, "DisplayName");
+    public static final @Nonnull QName DISPLAYNAME_NAME = new QName(MDUI_NS, "DisplayName");
     
     /** {@link QName} representing an <code>mdui:Description</code>. */
-    public static final QName DESCRIPTION_NAME = new QName(MDUI_NS, "Description");
+    public static final @Nonnull QName DESCRIPTION_NAME = new QName(MDUI_NS, "Description");
     
     /** {@link QName} representing an <code>mdui:Keywords</code>. */
-    public static final QName KEYWORDS_NAME = new QName(MDUI_NS, "Keywords");
+    public static final @Nonnull QName KEYWORDS_NAME = new QName(MDUI_NS, "Keywords");
     
     /** {@link QName} representing an <code>mdui:Logo</code>. */
-    public static final QName LOGO_NAME = new QName(MDUI_NS, "Logo");
+    public static final @Nonnull QName LOGO_NAME = new QName(MDUI_NS, "Logo");
     
     /** {@link QName} representing an <code>mdui:InformationURL</code>. */
-    public static final QName INFORMATIONURL_NAME = new QName(MDUI_NS, "InformationURL");
+    public static final @Nonnull QName INFORMATIONURL_NAME = new QName(MDUI_NS, "InformationURL");
     
     /** {@link QName} representing an <code>mdui:PrivacyStatementURL</code>. */
-    public static final QName PRIVACYSTATEMENTURL_NAME = new QName(MDUI_NS, "PrivacyStatementURL");
+    public static final @Nonnull QName PRIVACYSTATEMENTURL_NAME = new QName(MDUI_NS, "PrivacyStatementURL");
 
     /**
      * {@link QName} representing an <code>mdui:IPHint</code>.
      *
      * @since 0.10.0
      */
-    public static final QName IPHINT_NAME = new QName(MDUI_NS, "IPHint");
+    public static final @Nonnull QName IPHINT_NAME = new QName(MDUI_NS, "IPHint");
 
     /** Constructor. */
     private MDUISupport() {
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/pipeline/AbstractFilteringStage.java b/mda-framework/src/main/java/net/shibboleth/metadata/pipeline/AbstractFilteringStage.java
index ec3e4e9..3c08b92 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/pipeline/AbstractFilteringStage.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/pipeline/AbstractFilteringStage.java
@@ -53,6 +53,7 @@ public abstract class AbstractFilteringStage<T> extends AbstractStage<T> {
 
         while (itemIterator.hasNext()) {
             final Item<T> item = itemIterator.next();
+            assert item != null;
             if (!doExecute(item)) {
                 itemIterator.remove();
             }
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/pipeline/CompositeStage.java b/mda-framework/src/main/java/net/shibboleth/metadata/pipeline/CompositeStage.java
index f070182..a87dada 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/pipeline/CompositeStage.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/pipeline/CompositeStage.java
@@ -30,6 +30,7 @@ import org.slf4j.Logger;
 import net.shibboleth.metadata.Item;
 import net.shibboleth.shared.annotation.constraint.NonnullElements;
 import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.primitive.DeprecationSupport;
 import net.shibboleth.shared.primitive.DeprecationSupport.ObjectType;
@@ -70,7 +71,7 @@ public class CompositeStage<T> extends AbstractStage<T> implements Pipeline<T> {
 
     /** Stages which compose this stage. */
     @Nonnull @NonnullElements @Unmodifiable @GuardedBy("this")
-    private List<Stage<T>> composedStages = List.of();
+    private List<Stage<T>> composedStages = CollectionSupport.emptyList();
     
     /**
      * Whether we are logging progress through the stages.
@@ -104,7 +105,7 @@ public class CompositeStage<T> extends AbstractStage<T> implements Pipeline<T> {
     public final synchronized void setStages(
             @Nonnull @NonnullElements @Unmodifiable final List<Stage<T>> stages) {
         checkSetterPreconditions();
-        composedStages = List.copyOf(stages);
+        composedStages = CollectionSupport.copyToList(stages);
     }
 
     /**
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/validate/BaseValidator.java b/mda-framework/src/main/java/net/shibboleth/metadata/validate/BaseValidator.java
index 81e1a7b..4f778d9 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/validate/BaseValidator.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/validate/BaseValidator.java
@@ -83,7 +83,7 @@ public abstract class BaseValidator extends AbstractIdentifiableInitializableCom
      * 
      * @return composite component identifier
      */
-    private String makeComponentId(@Nonnull final String stageId) {
+    private @Nonnull String makeComponentId(@Nonnull final String stageId) {
         final String id = getId();
         if (id == null) {
             return stageId;
@@ -147,6 +147,7 @@ public abstract class BaseValidator extends AbstractIdentifiableInitializableCom
     protected void addErrorMessage(@Nonnull final Object extra, @Nonnull final Item<?> item,
             @Nonnull final String stageId) {
         final String mess = String.format(getMessage(), extra);
+        assert mess != null;
         addError(mess, item, stageId);
     }
 
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/validate/x509/AbstractX509Validator.java b/mda-framework/src/main/java/net/shibboleth/metadata/validate/x509/AbstractX509Validator.java
index 638a0ea..061c0ee 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/validate/x509/AbstractX509Validator.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/validate/x509/AbstractX509Validator.java
@@ -53,7 +53,7 @@ public abstract class AbstractX509Validator extends BaseValidator implements Val
             @Nonnull final String stageId) throws StageProcessingException;
 
     @Override
-    public Action validate(@Nonnull final X509Certificate cert, @Nonnull final Item<?> item,
+    public @Nonnull Action validate(@Nonnull final X509Certificate cert, @Nonnull final Item<?> item,
             @Nonnull final String stageId) throws StageProcessingException {
         doValidate(cert, item, stageId);
         return Action.CONTINUE;
diff --git a/mda-framework/src/test/java/net/shibboleth/metadata/BaseTest.java b/mda-framework/src/test/java/net/shibboleth/metadata/BaseTest.java
index 8e797df..425451a 100644
--- a/mda-framework/src/test/java/net/shibboleth/metadata/BaseTest.java
+++ b/mda-framework/src/test/java/net/shibboleth/metadata/BaseTest.java
@@ -24,27 +24,29 @@ import javax.annotation.Nonnull;
 import org.springframework.core.io.ClassPathResource;
 import org.springframework.core.io.Resource;
 
+import net.shibboleth.shared.logic.Constraint;
+
 public abstract class BaseTest {
 
     /** Class being tested. */
-    protected final Class<?> testingClass;
+    protected final @Nonnull Class<?> testingClass;
     
     /**
      * Base path for class-relative test resource references.
      * 
      * Will <em>not</em> end in a '/'.
      */
-    private final String baseClassPath;
+    private final @Nonnull String baseClassPath;
     
     /** Package for the class being tested. */
-    private final Package testingPackage;
+    private final @Nonnull Package testingPackage;
     
     /**
      * Base path for package-relative test resource references.
      * 
      * Will always end in a '/'.
      */
-    private final String basePackagePath;
+    private final @Nonnull String basePackagePath;
     
     /**
      * Constructor
@@ -53,9 +55,14 @@ public abstract class BaseTest {
      */
     protected BaseTest(final @Nonnull Class<?> clazz) {
         testingClass = clazz;
-        baseClassPath = nameToPath(testingClass.getName());
-        testingPackage = testingClass.getPackage();
-        basePackagePath = nameToPath(testingPackage.getName()) + "/";
+        final @Nonnull String testingClassName = Constraint.isNotNull(testingClass.getName(),
+                "testing class name can not be null");
+        baseClassPath = nameToPath(testingClassName);
+        testingPackage = Constraint.isNotNull(testingClass.getPackage(),
+                "testing class package can not be null");
+        final var testingPackageName = Constraint.isNotNull(testingPackage.getName(),
+                "testing package name can not be null");
+        basePackagePath = nameToPath(testingPackageName) + "/";
     }
     
     /**
@@ -65,7 +72,7 @@ public abstract class BaseTest {
      * @param name name to be converted
      * @return path to resources associated with the name
      */
-    private String nameToPath(final @Nonnull String name) {
+    private @Nonnull String nameToPath(final @Nonnull String name) {
         return "/" + name.replace('.', '/');
     }
         
@@ -82,7 +89,7 @@ public abstract class BaseTest {
         return baseClassPath + "-" + which;
     }
     
-    protected String simpleClassRelativeName(final String which) {
+    protected @Nonnull String simpleClassRelativeName(final String which) {
         return testingClass.getSimpleName() + "-" + which;
     }
         
@@ -95,7 +102,7 @@ public abstract class BaseTest {
      * @param which package-relative resource name
      * @return absolute resource name
      */
-    protected String packageRelativeResource(final String which) {
+    protected @Nonnull String packageRelativeResource(final String which) {
         return basePackagePath + which;
     }
     
diff --git a/mda-framework/src/test/java/net/shibboleth/metadata/BeansFileTest.java b/mda-framework/src/test/java/net/shibboleth/metadata/BeansFileTest.java
index 2e961e3..12ef6de 100644
--- a/mda-framework/src/test/java/net/shibboleth/metadata/BeansFileTest.java
+++ b/mda-framework/src/test/java/net/shibboleth/metadata/BeansFileTest.java
@@ -32,6 +32,7 @@ public class BeansFileTest {
 
         final String[] defNames = ctx.getBeanDefinitionNames();
         for (final String defName : defNames) {
+            assert defName != null;
             final BeanDefinition def = ctx.getBeanDefinition(defName);
 
             // All bean definitions should start with "mda."
@@ -94,6 +95,7 @@ public class BeansFileTest {
                 case "mda.MigrationBeanMap" -> {
                     final Map<String, String> map = ctx.getBean(defName, Map.class);
                     for (String toBean : map.values()) {
+                        assert toBean != null;
                         // check that the mapped bean name is defined
                         ctx.getBeanDefinition(toBean);
                     }
diff --git a/mda-framework/src/test/java/net/shibboleth/metadata/dom/BaseDOMTest.java b/mda-framework/src/test/java/net/shibboleth/metadata/dom/BaseDOMTest.java
index 87204fa..d4a0bea 100644
--- a/mda-framework/src/test/java/net/shibboleth/metadata/dom/BaseDOMTest.java
+++ b/mda-framework/src/test/java/net/shibboleth/metadata/dom/BaseDOMTest.java
@@ -69,7 +69,7 @@ public abstract class BaseDOMTest extends BaseTest {
      * 
      * @param clazz class under test
      */
-    protected BaseDOMTest(final Class<?> clazz) {
+    protected BaseDOMTest(final @Nonnull Class<?> clazz) {
         super(clazz);
     }
 
@@ -110,8 +110,7 @@ public abstract class BaseDOMTest extends BaseTest {
      * @throws XMLParserException thrown if the file does not exist or there is a problem parsing it
      */
     public @Nonnull Element readXMLData(final @Nonnull String path) throws XMLParserException {
-        @Nonnull String trimmedPath = StringSupport.trimOrNull(path);
-        Constraint.isNotNull(trimmedPath, "Path may not be null or empty");
+        @Nonnull String trimmedPath = Constraint.isNotNull(StringSupport.trimOrNull(path), "Path may not be null or empty");        
 
         if (!trimmedPath.startsWith("/")) {
             trimmedPath = classRelativeResource(trimmedPath);
@@ -138,7 +137,7 @@ public abstract class BaseDOMTest extends BaseTest {
      * 
      * @throws XMLParserException if the file does not exist or there is a problem parsing it
      */
-    public @Nonnull Item<Element> readDOMItem(final String path) throws XMLParserException {
+    public @Nonnull Item<Element> readDOMItem(final @Nonnull String path) throws XMLParserException {
         final Element e = readXMLData(path);
         return new DOMElementItem(e);
     }
diff --git a/mda-framework/src/test/java/net/shibboleth/metadata/dom/ContainerTest.java b/mda-framework/src/test/java/net/shibboleth/metadata/dom/ContainerTest.java
index d524b06..77f7bed 100644
--- a/mda-framework/src/test/java/net/shibboleth/metadata/dom/ContainerTest.java
+++ b/mda-framework/src/test/java/net/shibboleth/metadata/dom/ContainerTest.java
@@ -5,6 +5,8 @@ import java.util.List;
 import java.util.function.Function;
 import java.util.function.Predicate;
 
+import javax.annotation.Nonnull;
+
 import org.testng.Assert;
 import org.testng.annotations.Test;
 import org.w3c.dom.Document;
@@ -24,6 +26,7 @@ public class ContainerTest extends BaseDOMTest {
     public void prime() {
         // simple top-level element with no indentation
         final Element e1 = doc.createElementNS("ns", "el");
+        assert e1 != null;
         final Container c1 = new Container(e1);
         c1.prime();
         Assert.assertEquals(e1.getTextContent(), "\n");
@@ -48,6 +51,7 @@ public class ContainerTest extends BaseDOMTest {
     @Test
     public void addChildElementFirst() throws Exception {
         final Element e1 = doc.createElementNS("ns", "root");
+        assert e1 != null;
         final Element e2 = doc.createElementNS("ns", "child");
         e2.setTextContent("child value");
         final Container c1 = new Container(e1);
@@ -59,32 +63,35 @@ public class ContainerTest extends BaseDOMTest {
         final Element e3 = doc.createElementNS("ns", "child2");
         e3.setTextContent("child 2 value");
         c1.addChild(e3, Container.FIRST_CHILD);
-        final Element ok2 = readXMLData("addFirst.xml");
+        final var ok2 = readXMLData("addFirst.xml");
         assertXMLIdentical(ok2, e1);
     }
 
     @Test
     public void addChildElementLast() throws Exception {
         final Element e1 = doc.createElementNS("ns", "root");
+        assert e1 != null;
         final Element e2 = doc.createElementNS("ns", "child");
         e2.setTextContent("child value");
         final Container c1 = new Container(e1);
         c1.addChild(e2, Container.LAST_CHILD);
 
-        final Element ok = readXMLData("add1.xml");
+        final @Nonnull Element ok = readXMLData("add1.xml");
         assertXMLIdentical(ok, e1);
 
         final Element e3 = doc.createElementNS("ns", "child2");
         e3.setTextContent("child 2 value");
         c1.addChild(e3, Container.LAST_CHILD);
-        final Element ok2 = readXMLData("addLast.xml");
+        final var ok2 = readXMLData("addLast.xml");
         assertXMLIdentical(ok2, e1);
     }
 
     @Test
     public void addChildElementNested() throws Exception {
         final Element root = doc.createElementNS("ns", "root");
+        assert root != null;
         final Element mid = doc.createElementNS("ns", "mid");
+        assert mid != null;
         final Element leaf1 = doc.createElementNS("ns", "leaf");
         leaf1.setTextContent("leaf 1");
         final Element leaf2 = doc.createElementNS("ns", "leaf");
@@ -94,13 +101,14 @@ public class ContainerTest extends BaseDOMTest {
         midContainer.addChild(leaf1, Container.LAST_CHILD);
         midContainer.addChild(leaf2, Container.LAST_CHILD);
 
-        final Element ok = readXMLData("nested.xml");
+        final var ok = readXMLData("nested.xml");
         assertXMLIdentical(ok, root);
     }
 
     @Test
     public void addChildFunctionFirst() throws Exception {
         final Element e1 = doc.createElementNS("ns", "root");
+        assert e1 != null;
         final Container c1 = new Container(e1);
 
         c1.addChild(new Function<Container, Element>(){
@@ -135,6 +143,7 @@ public class ContainerTest extends BaseDOMTest {
     @Test
     public void addChildFunctionLast() throws Exception {
         final Element e1 = doc.createElementNS("ns", "root");
+        assert e1 != null;
         final Container c1 = new Container(e1);
 
         c1.addChild(new Function<Container, Element>(){
@@ -177,6 +186,7 @@ public class ContainerTest extends BaseDOMTest {
     @Test
     public void setText() {
         final Element e = doc.createElementNS("ns", "root");
+        assert e != null;
         final Container c = new Container(e);
         c.setText("some text");
         Assert.assertEquals(e.getTextContent(), "some text");
@@ -218,6 +228,7 @@ public class ContainerTest extends BaseDOMTest {
     @Test
     public void locateChild() throws Exception {
         final Element e1 = doc.createElementNS("ns", "root");
+        assert e1 != null;
         final Container c1 = new Container(e1);
 
         c1.locateChild(new Predicate<Element>(){
diff --git a/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/AttributeElementMakerTest.java b/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/AttributeElementMakerTest.java
index 29c4ac5..294f6b1 100644
--- a/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/AttributeElementMakerTest.java
+++ b/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/AttributeElementMakerTest.java
@@ -25,6 +25,7 @@ public class AttributeElementMakerTest extends BaseDOMTest {
     public void apply() {
         final var maker = new AttributeElementMaker("name", "nameFormat");
         final Element root = doc.createElementNS("ns", "root");
+        assert root != null;
         final Container rootContainer = new Container(root);
         final Element newElement = maker.apply(rootContainer);
         Assert.assertNotNull(newElement);
diff --git a/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/CRDetectionStageTest.java b/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/CRDetectionStageTest.java
index cd93214..9d42a01 100644
--- a/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/CRDetectionStageTest.java
+++ b/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/CRDetectionStageTest.java
@@ -22,6 +22,8 @@ import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
 
+import javax.annotation.Nonnull;
+
 import org.testng.Assert;
 import org.testng.annotations.Test;
 import org.w3c.dom.Comment;
@@ -93,12 +95,12 @@ public class CRDetectionStageTest extends BaseDOMTest {
         return item.getItemMetadata().get(ErrorStatus.class);
     }
 
-    private List<ErrorStatus> execute(final String filename) throws Exception {
+    private List<ErrorStatus> execute(final @Nonnull String filename) throws Exception {
         final Item<Element> item = readDOMItem(filename);
         return execute(item);
     }
     
-    private ErrorStatus expectError(final String filename, final String errorContains) throws Exception {
+    private ErrorStatus expectError(final @Nonnull String filename, final String errorContains) throws Exception {
         final List<ErrorStatus> errors = execute(filename);
         Assert.assertEquals(errors.size(), 1, "errors size on " + filename);
         final ErrorStatus error = errors.get(0);
@@ -107,7 +109,7 @@ public class CRDetectionStageTest extends BaseDOMTest {
         return error;
     }
 
-    private void expectErrorNoPrefix(final String filename, final String errorContains) throws Exception {
+    private void expectErrorNoPrefix(final @Nonnull String filename, final String errorContains) throws Exception {
         var error = expectError(filename, errorContains);
         Assert.assertFalse(error.getStatusMessage().contains(": "));
     }
diff --git a/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/ContactPersonFilterStageTest.java b/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/ContactPersonFilterStageTest.java
index 9cbf2be..b8c1c14 100644
--- a/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/ContactPersonFilterStageTest.java
+++ b/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/ContactPersonFilterStageTest.java
@@ -18,22 +18,21 @@
 package net.shibboleth.metadata.dom.saml;
 
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
-import java.util.Set;
 
+import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
 import net.shibboleth.metadata.Item;
 import net.shibboleth.metadata.dom.BaseDOMTest;
 import net.shibboleth.metadata.dom.DOMElementItem;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.component.DestroyedComponentException;
 import net.shibboleth.shared.component.UnmodifiableComponentException;
 import net.shibboleth.shared.xml.ElementSupport;
 
 import org.testng.Assert;
-import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 import org.w3c.dom.Element;
 
@@ -45,14 +44,8 @@ public class ContactPersonFilterStageTest extends BaseDOMTest {
         super(ContactPersonFilterStage.class);
     }
 
-    private final QName contactPersonQname = new QName(SAMLMetadataSupport.MD_NS, "ContactPerson");
+    private final @Nonnull QName contactPersonQname = new QName(SAMLMetadataSupport.MD_NS, "ContactPerson");
     
-    private Element entitiesDescriptor;
-
-    @BeforeClass public void setup() throws Exception {
-        entitiesDescriptor = readXMLData("entities.xml");
-    }
-
     @Test public void testDesignatedTypes() throws ComponentInitializationException {
         ContactPersonFilterStage stage = new ContactPersonFilterStage();
         stage.setId("foo");
@@ -63,19 +56,19 @@ public class ContactPersonFilterStageTest extends BaseDOMTest {
         Assert.assertTrue(stage.getDesignatedTypes().contains(ContactPersonFilterStage.SUPPORT));
         Assert.assertTrue(stage.getDesignatedTypes().contains(ContactPersonFilterStage.TECHNICAL));
 
-        stage.setDesignatedTypes(Set.of(ContactPersonFilterStage.ADMINISTRATIVE,
+        stage.setDesignatedTypes(CollectionSupport.setOf(ContactPersonFilterStage.ADMINISTRATIVE,
                 ContactPersonFilterStage.TECHNICAL, "", "foo", ContactPersonFilterStage.OTHER));
         Assert.assertEquals(stage.getDesignatedTypes().size(), 3);
         Assert.assertTrue(stage.getDesignatedTypes().contains(ContactPersonFilterStage.ADMINISTRATIVE));
         Assert.assertTrue(stage.getDesignatedTypes().contains(ContactPersonFilterStage.OTHER));
         Assert.assertTrue(stage.getDesignatedTypes().contains(ContactPersonFilterStage.TECHNICAL));
 
-        stage.setDesignatedTypes(Collections.<String>emptyList());
+        stage.setDesignatedTypes(CollectionSupport.<String>emptyList());
         Assert.assertEquals(stage.getDesignatedTypes().size(), 0);
 
         stage.initialize();
         try {
-            stage.setDesignatedTypes(Set.of(ContactPersonFilterStage.ADMINISTRATIVE));
+            stage.setDesignatedTypes(CollectionSupport.setOf(ContactPersonFilterStage.ADMINISTRATIVE));
             Assert.fail();
         } catch (UnmodifiableComponentException e) {
             Assert.assertEquals(stage.getDesignatedTypes().size(), 0);
@@ -84,7 +77,7 @@ public class ContactPersonFilterStageTest extends BaseDOMTest {
         stage = new ContactPersonFilterStage();
         stage.destroy();
         try {
-            stage.setDesignatedTypes(Set.of(ContactPersonFilterStage.ADMINISTRATIVE));
+            stage.setDesignatedTypes(CollectionSupport.setOf(ContactPersonFilterStage.ADMINISTRATIVE));
             Assert.fail();
         } catch (DestroyedComponentException e) {
             // expected this
@@ -126,6 +119,7 @@ public class ContactPersonFilterStageTest extends BaseDOMTest {
     }
     
     @Test public void testWhitelistContactPersons() throws Exception {
+        final @Nonnull var entitiesDescriptor = readXMLData("entities.xml");
         ContactPersonFilterStage stage = new ContactPersonFilterStage();
         stage.setId("foo");
         stage.initialize();
@@ -139,22 +133,26 @@ public class ContactPersonFilterStageTest extends BaseDOMTest {
         List<Element> entityDescriptors = ElementSupport.getChildElements(filteredEntitiesDescriptor);
         
         Element idpDescriptor = entityDescriptors.get(0);
+        assert idpDescriptor != null;
         List<Element> contactPersons = ElementSupport.getChildElements(idpDescriptor, contactPersonQname);
         Assert.assertEquals(contactPersons.size(), 1);
         
         Element issuesDescriptor = entityDescriptors.get(1);
+        assert issuesDescriptor != null;
         contactPersons = ElementSupport.getChildElements(issuesDescriptor, contactPersonQname);
         Assert.assertEquals(contactPersons.size(), 5);
         
         Element wikiDescriptor = entityDescriptors.get(2);
+        assert wikiDescriptor != null;
         contactPersons = ElementSupport.getChildElements(wikiDescriptor, contactPersonQname);
         Assert.assertEquals(contactPersons.size(), 0);
     }
     
     @Test public void testBlacklistContactPersons() throws Exception {
+        final @Nonnull var entitiesDescriptor = readXMLData("entities.xml");
         ContactPersonFilterStage stage = new ContactPersonFilterStage();
         stage.setId("foo");
-        stage.setDesignatedTypes(Set.of(ContactPersonFilterStage.ADMINISTRATIVE, ContactPersonFilterStage.OTHER));
+        stage.setDesignatedTypes(CollectionSupport.setOf(ContactPersonFilterStage.ADMINISTRATIVE, ContactPersonFilterStage.OTHER));
         stage.setWhitelistingTypes(false);
         stage.initialize();
 
@@ -167,14 +165,17 @@ public class ContactPersonFilterStageTest extends BaseDOMTest {
         List<Element> entityDescriptors = ElementSupport.getChildElements(filteredEntitiesDescriptor);
         
         Element idpDescriptor = entityDescriptors.get(0);
+        assert idpDescriptor != null;
         List<Element> contactPersons = ElementSupport.getChildElements(idpDescriptor, contactPersonQname);
         Assert.assertEquals(contactPersons.size(), 1);
         
         Element issuesDescriptor = entityDescriptors.get(1);
+        assert issuesDescriptor != null;
         contactPersons = ElementSupport.getChildElements(issuesDescriptor, contactPersonQname);
         Assert.assertEquals(contactPersons.size(), 3);
         
         Element wikiDescriptor = entityDescriptors.get(2);
+        assert wikiDescriptor !=  null;
         contactPersons = ElementSupport.getChildElements(wikiDescriptor, contactPersonQname);
         Assert.assertEquals(contactPersons.size(), 0);
     }
@@ -183,7 +184,7 @@ public class ContactPersonFilterStageTest extends BaseDOMTest {
     public void mda243() throws Exception {
         final var stage = new ContactPersonFilterStage();
         stage.setId("test");
-        stage.setDesignatedTypes(Set.of(ContactPersonFilterStage.ADMINISTRATIVE, ContactPersonFilterStage.OTHER));
+        stage.setDesignatedTypes(CollectionSupport.setOf(ContactPersonFilterStage.ADMINISTRATIVE, ContactPersonFilterStage.OTHER));
         stage.initialize();
         final var types = stage.getDesignatedTypes();
         Assert.assertEquals(types.size(), 2);
diff --git a/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/DiscoFeedCollectionSerializerTest.java b/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/DiscoFeedCollectionSerializerTest.java
index e7e0380..2b4bdf3 100644
--- a/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/DiscoFeedCollectionSerializerTest.java
+++ b/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/DiscoFeedCollectionSerializerTest.java
@@ -5,9 +5,9 @@ import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.StringReader;
 import java.util.ArrayList;
-import java.util.List;
 
 import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
 import javax.json.Json;
 import javax.json.JsonArray;
 import javax.json.JsonObject;
@@ -42,15 +42,18 @@ public class DiscoFeedCollectionSerializerTest extends BaseDOMTest {
         Assert.assertEquals(array.size(), 0);
     }
 
-    private JsonArray fetchJSONArray(@Nonnull final String path) throws IOException {
+    private @Nonnull JsonArray fetchJSONArray(@Nonnull final String path) throws IOException {
         try (var in = BaseDOMTest.class.getResourceAsStream(classRelativeResource(path))) {
             try (var reader = Json.createReader(in)) {
-                return reader.readArray();
+                var array = reader.readArray();
+                assert array != null;
+                return array;
             }
         }
     }
 
-    private void checkEntity(@Nonnull final JsonObject entity) {
+    private void checkEntity(@Nullable final JsonObject entity) {
+        assert entity != null;
         Assert.assertEquals(entity.getString("entityID"), "https://idp.example.com/idp/shibboleth");
     }
 
@@ -111,7 +114,7 @@ public class DiscoFeedCollectionSerializerTest extends BaseDOMTest {
             throws IOException, XMLParserException {
         final String output;
         try (final var out = new ByteArrayOutputStream()) {
-            ser.serializeCollection(List.of(readDOMItem(name + ".xml")), out);
+            ser.serializeCollection(CollectionSupport.listOf(readDOMItem(name + ".xml")), out);
             output = out.toString();
         }
         //System.out.println(output);
@@ -222,7 +225,7 @@ public class DiscoFeedCollectionSerializerTest extends BaseDOMTest {
         ser.initialize();
         final String output;
         try (final var out = new ByteArrayOutputStream()) {
-            ser.serializeCollection(List.of(readDOMItem("noidp.xml")), out);
+            ser.serializeCollection(CollectionSupport.listOf(readDOMItem("noidp.xml")), out);
             output = out.toString();
         }
         Assert.assertEquals(output, "[]");
@@ -235,7 +238,7 @@ public class DiscoFeedCollectionSerializerTest extends BaseDOMTest {
         ser.initialize();
         final String output;
         try (final var out = new ByteArrayOutputStream()) {
-            ser.serializeCollection(List.of(readDOMItem("nonentity.xml")), out);
+            ser.serializeCollection(CollectionSupport.listOf(readDOMItem("nonentity.xml")), out);
             output = out.toString();
         }
         Assert.assertEquals(output, "[]");
@@ -287,6 +290,7 @@ public class DiscoFeedCollectionSerializerTest extends BaseDOMTest {
         }
         final var read = Json.createReader(new StringReader(output));
         final var array = read.readArray();
+        assert array != null;
 
         final var expected = fetchJSONArray("all.json");
         compareCollections(array, expected);
diff --git a/mda-framework/src/test/java/net/shibboleth/metadata/pipeline/CompositeStageTest.java b/mda-framework/src/test/java/net/shibboleth/metadata/pipeline/CompositeStageTest.java
index 6f6c0c0..829edeb 100644
--- a/mda-framework/src/test/java/net/shibboleth/metadata/pipeline/CompositeStageTest.java
+++ b/mda-framework/src/test/java/net/shibboleth/metadata/pipeline/CompositeStageTest.java
@@ -1,8 +1,6 @@
 
 package net.shibboleth.metadata.pipeline;
 
-import java.util.List;
-
 import org.slf4j.LoggerFactory;
 import org.testng.Assert;
 import org.testng.annotations.AfterMethod;
@@ -16,6 +14,7 @@ import ch.qos.logback.core.read.ListAppender;
 import net.shibboleth.metadata.Item;
 import net.shibboleth.metadata.MockItem;
 import net.shibboleth.metadata.TestMarker;
+import net.shibboleth.shared.collection.CollectionSupport;
 
 public class CompositeStageTest {
 
@@ -48,7 +47,7 @@ public class CompositeStageTest {
         stage.initialize();
         Assert.assertEquals(stage.getStages().size(), 0);
         
-        final var items = List.<Item<String>>of(new MockItem("hello"));
+        final var items = CollectionSupport.<Item<String>>listOf(new MockItem("hello"));
         stage.execute(items);
         Assert.assertEquals(items.size(), 1);
         // No stages --> no errors added
@@ -63,11 +62,11 @@ public class CompositeStageTest {
 
         final var stage = new CompositeStage<String>();
         stage.setId("test");
-        stage.setStages(List.of(marker));
+        stage.setStages(CollectionSupport.listOf(marker));
         stage.initialize();
         Assert.assertEquals(stage.getStages().size(), 1);
 
-        final var items = List.<Item<String>>of(new MockItem("hello"));
+        final var items = CollectionSupport.<Item<String>>listOf(new MockItem("hello"));
         stage.execute(items);
         Assert.assertEquals(items.size(), 1);
         // One stage --> one error added
@@ -82,11 +81,11 @@ public class CompositeStageTest {
 
         final var stage = new CompositeStage<String>();
         stage.setId("test");
-        stage.setStages(List.of(marker, marker));
+        stage.setStages(CollectionSupport.listOf(marker, marker));
         stage.initialize();
         Assert.assertEquals(stage.getStages().size(), 2);
 
-        final var items = List.<Item<String>>of(new MockItem("hello"));
+        final var items = CollectionSupport.<Item<String>>listOf(new MockItem("hello"));
         stage.execute(items);
         Assert.assertEquals(items.size(), 1);
         // Two stages --> two errors added
@@ -109,12 +108,12 @@ public class CompositeStageTest {
 
         final var stage = new CompositeStage<String>();
         stage.setId("test");
-        stage.setStages(List.of(marker, marker));
+        stage.setStages(CollectionSupport.listOf(marker, marker));
         stage.initialize();
         Assert.assertFalse(stage.isLoggingProgress());
         Assert.assertEquals(stage.getStages().size(), 2);
 
-        final var items = List.<Item<String>>of(new MockItem("hello"));
+        final var items = CollectionSupport.<Item<String>>listOf(new MockItem("hello"));
         stage.execute(items);
         stage.destroy();
         
@@ -133,13 +132,13 @@ public class CompositeStageTest {
 
         final var stage = new CompositeStage<String>();
         stage.setId("test");
-        stage.setStages(List.of(marker, marker));
+        stage.setStages(CollectionSupport.listOf(marker, marker));
         stage.setLoggingProgress(true);
         stage.initialize();
         Assert.assertTrue(stage.isLoggingProgress());
         Assert.assertEquals(stage.getStages().size(), 2);
 
-        final var items = List.<Item<String>>of(new MockItem("hello"));
+        final var items = CollectionSupport.<Item<String>>listOf(new MockItem("hello"));
         stage.execute(items);
         stage.destroy();
         
@@ -163,7 +162,7 @@ public class CompositeStageTest {
         stage.setId("test");
         Assert.assertEquals(stage.getComposedStages().size(), 0);
 
-        stage.setComposedStages(List.of(marker));
+        stage.setComposedStages(CollectionSupport.listOf(marker));
         Assert.assertEquals(stage.getStages().size(), 1);
 
         stage.destroy();

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


More information about the commits mailing list