From 975061f80aad851175779412981007e24ff4a692 Mon Sep 17 00:00:00 2001 From: Dmitriy Kopylenko Date: Wed, 25 Jul 2018 16:48:40 -0400 Subject: [PATCH] SHIBUI-645: WIP --- .../admin/ui/controller/MetadataResolversController.java | 7 ++++++- .../MetadataResolversPositionOrderController.java | 8 +++++++- ...ultMetadataResolversPositionOrderContainerService.java | 8 ++++---- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataResolversController.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataResolversController.java index 9705ddacc..c6b648e8c 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataResolversController.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataResolversController.java @@ -5,6 +5,7 @@ import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.MetadataResolverValidationService; import edu.internet2.tier.shibboleth.admin.ui.repository.MetadataResolverRepository; import edu.internet2.tier.shibboleth.admin.ui.service.MetadataResolverService; +import edu.internet2.tier.shibboleth.admin.ui.service.MetadataResolversPositionOrderContainerService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -30,6 +31,7 @@ import java.io.IOException; import java.io.StringWriter; import java.net.URI; +import java.util.List; import static edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.MetadataResolverValidator.ValidationResult; @@ -47,6 +49,9 @@ public class MetadataResolversController { @Autowired MetadataResolverService metadataResolverService; + @Autowired + MetadataResolversPositionOrderContainerService positionOrderContainerService; + @ExceptionHandler({InvalidTypeIdException.class, IOException.class, HttpMessageNotReadableException.class}) public ResponseEntity unableToParseJson(Exception ex) { return ResponseEntity.badRequest().body(new ErrorResponse(HttpStatus.BAD_REQUEST.toString(), ex.getMessage())); @@ -55,7 +60,7 @@ public ResponseEntity unableToParseJson(Exception ex) { @GetMapping("/MetadataResolvers") @Transactional(readOnly = true) public ResponseEntity getAll() { - Iterable resolvers = resolverRepository.findAll(); + List resolvers = positionOrderContainerService.getAllMetadataResolversInDefinedOrderOrUnordered(); resolvers.forEach(MetadataResolver::updateVersion); return ResponseEntity.ok(resolvers); } 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 51680e753..ed3344e1c 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 @@ -2,6 +2,8 @@ import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.MetadataResolversPositionOrderContainer; +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.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -15,8 +17,12 @@ @RequestMapping("/api/MetadataResolversPositionOrder") public class MetadataResolversPositionOrderController { + @Autowired + MetadataResolversPositionOrderContainerService positionOrderContainerService; + @PostMapping public ResponseEntity createOrUpdate(@RequestBody MetadataResolversPositionOrderContainer metadataResolversPositionOrderContainer) { - return ResponseEntity.ok().build(); + this.positionOrderContainerService.addOrUpdatePositionOrderContainer(metadataResolversPositionOrderContainer); + return ResponseEntity.noContent().build(); } } 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 4da7c4031..37b6b7c09 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 @@ -6,6 +6,7 @@ import edu.internet2.tier.shibboleth.admin.ui.repository.MetadataResolversPositionOrderContainerRepository; import org.springframework.transaction.annotation.Transactional; +import java.util.Iterator; import java.util.List; import java.util.Optional; @@ -33,7 +34,7 @@ public DefaultMetadataResolversPositionOrderContainerService(MetadataResolversPo @Override @Transactional public void addOrUpdatePositionOrderContainer(MetadataResolversPositionOrderContainer metadataResolversPositionOrderContainer) { - MetadataResolversPositionOrderContainer existingPositionOrder = positionOrderContainerRepository.findAll().iterator().next(); + MetadataResolversPositionOrderContainer existingPositionOrder = getPositionOrderContainerIfExists().orElse(null); if (existingPositionOrder != null) { existingPositionOrder.setResourceIds(metadataResolversPositionOrderContainer.getResourceIds()); positionOrderContainerRepository.save(existingPositionOrder); @@ -57,8 +58,7 @@ public List getAllMetadataResolversInDefinedOrderOrUnordered() } private Optional getPositionOrderContainerIfExists() { - return positionOrderContainerRepository.findAll().iterator().hasNext() - ? Optional.of(positionOrderContainerRepository.findAll().iterator().next()) - : Optional.empty(); + Iterator iter = positionOrderContainerRepository.findAll().iterator(); + return iter.hasNext() ? Optional.of(iter.next()) : Optional.empty(); } }