[java-metadata-aggregator] 02/02: Adapt to upstream immutability contract changes
Ian Young
ian at iay.org.uk
Wed Mar 8 10:49:50 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=9e28b7b641a540fdf10a8bf593b509f591602cfb
commit 9e28b7b641a540fdf10a8bf593b509f591602cfb
Author: Ian Young <ian at iay.org.uk>
AuthorDate: Wed Mar 8 10:49:39 2023 +0000
Adapt to upstream immutability contract changes
---
.../metadata/dom/saml/EntityFilterStage.java | 20 +++++------
.../metadata/dom/saml/EntityRoleFilterStage.java | 42 ++++++++++------------
.../EntityRegistrationAuthorityFilterStage.java | 19 +++++-----
3 files changed, 34 insertions(+), 47 deletions(-)
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 98c50e3..5087234 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
@@ -140,33 +140,29 @@ public class EntityFilterStage extends AbstractFilteringStage<Element> {
* @return true if the descriptor should be removed, false otherwise
*/
protected boolean processEntitiesDescriptor(@Nonnull final Element entitiesDescriptor) {
- Iterator<Element> descriptorItr;
- Element descriptor;
+ boolean remove = true;
final List<Element> childEntitiesDescriptors =
ElementSupport.getChildElements(entitiesDescriptor, SAMLMetadataSupport.ENTITIES_DESCRIPTOR_NAME);
- descriptorItr = childEntitiesDescriptors.iterator();
- while (descriptorItr.hasNext()) {
- descriptor = descriptorItr.next();
+ for (final var descriptor : childEntitiesDescriptors) {
if (processEntitiesDescriptor(descriptor)) {
entitiesDescriptor.removeChild(descriptor);
- descriptorItr.remove();
+ } else {
+ remove = false;
}
}
final List<Element> childEntityDescriptors =
ElementSupport.getChildElements(entitiesDescriptor, SAMLMetadataSupport.ENTITY_DESCRIPTOR_NAME);
- descriptorItr = childEntityDescriptors.iterator();
- while (descriptorItr.hasNext()) {
- descriptor = descriptorItr.next();
+ for (final var descriptor : childEntityDescriptors) {
if (processEntityDescriptor(descriptor)) {
entitiesDescriptor.removeChild(descriptor);
- descriptorItr.remove();
+ } else {
+ remove = false;
}
}
- if (childEntitiesDescriptors.isEmpty() && childEntityDescriptors.isEmpty()
- && isRemovingEntitylessEntitiesDescriptor()) {
+ if (remove && isRemovingEntitylessEntitiesDescriptor()) {
return true;
}
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 caf301b..310220a 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
@@ -185,32 +185,29 @@ public class EntityRoleFilterStage extends AbstractFilteringStage<Element> {
* @return true if the descriptor should be removed, false otherwise
*/
protected boolean processEntitiesDescriptor(@Nonnull final Element entitiesDescriptor) {
- Iterator<Element> descriptorItr;
+ boolean remove = true;
final List<Element> childEntitiesDescriptors =
ElementSupport.getChildElements(entitiesDescriptor, SAMLMetadataSupport.ENTITIES_DESCRIPTOR_NAME);
- descriptorItr = childEntitiesDescriptors.iterator();
- while (descriptorItr.hasNext()) {
- final var descriptor = descriptorItr.next();
+ for (final var descriptor : childEntitiesDescriptors) {
if (processEntitiesDescriptor(descriptor)) {
entitiesDescriptor.removeChild(descriptor);
- descriptorItr.remove();
+ } else {
+ remove = false;
}
}
final List<Element> childEntityDescriptors =
ElementSupport.getChildElements(entitiesDescriptor, SAMLMetadataSupport.ENTITY_DESCRIPTOR_NAME);
- descriptorItr = childEntityDescriptors.iterator();
- while (descriptorItr.hasNext()) {
- final var descriptor = descriptorItr.next();
+ for (final var descriptor : childEntityDescriptors) {
if (processEntityDescriptor(descriptor)) {
entitiesDescriptor.removeChild(descriptor);
- descriptorItr.remove();
+ } else {
+ remove = false;
}
}
- if (childEntitiesDescriptors.isEmpty() && childEntityDescriptors.isEmpty()
- && isRemovingEntitylessEntitiesDescriptor()) {
+ if (remove && isRemovingEntitylessEntitiesDescriptor()) {
return true;
}
@@ -234,8 +231,8 @@ public class EntityRoleFilterStage extends AbstractFilteringStage<Element> {
log.debug("{} pipeline stage filtering roles from EntityDescriptor {}", getId(), entityId);
- final List<Element> roles = getFilteredRoles(entityId, entityDescriptor);
- if (roles.isEmpty() && isRemovingRolelessEntities()) {
+ final boolean hasRoles = hasFilteredRoles(entityId, entityDescriptor);
+ if (!hasRoles && isRemovingRolelessEntities()) {
return true;
}
@@ -243,19 +240,17 @@ public class EntityRoleFilterStage extends AbstractFilteringStage<Element> {
}
/**
- * Iterates over the roles of a EntitiesDescriptor, filters out the appropriate ones and returns the rest.
+ * Iterates over the roles of an EntityDescriptor and filters out the appropriate ones.
*
* @param entityId ID of the entity whose roles are being processed
* @param entityDescriptor descriptor of entity whose roles are being processed
*
- * @return the list of roles remaining after processing
+ * @return <code>true</code> if the EntityDescriptor has any roles remaining after processing
*/
- protected List<Element> getFilteredRoles(@Nonnull final String entityId, @Nonnull final Element entityDescriptor) {
+ private boolean hasFilteredRoles(@Nonnull final String entityId, @Nonnull final Element entityDescriptor) {
+ boolean remains = false;
final List<Element> childElements = ElementSupport.getChildElements(entityDescriptor);
-
- final Iterator<Element> childItr = childElements.iterator();
- while (childItr.hasNext()) {
- final Element child = childItr.next();
+ for (final var child : childElements) {
final QName childQName = QNameSupport.getNodeQName(child);
final QName roleIdentifier;
@@ -264,25 +259,24 @@ public class EntityRoleFilterStage extends AbstractFilteringStage<Element> {
} else if (NAMED_ROLES.contains(childQName)) {
roleIdentifier = childQName;
} else {
- childItr.remove();
continue;
}
- final boolean isDesignatedRole = getDesignatedRoles().contains(roleIdentifier);
if (roleIdentifier != null) {
+ final boolean isDesignatedRole = getDesignatedRoles().contains(roleIdentifier);
if ((isWhitelistingRoles() && !isDesignatedRole) || (!isWhitelistingRoles() && isDesignatedRole)) {
log.debug("{} pipeline stage removing role {} from EntityDescriptor {}", new Object[] {getId(),
roleIdentifier, entityId,});
entityDescriptor.removeChild(child);
- childItr.remove();
} else {
log.debug("{} pipeline did not remove role {} from EntityDescriptor {}", new Object[] {getId(),
roleIdentifier, entityId,});
+ remains = true;
}
}
}
- return childElements;
+ return remains;
}
}
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdrpi/EntityRegistrationAuthorityFilterStage.java b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdrpi/EntityRegistrationAuthorityFilterStage.java
index bef92a5..4ff2477 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdrpi/EntityRegistrationAuthorityFilterStage.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/dom/saml/mdrpi/EntityRegistrationAuthorityFilterStage.java
@@ -165,7 +165,7 @@ public class EntityRegistrationAuthorityFilterStage extends AbstractFilteringSta
* @return true if the descriptor should be removed, false otherwise
*/
protected boolean processEntitiesDescriptor(@Nonnull final Element entitiesDescriptor) {
- Iterator<Element> descriptorItr;
+ boolean remove = true;
if (filterOutDescriptor(entitiesDescriptor)) {
return true;
@@ -173,28 +173,25 @@ public class EntityRegistrationAuthorityFilterStage extends AbstractFilteringSta
final List<Element> childEntitiesDescriptors =
ElementSupport.getChildElements(entitiesDescriptor, SAMLMetadataSupport.ENTITIES_DESCRIPTOR_NAME);
- descriptorItr = childEntitiesDescriptors.iterator();
- while (descriptorItr.hasNext()) {
- final Element descriptor = descriptorItr.next();
+ for (final var descriptor : childEntitiesDescriptors) {
if (processEntitiesDescriptor(descriptor)) {
entitiesDescriptor.removeChild(descriptor);
- descriptorItr.remove();
+ } else {
+ remove = false;
}
}
final List<Element> childEntityDescriptors =
ElementSupport.getChildElements(entitiesDescriptor, SAMLMetadataSupport.ENTITY_DESCRIPTOR_NAME);
- descriptorItr = childEntityDescriptors.iterator();
- while (descriptorItr.hasNext()) {
- final Element descriptor = descriptorItr.next();
+ for (final var descriptor : childEntityDescriptors) {
if (filterOutDescriptor(descriptor)) {
entitiesDescriptor.removeChild(descriptor);
- descriptorItr.remove();
+ } else {
+ remove = false;
}
}
- if (childEntitiesDescriptors.isEmpty() && childEntityDescriptors.isEmpty() &&
- isRemovingEntitylessEntitiesDescriptor()) {
+ if (remove && isRemovingEntitylessEntitiesDescriptor()) {
return true;
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list