diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataResolversPositionOrderController.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataResolversPositionOrderController.java index ed3344e1c..ab78e4a52 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataResolversPositionOrderController.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataResolversPositionOrderController.java @@ -5,6 +5,7 @@ import edu.internet2.tier.shibboleth.admin.ui.service.MetadataResolversPositionOrderContainerService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -22,7 +23,12 @@ public class MetadataResolversPositionOrderController { @PostMapping public ResponseEntity createOrUpdate(@RequestBody MetadataResolversPositionOrderContainer metadataResolversPositionOrderContainer) { - this.positionOrderContainerService.addOrUpdatePositionOrderContainer(metadataResolversPositionOrderContainer); + positionOrderContainerService.addOrUpdatePositionOrderContainer(metadataResolversPositionOrderContainer); return ResponseEntity.noContent().build(); } + + @GetMapping + public ResponseEntity getPositionOrderContainer() { + return ResponseEntity.ok(positionOrderContainerService.retrieveExistingOrEmpty()); + } } diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolversPositionOrderContainer.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolversPositionOrderContainer.java index 7e17b78ec..883069531 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolversPositionOrderContainer.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolversPositionOrderContainer.java @@ -1,6 +1,6 @@ package edu.internet2.tier.shibboleth.admin.ui.domain.resolvers; -import edu.internet2.tier.shibboleth.admin.ui.domain.AbstractAuditable; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; @@ -11,6 +11,9 @@ import javax.persistence.Column; import javax.persistence.ElementCollection; import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OrderColumn; import java.util.ArrayList; @@ -27,12 +30,17 @@ * @author Dmitriy Kopylenko */ @Entity -@EqualsAndHashCode(callSuper = true) +@EqualsAndHashCode @NoArgsConstructor @Getter @Setter @ToString -public class MetadataResolversPositionOrderContainer extends AbstractAuditable { +public class MetadataResolversPositionOrderContainer { + + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE) + @JsonIgnore + protected Long id; @ElementCollection @CollectionTable(name="METADATA_RESOLVER_POSITION_ORDER", joinColumns=@JoinColumn(name="METADATA_RESOLVER_POSITION_ORDER_CONTAINER_ID")) diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/DefaultMetadataResolversPositionOrderContainerService.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/DefaultMetadataResolversPositionOrderContainerService.java index 37b6b7c09..07128f5d0 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/DefaultMetadataResolversPositionOrderContainerService.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/DefaultMetadataResolversPositionOrderContainerService.java @@ -57,6 +57,11 @@ public List getAllMetadataResolversInDefinedOrderOrUnordered() return from(metadataResolverRepository.findAll()).toList(); } + @Override + public MetadataResolversPositionOrderContainer retrieveExistingOrEmpty() { + return getPositionOrderContainerIfExists().orElseGet(MetadataResolversPositionOrderContainer::new); + } + private Optional getPositionOrderContainerIfExists() { Iterator iter = positionOrderContainerRepository.findAll().iterator(); return iter.hasNext() ? Optional.of(iter.next()) : Optional.empty(); diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/MetadataResolversPositionOrderContainerService.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/MetadataResolversPositionOrderContainerService.java index 1fc06ee81..3b67f6018 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/MetadataResolversPositionOrderContainerService.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/MetadataResolversPositionOrderContainerService.java @@ -13,6 +13,8 @@ */ public interface MetadataResolversPositionOrderContainerService { + MetadataResolversPositionOrderContainer retrieveExistingOrEmpty(); + void addOrUpdatePositionOrderContainer(MetadataResolversPositionOrderContainer metadataResolversPositionOrderContainer); List getAllMetadataResolversInDefinedOrderOrUnordered();