diff --git a/monitor-worker-server/src/main/java/org/gridsuite/monitor/worker/server/services/NetworkModificationRestService.java b/monitor-worker-server/src/main/java/org/gridsuite/monitor/worker/server/services/NetworkModificationRestService.java index a9f3c64..33ff854 100644 --- a/monitor-worker-server/src/main/java/org/gridsuite/monitor/worker/server/services/NetworkModificationRestService.java +++ b/monitor-worker-server/src/main/java/org/gridsuite/monitor/worker/server/services/NetworkModificationRestService.java @@ -7,6 +7,7 @@ package org.gridsuite.monitor.worker.server.services; +import org.apache.commons.collections4.CollectionUtils; import org.gridsuite.modification.dto.ModificationInfos; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.web.client.RestTemplateBuilder; @@ -14,7 +15,6 @@ import org.springframework.web.client.RestTemplate; import org.springframework.web.util.UriComponentsBuilder; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.UUID; @@ -37,20 +37,17 @@ public NetworkModificationRestService(@Value("${gridsuite.services.network-modif } public List getModifications(List modificationsUuids) { - List modifications = new ArrayList<>(); - - UriComponentsBuilder uriBuilder = UriComponentsBuilder - .fromUriString(DELIMITER + NETWORK_MODIFICATION_SERVER_API_VERSION + DELIMITER + - "network-composite-modification" + DELIMITER + "{uuid}" + DELIMITER + "network-modifications?onlyMetadata=false"); - - modificationsUuids.forEach(uuid -> { - String path = this.networkModificationServerBaseUri + uriBuilder.buildAndExpand(uuid).toUriString(); + if (CollectionUtils.isNotEmpty(modificationsUuids)) { + String path = this.networkModificationServerBaseUri + UriComponentsBuilder.fromPath(DELIMITER + NETWORK_MODIFICATION_SERVER_API_VERSION + DELIMITER + + "network-composite-modifications" + DELIMITER + "network-modifications") + .queryParam("uuids", modificationsUuids.toArray()) + .queryParam("onlyMetadata", "false") + .buildAndExpand() + .toUriString(); ModificationInfos[] modificationInfos = networkModificationServerRest.getForObject(path, ModificationInfos[].class); - if (modificationInfos != null) { - modifications.addAll(Arrays.asList(modificationInfos)); - } - }); - - return modifications; + return modificationInfos != null ? Arrays.asList(modificationInfos) : List.of(); + } else { + return List.of(); + } } } diff --git a/monitor-worker-server/src/test/java/org/gridsuite/monitor/worker/server/services/NetworkModificationRestServiceTest.java b/monitor-worker-server/src/test/java/org/gridsuite/monitor/worker/server/services/NetworkModificationRestServiceTest.java index adaa6f0..c5de88d 100644 --- a/monitor-worker-server/src/test/java/org/gridsuite/monitor/worker/server/services/NetworkModificationRestServiceTest.java +++ b/monitor-worker-server/src/test/java/org/gridsuite/monitor/worker/server/services/NetworkModificationRestServiceTest.java @@ -23,7 +23,6 @@ import org.springframework.test.web.client.response.MockRestResponseCreators; import org.springframework.web.client.HttpServerErrorException; -import java.util.Arrays; import java.util.List; import java.util.UUID; @@ -55,37 +54,39 @@ void tearDown() { @Test void getModifications() { - UUID[] modificationUuids = {MODIFICATION_1_UUID, MODIFICATION_2_UUID}; - ModificationInfos modificationInfos1 = LoadModificationInfos.builder().equipmentId("load1").q0(new AttributeModification<>(300., OperationType.SET)).build(); ModificationInfos modificationInfos2 = LoadModificationInfos.builder().equipmentId("load2").q0(new AttributeModification<>(null, OperationType.UNSET)).build(); - ModificationInfos[] modificationInfos = {modificationInfos1, modificationInfos2}; + List modificationInfos = List.of(modificationInfos1, modificationInfos2); + ModificationInfos[] modificationsArray = modificationInfos.toArray(ModificationInfos[]::new); - for (int i = 0; i < modificationUuids.length; i++) { - ModificationInfos[] modificationsArray = {modificationInfos[i]}; - try { - server.expect(MockRestRequestMatchers.method(HttpMethod.GET)) - .andExpect(MockRestRequestMatchers.requestTo("http://network-modification-server/v1/network-composite-modification/" + modificationUuids[i] + "/network-modifications?onlyMetadata=false")) - .andRespond(MockRestResponseCreators.withSuccess() - .contentType(MediaType.APPLICATION_JSON) - .body(objectMapper.writeValueAsString(modificationsArray))); - } catch (JsonProcessingException e) { - throw new RuntimeException(e); - } + try { + server.expect(MockRestRequestMatchers.method(HttpMethod.GET)) + .andExpect(MockRestRequestMatchers.requestTo("http://network-modification-server/v1/network-composite-modifications/network-modifications?uuids=" + MODIFICATION_1_UUID + "&uuids=" + MODIFICATION_2_UUID + "&onlyMetadata=false")) + .andRespond(MockRestResponseCreators.withSuccess() + .contentType(MediaType.APPLICATION_JSON) + .body(objectMapper.writeValueAsString(modificationsArray))); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); } - List resultListModifications = networkModificationRestService.getModifications(Arrays.asList(modificationUuids)); - assertThat(resultListModifications).usingRecursiveComparison().isEqualTo(Arrays.asList(modificationInfos)); + List resultListModifications = networkModificationRestService.getModifications(List.of(MODIFICATION_1_UUID, MODIFICATION_2_UUID)); + assertThat(resultListModifications).usingRecursiveComparison().isEqualTo(modificationInfos); } @Test void getModificationsNotFound() { server.expect(MockRestRequestMatchers.method(HttpMethod.GET)) - .andExpect(MockRestRequestMatchers.requestTo("http://network-modification-server/v1/network-composite-modification/" + MODIFICATION_ERROR_UUID + "/network-modifications?onlyMetadata=false")) + .andExpect(MockRestRequestMatchers.requestTo("http://network-modification-server/v1/network-composite-modifications/network-modifications?uuids=" + MODIFICATION_ERROR_UUID + "&onlyMetadata=false")) .andRespond(MockRestResponseCreators.withServerError()); List modificationsUuids = List.of(MODIFICATION_ERROR_UUID); assertThatThrownBy(() -> networkModificationRestService.getModifications(modificationsUuids)).isInstanceOf(HttpServerErrorException.InternalServerError.class); } + + @Test + void getEmptyModifications() { + List resultListModifications = networkModificationRestService.getModifications(List.of()); + assertThat(resultListModifications).isEmpty(); + } }