diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/JPAEntityDescriptorServiceImpl.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/JPAEntityDescriptorServiceImpl.java index 9ca15a77e..4807e336a 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/JPAEntityDescriptorServiceImpl.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/JPAEntityDescriptorServiceImpl.java @@ -25,6 +25,7 @@ import edu.internet2.tier.shibboleth.admin.ui.domain.OrganizationName; import edu.internet2.tier.shibboleth.admin.ui.domain.OrganizationURL; import edu.internet2.tier.shibboleth.admin.ui.domain.PrivacyStatementURL; +import edu.internet2.tier.shibboleth.admin.ui.domain.RelyingPartyOverrideProperty; import edu.internet2.tier.shibboleth.admin.ui.domain.SPSSODescriptor; import edu.internet2.tier.shibboleth.admin.ui.domain.SingleLogoutService; import edu.internet2.tier.shibboleth.admin.ui.domain.UIInfo; @@ -37,7 +38,6 @@ import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.LogoutEndpointRepresentation; import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.MduiRepresentation; import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.OrganizationRepresentation; -import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.RelyingPartyOverridesRepresentation; import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.SecurityInfoRepresentation; import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.ServiceProviderSsoDescriptorRepresentation; import edu.internet2.tier.shibboleth.admin.ui.opensaml.OpenSamlObjects; @@ -57,12 +57,9 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; -import static edu.internet2.tier.shibboleth.admin.util.ModelRepresentationConversions.getBooleanValueOfAttribute; -import static edu.internet2.tier.shibboleth.admin.util.ModelRepresentationConversions.getStringListOfAttributeValues; -import static edu.internet2.tier.shibboleth.admin.util.ModelRepresentationConversions.getStringListValueOfAttribute; - /** * Default implementation of {@link EntityDescriptorService} * @@ -496,8 +493,11 @@ public EntityDescriptorRepresentation createRepresentationFromDescriptor(org.ope for (org.opensaml.saml.saml2.core.Attribute attribute : ((EntityAttributes) ed.getExtensions().getUnknownXMLObjects(EntityAttributes.DEFAULT_ELEMENT_NAME).get(0)).getAttributes()) { Attribute jpaAttribute = (Attribute) attribute; - relyingPartyOverrides.put(ModelRepresentationConversions.getAttributeNameFromFriendlyName(jpaAttribute.getFriendlyName()), - jpaAttribute.getAttributeValues()); + Optional override = ModelRepresentationConversions.getOverrideByAttributeName(jpaAttribute.getName()); + if (override.isPresent()) { + relyingPartyOverrides.put(((RelyingPartyOverrideProperty)override.get()).getName(), + jpaAttribute.getAttributeValues()); + } } representation.setRelyingPartyOverrides(relyingPartyOverrides); diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/util/ModelRepresentationConversions.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/util/ModelRepresentationConversions.java index 13d4d6587..3edb7f3ee 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/util/ModelRepresentationConversions.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/util/ModelRepresentationConversions.java @@ -78,14 +78,9 @@ public static List getStringListValueOfAttribute(Attribute attribute) { return getStringListOfAttributeValues(attribute.getAttributeValues()); } - public static String getAttributeNameFromFriendlyName(String attributeFriendlyName) { - Optional override = customPropertiesConfiguration.getOverrides().stream().filter(it -> it.getAttributeFriendlyName().equals(attributeFriendlyName)).findFirst(); - if (!override.isPresent()) { - // WAT? Somehow we persisted a property that we're not configured for. This shouldn't happen. - throw new RuntimeException("Persisted attribute with friendlyName \"" + attributeFriendlyName + "\" doesn't have a matching configuration in application.yml!"); - } - return ((RelyingPartyOverrideProperty)override.get()).getName(); - } + public static Optional getOverrideByAttributeName(String attributeName) { + return customPropertiesConfiguration.getOverrides().stream().filter(it -> it.getAttributeName().equals(attributeName)).findFirst(); + } public static Map getRelyingPartyOverridesRepresentationFromAttributeList(List attributeList) { Map relyingPartyOverrides = new HashMap<>(); @@ -93,8 +88,11 @@ public static Map getRelyingPartyOverridesRepresentationFromAttr for (org.opensaml.saml.saml2.core.Attribute attribute : attributeList) { Attribute jpaAttribute = (Attribute) attribute; - relyingPartyOverrides.put(getAttributeNameFromFriendlyName(jpaAttribute.getFriendlyName()), - getOverrideFromAttribute(jpaAttribute)); + Optional override = getOverrideByAttributeName(jpaAttribute.getName()); + if (override.isPresent()) { + relyingPartyOverrides.put(((RelyingPartyOverrideProperty)override.get()).getName(), + getOverrideFromAttribute(jpaAttribute)); + } } return relyingPartyOverrides;