From b407f16b2a6c6fe24950f8b89f25679885d07165 Mon Sep 17 00:00:00 2001 From: Jj! Date: Thu, 14 Feb 2019 11:21:38 -0600 Subject: [PATCH] [SHIBUI-1226] refactor fix MDUI updates --- .../admin/ui/domain/Extensions.java | 12 +++++++ .../admin/ui/domain/SPSSODescriptor.java | 6 ++++ .../shibboleth/admin/ui/domain/UIInfo.java | 1 + .../JPAEntityDescriptorServiceImpl.java | 35 +++++++++++-------- 4 files changed, 39 insertions(+), 15 deletions(-) diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/Extensions.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/Extensions.java index dd8521f70..c1538f463 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/Extensions.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/Extensions.java @@ -5,8 +5,10 @@ import javax.annotation.Nullable; import javax.persistence.Entity; +import javax.persistence.Transient; import java.util.Collections; import java.util.List; +import java.util.Optional; @Entity @@ -17,4 +19,14 @@ public class Extensions extends AbstractElementExtensibleXMLObject implements or public List getOrderedChildren() { return Collections.unmodifiableList(this.getUnknownXMLObjects()); } + + @Transient + public Optional getOptionalUIInfo() { + List uiinfos = this.getUnknownXMLObjects(UIInfo.DEFAULT_ELEMENT_NAME); + if (uiinfos.size() == 0) { + return Optional.empty(); + } else { + return Optional.of((UIInfo) uiinfos.get(0)); + } + } } diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/SPSSODescriptor.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/SPSSODescriptor.java index cda00fe4f..379c2c928 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/SPSSODescriptor.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/SPSSODescriptor.java @@ -10,6 +10,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Optional; @Entity @EqualsAndHashCode(callSuper = true) @@ -116,4 +117,9 @@ public List getOrderedChildren() { return Collections.unmodifiableList(children); } + + @Transient + public Optional getOptionalExtensions() { + return Optional.ofNullable(this.getExtensions()); + } } diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/UIInfo.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/UIInfo.java index 77b0dbd79..43d74e6eb 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/UIInfo.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/UIInfo.java @@ -15,6 +15,7 @@ import javax.persistence.Entity; import javax.persistence.OneToMany; import javax.persistence.OrderColumn; +import javax.persistence.Transient; import javax.xml.namespace.QName; import java.util.ArrayList; import java.util.List; 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 a2fb2391e..ea9c4240b 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 @@ -190,9 +190,10 @@ private EntityDescriptor buildDescriptorFromRepresentation(final EntityDescripto displayName.setValue(mduiRepresentation.getDisplayName()); displayName.setXMLLang("en"); } else { - if (getUIInfo(ed).getXMLObjects(DisplayName.DEFAULT_ELEMENT_NAME).size() > 0) { - getUIInfo(ed).getXMLObjects().remove(getUIInfo(ed).getXMLObjects(DisplayName.DEFAULT_ELEMENT_NAME).get(0)); - } + getOptionalSPSSODescriptorFromEntityDescriptor(ed) + .flatMap(SPSSODescriptor::getOptionalExtensions) + .flatMap(Extensions::getOptionalUIInfo) + .ifPresent(u -> u.getXMLObjects().removeAll(u.getDisplayNames())); } if (!Strings.isNullOrEmpty(mduiRepresentation.getInformationUrl())) { @@ -201,9 +202,10 @@ private EntityDescriptor buildDescriptorFromRepresentation(final EntityDescripto informationURL.setValue(mduiRepresentation.getInformationUrl()); informationURL.setXMLLang("en"); } else { - if (getUIInfo(ed).getXMLObjects(InformationURL.DEFAULT_ELEMENT_NAME).size() > 0) { - getUIInfo(ed).getXMLObjects().remove(getUIInfo(ed).getXMLObjects(InformationURL.DEFAULT_ELEMENT_NAME).get(0)); - } + getOptionalSPSSODescriptorFromEntityDescriptor(ed) + .flatMap(SPSSODescriptor::getOptionalExtensions) + .flatMap(Extensions::getOptionalUIInfo) + .ifPresent(u -> u.getXMLObjects().removeAll(u.getInformationURLs())); } if (!Strings.isNullOrEmpty(mduiRepresentation.getPrivacyStatementUrl())) { @@ -212,9 +214,10 @@ private EntityDescriptor buildDescriptorFromRepresentation(final EntityDescripto privacyStatementURL.setValue(mduiRepresentation.getPrivacyStatementUrl()); privacyStatementURL.setXMLLang("en"); } else { - if (getUIInfo(ed).getXMLObjects(PrivacyStatementURL.DEFAULT_ELEMENT_NAME).size() > 0) { - getUIInfo(ed).getXMLObjects().remove(getUIInfo(ed).getXMLObjects(PrivacyStatementURL.DEFAULT_ELEMENT_NAME).get(0)); - } + getOptionalSPSSODescriptorFromEntityDescriptor(ed) + .flatMap(SPSSODescriptor::getOptionalExtensions) + .flatMap(Extensions::getOptionalUIInfo) + .ifPresent(u -> u.getXMLObjects().removeAll(u.getPrivacyStatementURLs())); } if (!Strings.isNullOrEmpty(mduiRepresentation.getDescription())) { @@ -223,9 +226,10 @@ private EntityDescriptor buildDescriptorFromRepresentation(final EntityDescripto description.setValue(mduiRepresentation.getDescription()); description.setXMLLang("en"); } else { - if (getUIInfo(ed).getXMLObjects(Description.DEFAULT_ELEMENT_NAME).size() > 0) { - getUIInfo(ed).getXMLObjects().remove(getUIInfo(ed).getXMLObjects(Description.DEFAULT_ELEMENT_NAME).get(0)); - } + getOptionalSPSSODescriptorFromEntityDescriptor(ed) + .flatMap(SPSSODescriptor::getOptionalExtensions) + .flatMap(Extensions::getOptionalUIInfo) + .ifPresent(u -> u.getXMLObjects().removeAll(u.getDescriptions())); } if (!Strings.isNullOrEmpty(mduiRepresentation.getLogoUrl())) { @@ -236,9 +240,10 @@ private EntityDescriptor buildDescriptorFromRepresentation(final EntityDescripto logo.setWidth(mduiRepresentation.getLogoWidth()); logo.setXMLLang("en"); } else { - if (getUIInfo(ed).getXMLObjects(Description.DEFAULT_ELEMENT_NAME).size() > 0) { - getUIInfo(ed).getXMLObjects().remove(getUIInfo(ed).getXMLObjects(Description.DEFAULT_ELEMENT_NAME).get(0)); - } + getOptionalSPSSODescriptorFromEntityDescriptor(ed) + .flatMap(SPSSODescriptor::getOptionalExtensions) + .flatMap(Extensions::getOptionalUIInfo) + .ifPresent(u -> u.getXMLObjects().removeAll(u.getLogos())); } } else { removeUIInfo(ed);