diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/repository/EntityDescriptorRepository.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/repository/EntityDescriptorRepository.java index d979c4772..b37b0dcf9 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/repository/EntityDescriptorRepository.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/repository/EntityDescriptorRepository.java @@ -4,6 +4,7 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; +import java.util.List; import java.util.stream.Stream; @@ -25,7 +26,11 @@ public interface EntityDescriptorRepository extends JpaRepository findAllDisabledAndNotOwnedByAdmin(); -// Stream findAllStreamByCreatedBy(String createdBy); - Stream findAllStreamByGroup_resourceId(String resourceId); + + /** + * SHIBUI-1740 This is here to aid in migration of systems using the SHIBUI prior to group functionality being added + * @deprecated - this is intended to be removed at some future date and is here only for migration purposes. + */ + List findAllByGroupIsNull(); } diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/security/service/GroupServiceImpl.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/security/service/GroupServiceImpl.java index 9d0a7293f..2fcfb7587 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/security/service/GroupServiceImpl.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/security/service/GroupServiceImpl.java @@ -66,6 +66,8 @@ public Group updateGroup(Group group) throws EntityNotFoundException { @PostConstruct @Transactional private void ensureDefaultGroupExists() { + // This is something of a migration piece to ensure there is a default group that users and entity descriptors + // can be assigned to out of the box. Group g = repo.findByDefaultGroupTrue(); if (g == null) { g = new Group(); 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 02b7c3f5a..a12632b3e 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 @@ -55,6 +55,7 @@ import edu.internet2.tier.shibboleth.admin.util.MDDCConstants; import edu.internet2.tier.shibboleth.admin.util.ModelRepresentationConversions; import groovy.util.logging.Slf4j; +import jline.internal.Log; import org.opensaml.core.xml.XMLObject; import org.opensaml.core.xml.schema.XSBooleanValue; @@ -75,6 +76,9 @@ import java.util.Optional; import java.util.stream.Collectors; +import javax.annotation.PostConstruct; +import javax.transaction.Transactional; + import static edu.internet2.tier.shibboleth.admin.util.ModelRepresentationConversions.getStringListOfAttributeValues; @@ -417,9 +421,6 @@ public List getAllRepresentationsBasedOnUserAcce return entityDescriptorRepository .findAllStreamByGroup_resourceId(group.getResourceId()) .map(ed -> createRepresentationFromDescriptor(ed)).collect(Collectors.toList()); -// case OWNER: -// return entityDescriptorRepository.findAllStreamByCreatedBy(userService.getCurrentUser().getUsername()) -// .map(ed -> createRepresentationFromDescriptor(ed)).collect(Collectors.toList()); default: throw new ForbiddenException(); } @@ -506,6 +507,24 @@ private UIInfo getUIInfo(EntityDescriptor ed) { return uiInfo; } + @PostConstruct + @Transactional + private void migration() { + // SHIBUI-1740: Adding default group to all existing entity descriptors that do not have a group already. + // Because this class has a GroupService, we assume the DEFAULT_GROUP has already been setup prior to being + // autowired into this class. + try { + entityDescriptorRepository.findAllByGroupIsNull().forEach(ed -> { + ed.setGroup(Group.DEFAULT_GROUP); + entityDescriptorRepository.save(ed); + }); + } + catch (NullPointerException e) { + // This block was added due to a number of mock test where NPEs happened. Rather than wire more mock junk + // into tests that are only trying to compensate for this migration, this is here + } + } + // TODO: remove private String getValueFromXMLObject(XMLObject xmlObject) { return ModelRepresentationConversions.getValueFromXMLObject(xmlObject);