[java-metadata-aggregator] branch main updated: MDA-211 - Refactor getEntityID and ENTITYID_ATTRIB_NAME

Ian Young ian at iay.org.uk
Fri Feb 2 14:46:32 UTC 2024


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=f7558107d275ec4df317f7d505d68cf476662ecd

The following commit(s) were added to refs/heads/main by this push:
     new f755810  MDA-211 - Refactor getEntityID and ENTITYID_ATTRIB_NAME
f755810 is described below

commit f7558107d275ec4df317f7d505d68cf476662ecd
Author: Ian Young <ian at iay.org.uk>
AuthorDate: Fri Feb 2 14:46:25 2024 +0000

    MDA-211 - Refactor getEntityID and ENTITYID_ATTRIB_NAME
    
    https://shibboleth.atlassian.net/browse/MDA-211
---
 .../metadata/dom/saml/ContactPersonFilterStage.java       |  2 +-
 .../metadata/dom/saml/DiscoFeedCollectionSerializer.java  |  2 +-
 .../dom/saml/DuplicateEntityInAggregateCheckingStage.java |  3 +--
 .../dom/saml/EntityDescriptorItemIdPopulationStage.java   |  4 +---
 .../shibboleth/metadata/dom/saml/EntityFilterStage.java   |  2 +-
 .../metadata/dom/saml/EntityRoleFilterStage.java          |  2 +-
 .../metadata/dom/saml/RemoveOrganizationStage.java        |  2 +-
 .../shibboleth/metadata/dom/saml/SAMLMetadataSupport.java | 15 +++++++++++++++
 .../saml/mdrpi/RegistrationAuthorityPopulationStage.java  |  2 +-
 .../metadata/dom/StringAttributeValidationStageTest.java  |  2 +-
 .../saml/EntityDescriptorItemIdPopulationStageTest.java   | 12 ++++++------
 11 files changed, 30 insertions(+), 18 deletions(-)

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 2f9b3d1..18d952a 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
@@ -170,7 +170,7 @@ public class ContactPersonFilterStage extends AbstractIteratingStage<Element> {
      * @param entityDescriptor entity descriptor being processed
      */
     protected void processEntityDescriptor(@Nonnull final Element entityDescriptor) {
-        final String entityId = entityDescriptor.getAttributeNS(null, "entityID");
+        final String entityId = SAMLMetadataSupport.getEntityID(entityDescriptor);
 
         final List<Element> contactPersons =
                 ElementSupport
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 bc47324..9084881 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
@@ -285,7 +285,7 @@ public class DiscoFeedCollectionSerializer extends AbstractInitializableComponen
                             ElementSupport.getChildElements(entity, SAMLMetadataSupport.IDP_SSO_DESCRIPTOR_NAME);
                     if (!idpDescriptors.isEmpty()) {
                         gen.writeStartObject();
-                            gen.write("entityID", entity.getAttributeNS(null, "entityID"));
+                            gen.write("entityID", SAMLMetadataSupport.getEntityID(entity));
                             final var uiInfo = findFirstUIInfo(idpDescriptors);
                             writeDisplayNames(gen, entity, uiInfo);
                             if (uiInfo != null) {
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/DuplicateEntityInAggregateCheckingStage.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/DuplicateEntityInAggregateCheckingStage.java
index 3a0bb1d..e63fbcd 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/DuplicateEntityInAggregateCheckingStage.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/DuplicateEntityInAggregateCheckingStage.java
@@ -25,7 +25,6 @@ import net.shibboleth.metadata.ErrorStatus;
 import net.shibboleth.metadata.Item;
 import net.shibboleth.metadata.pipeline.AbstractIteratingStage;
 import net.shibboleth.metadata.pipeline.StageProcessingException;
-import net.shibboleth.shared.xml.AttributeSupport;
 
 /**
  * A stage which detects duplication of <code>entityID</code> values in
@@ -60,7 +59,7 @@ public class DuplicateEntityInAggregateCheckingStage extends AbstractIteratingSt
         for (int eIndex = 0; eIndex < count; eIndex++) {
             final Element entity = (Element) eList.item(eIndex);
             assert entity != null;
-            final var id = AttributeSupport.getAttributeValue(entity, null, "entityID");
+            final var id = SAMLMetadataSupport.getEntityID(entity);
             if (id != null) {
                 if (ids.contains(id)) {
                     // Report duplicate, but only once.
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/EntityDescriptorItemIdPopulationStage.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/EntityDescriptorItemIdPopulationStage.java
index 55c9b39..f04e957 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/EntityDescriptorItemIdPopulationStage.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/EntityDescriptorItemIdPopulationStage.java
@@ -24,7 +24,6 @@ import net.shibboleth.metadata.ItemId;
 import net.shibboleth.metadata.pipeline.AbstractIteratingStage;
 import net.shibboleth.metadata.pipeline.StageProcessingException;
 import net.shibboleth.shared.primitive.StringSupport;
-import net.shibboleth.shared.xml.AttributeSupport;
 
 /**
  * A stage which, for each EntityDescriptor collection element, adds an {@link ItemId}, with the entity's entity ID, to
@@ -51,8 +50,7 @@ public class EntityDescriptorItemIdPopulationStage extends AbstractIteratingStag
         final Element metadataElement = item.unwrap();
 
         if (SAMLMetadataSupport.isEntityDescriptor(metadataElement)) {
-            final String entityId = StringSupport.trimOrNull(
-                    AttributeSupport.getAttributeValue(metadataElement, null, "entityID"));
+            final String entityId = StringSupport.trimOrNull(SAMLMetadataSupport.getEntityID(metadataElement));
             if (entityId != null) {
                 item.getItemMetadata().put(new ItemId(entityId));
             }
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/EntityFilterStage.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/EntityFilterStage.java
index 630d279..84a7f02 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/EntityFilterStage.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/EntityFilterStage.java
@@ -175,7 +175,7 @@ public class EntityFilterStage extends AbstractFilteringStage<Element> {
      * @return true if the given entity descriptor itself should be filtered out, false otherwise
      */
     protected boolean processEntityDescriptor(@Nonnull final Element entityDescriptor) {
-        final String entityId = entityDescriptor.getAttributeNS(null, "entityID");
+        final String entityId = SAMLMetadataSupport.getEntityID(entityDescriptor);
 
         // if we're whitelisting entities and this entity isn't in the list, kick it out
         if (isWhitelistingEntities() && !getDesignatedEntities().contains(entityId)) {
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/EntityRoleFilterStage.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/EntityRoleFilterStage.java
index dea080c..3b9432d 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/EntityRoleFilterStage.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/EntityRoleFilterStage.java
@@ -225,7 +225,7 @@ public class EntityRoleFilterStage extends AbstractFilteringStage<Element> {
             return false;
         }
 
-        final String entityId = entityDescriptor.getAttributeNS(null, "entityID");
+        final String entityId = SAMLMetadataSupport.getEntityID(entityDescriptor);
         assert entityId != null;
 
         LOG.debug("{} pipeline stage filtering roles from EntityDescriptor {}", getId(), entityId);
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/RemoveOrganizationStage.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/RemoveOrganizationStage.java
index 95f2df2..3b7bf81 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/RemoveOrganizationStage.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/RemoveOrganizationStage.java
@@ -69,7 +69,7 @@ public class RemoveOrganizationStage extends AbstractIteratingStage<Element> {
      * @param entityDescriptor entity descriptor being processed
      */
     protected void processEntityDescriptor(@Nonnull final Element entityDescriptor) {
-        final String entityId = entityDescriptor.getAttributeNS(null, "entityID");
+        final String entityId = SAMLMetadataSupport.getEntityID(entityDescriptor);
 
         final List<Element> organizations =
                 ElementSupport.getChildElementsByTagNameNS(entityDescriptor, SAMLMetadataSupport.MD_NS, "Organization");
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/SAMLMetadataSupport.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/SAMLMetadataSupport.java
index e14ade3..8bc7a2d 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/SAMLMetadataSupport.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/SAMLMetadataSupport.java
@@ -26,6 +26,7 @@ import org.w3c.dom.Element;
 
 import net.shibboleth.metadata.dom.ds.XMLDSIGSupport;
 import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.xml.AttributeSupport;
 import net.shibboleth.shared.xml.ElementSupport;
 
 /** Helper class for dealing with SAML metadata. */
@@ -53,6 +54,9 @@ public final class SAMLMetadataSupport {
     /** cacheDuration attribute name. */
     public static final @Nonnull QName CACHE_DURATION_ATTRIB_NAME = new QName("cacheDuration");
 
+    /** entityID attribute name. */
+    public static final @Nonnull QName ENTITYID_ATTRIB_NAME = new QName("entityID");
+
     /**
      * QName of the RoleDescriptor element.
      *
@@ -260,4 +264,15 @@ public final class SAMLMetadataSupport {
 
         ElementSupport.appendChildElement(extensionsElement, extension);
     }
+    
+    /**
+     * Return the {@code entityID} attribute from an entity descriptor,
+     * or {@code null} if it doesn't have one.
+     *
+     * @param entity {@link Element} from which to extract the {@code entityID}
+     * @return the {@code entityID}, or {@code null}
+     */
+    public static @Nullable String getEntityID(final @Nonnull Element entity) {
+        return AttributeSupport.getAttributeValue(entity, ENTITYID_ATTRIB_NAME);
+    }
 }
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdrpi/RegistrationAuthorityPopulationStage.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdrpi/RegistrationAuthorityPopulationStage.java
index ebc69fc..d36ad0b 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdrpi/RegistrationAuthorityPopulationStage.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdrpi/RegistrationAuthorityPopulationStage.java
@@ -53,7 +53,7 @@ public class RegistrationAuthorityPopulationStage extends AbstractIteratingStage
                // Extract registrationAuthority
                final String attr = AttributeSupport.getAttributeValue(regInfo, null, "registrationAuthority");
                if (attr == null) {
-                   final String eid = entity.getAttribute("entityID");
+                   final String eid = SAMLMetadataSupport.getEntityID(entity);
                    metadata.put(new ErrorStatus(ensureId(), "RegistrationInfo for " + eid +
                            " did not have a registrationAuthority attribute"));
                } else {
diff --git a/mda-framework/src/test/java/net/shibboleth/metadata/dom/StringAttributeValidationStageTest.java b/mda-framework/src/test/java/net/shibboleth/metadata/dom/StringAttributeValidationStageTest.java
index 0502817..60c5089 100644
--- a/mda-framework/src/test/java/net/shibboleth/metadata/dom/StringAttributeValidationStageTest.java
+++ b/mda-framework/src/test/java/net/shibboleth/metadata/dom/StringAttributeValidationStageTest.java
@@ -136,7 +136,7 @@ public class StringAttributeValidationStageTest extends BaseDOMTest {
         elements.add(new QName(SAMLMetadataSupport.MD_NS, "AssertionConsumerService"));
         elements.add(SAMLMetadataSupport.ORGANIZATIONNAME_NAME);
         var attributes = new HashSet<QName>();
-        attributes.add(new QName("entityID"));
+        attributes.add(SAMLMetadataSupport.ENTITYID_ATTRIB_NAME);
         attributes.add(new QName("index"));
         attributes.add(XMLConstants.XML_LANG_ATTRIB_NAME);
 
diff --git a/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/EntityDescriptorItemIdPopulationStageTest.java b/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/EntityDescriptorItemIdPopulationStageTest.java
index 786d559..2d2ff2f 100644
--- a/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/EntityDescriptorItemIdPopulationStageTest.java
+++ b/mda-framework/src/test/java/net/shibboleth/metadata/dom/saml/EntityDescriptorItemIdPopulationStageTest.java
@@ -17,15 +17,15 @@ package net.shibboleth.metadata.dom.saml;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.testng.Assert;
+import org.testng.annotations.Test;
+import org.w3c.dom.Element;
+
 import net.shibboleth.metadata.Item;
 import net.shibboleth.metadata.ItemId;
 import net.shibboleth.metadata.dom.DOMElementItem;
 import net.shibboleth.metadata.dom.testing.BaseDOMTest;
 
-import org.testng.Assert;
-import org.testng.annotations.Test;
-import org.w3c.dom.Element;
-
 /** Unit test for {@link EntityDescriptorItemIdPopulationStage}. */
 public class EntityDescriptorItemIdPopulationStageTest extends BaseDOMTest {
 
@@ -93,7 +93,7 @@ public class EntityDescriptorItemIdPopulationStageTest extends BaseDOMTest {
         Assert.assertEquals(itemIds.size(), 1);
 
         ItemId itemId = itemIds.get(0);
-        Assert.assertEquals(itemId.getId(), entityDescriptor.getAttributeNS(null, "entityID"));
+        Assert.assertEquals(itemId.getId(), SAMLMetadataSupport.getEntityID(entityDescriptor));
     }
 
     /**
@@ -124,7 +124,7 @@ public class EntityDescriptorItemIdPopulationStageTest extends BaseDOMTest {
             Assert.assertEquals(itemIds.size(), 1);
 
             itemId = itemIds.get(0);
-            Assert.assertEquals(itemId.getId(), entityDescriptor.getAttributeNS(null, "entityID"));
+            Assert.assertEquals(itemId.getId(), SAMLMetadataSupport.getEntityID(entityDescriptor));
         }
     }
 

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


More information about the commits mailing list