From 083b4d65dceb390514ea819d810ca64836855be5 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Fri, 14 Nov 2025 14:01:32 +0100 Subject: [PATCH 01/13] Harmonize exceptions handling --- pom.xml | 1 + .../server/PropertyServerNameProvider.java | 28 ++++++++++++ .../RestResponseEntityExceptionHandler.java | 43 +++++++++++++++++++ .../server/service/LimitReductionService.java | 19 ++++---- .../PropertyServerNameProviderTest.java | 22 ++++++++++ 5 files changed, 104 insertions(+), 9 deletions(-) create mode 100644 src/main/java/org/gridsuite/loadflow/server/PropertyServerNameProvider.java create mode 100644 src/main/java/org/gridsuite/loadflow/server/RestResponseEntityExceptionHandler.java create mode 100644 src/test/java/org/gridsuite/loadflow/server/PropertyServerNameProviderTest.java diff --git a/pom.xml b/pom.xml index 4e23f464..7b5d3732 100644 --- a/pom.xml +++ b/pom.xml @@ -123,6 +123,7 @@ org.gridsuite gridsuite-computation + 1.6.0-SNAPSHOT com.powsybl diff --git a/src/main/java/org/gridsuite/loadflow/server/PropertyServerNameProvider.java b/src/main/java/org/gridsuite/loadflow/server/PropertyServerNameProvider.java new file mode 100644 index 00000000..25f566fb --- /dev/null +++ b/src/main/java/org/gridsuite/loadflow/server/PropertyServerNameProvider.java @@ -0,0 +1,28 @@ +/** + * Copyright (c) 2025, RTE (http://www.rte-france.com) + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +package org.gridsuite.loadflow.server; + +import com.powsybl.ws.commons.error.ServerNameProvider; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +/** + * @author Hugo Marcellin + */ +@Component +public class PropertyServerNameProvider implements ServerNameProvider { + private final String name; + + public PropertyServerNameProvider(@Value("${spring.application.name:loadflow-server}") String name) { + this.name = name; + } + + @Override + public String serverName() { + return name; + } +} diff --git a/src/main/java/org/gridsuite/loadflow/server/RestResponseEntityExceptionHandler.java b/src/main/java/org/gridsuite/loadflow/server/RestResponseEntityExceptionHandler.java new file mode 100644 index 00000000..fec9015e --- /dev/null +++ b/src/main/java/org/gridsuite/loadflow/server/RestResponseEntityExceptionHandler.java @@ -0,0 +1,43 @@ +/** + * Copyright (c) 2025, RTE (http://www.rte-france.com) + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +package org.gridsuite.loadflow.server; + +import com.powsybl.ws.commons.error.AbstractBaseRestExceptionHandler; +import com.powsybl.ws.commons.error.ServerNameProvider; +import lombok.NonNull; +import org.gridsuite.computation.ComputationBusinessErrorCode; +import org.gridsuite.computation.ComputationException; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ControllerAdvice; + +/** + * @author Hugo Marcellin + */ +@ControllerAdvice +public class RestResponseEntityExceptionHandler extends AbstractBaseRestExceptionHandler { + + protected RestResponseEntityExceptionHandler(ServerNameProvider serverNameProvider) { + super(serverNameProvider); + } + + @Override + protected @NonNull ComputationBusinessErrorCode getBusinessCode(ComputationException e) { + return e.getBusinessErrorCode(); + } + + @Override + protected HttpStatus mapStatus(ComputationBusinessErrorCode businessErrorCode) { + return switch (businessErrorCode) { + case RESULT_NOT_FOUND, NETWORK_NOT_FOUND, PARAMETERS_NOT_FOUND -> HttpStatus.NOT_FOUND; + case INVALID_FILTER_FORMAT, + INVALID_SORT_FORMAT, + INVALID_FILTER -> HttpStatus.BAD_REQUEST; + default -> HttpStatus.INTERNAL_SERVER_ERROR; + }; + } +} diff --git a/src/main/java/org/gridsuite/loadflow/server/service/LimitReductionService.java b/src/main/java/org/gridsuite/loadflow/server/service/LimitReductionService.java index f7cb9976..02e3f44d 100644 --- a/src/main/java/org/gridsuite/loadflow/server/service/LimitReductionService.java +++ b/src/main/java/org/gridsuite/loadflow/server/service/LimitReductionService.java @@ -9,6 +9,7 @@ import lombok.Getter; import lombok.Setter; import org.apache.commons.lang3.Range; +import org.gridsuite.computation.ComputationBusinessErrorCode; import org.gridsuite.computation.ComputationException; import org.gridsuite.loadflow.server.dto.parameters.LimitReductionsByVoltageLevel; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -67,41 +68,41 @@ private List getLimitReductionsByD private void assertValidConfig(List> values) { if (voltageLevels.isEmpty()) { - throw new ComputationException(ComputationException.Type.LIMIT_REDUCTION_CONFIG_ERROR, "No configuration for voltage levels"); + throw new ComputationException(ComputationBusinessErrorCode.LIMIT_REDUCTION_CONFIG_ERROR, "No configuration for voltage levels"); } if (limitDurations.isEmpty()) { - throw new ComputationException(ComputationException.Type.LIMIT_REDUCTION_CONFIG_ERROR, "No configuration for limit durations"); + throw new ComputationException(ComputationBusinessErrorCode.LIMIT_REDUCTION_CONFIG_ERROR, "No configuration for limit durations"); } if (values.isEmpty() || values.get(0).isEmpty()) { - throw new ComputationException(ComputationException.Type.LIMIT_REDUCTION_CONFIG_ERROR, "No values provided"); + throw new ComputationException(ComputationBusinessErrorCode.LIMIT_REDUCTION_CONFIG_ERROR, "No values provided"); } int nbValuesByVl = values.get(0).size(); if (values.stream().anyMatch(valuesByVl -> valuesByVl.size() != nbValuesByVl)) { - throw new ComputationException(ComputationException.Type.LIMIT_REDUCTION_CONFIG_ERROR, "Number of values for a voltage level is incorrect"); + throw new ComputationException(ComputationBusinessErrorCode.LIMIT_REDUCTION_CONFIG_ERROR, "Number of values for a voltage level is incorrect"); } if (voltageLevels.size() < values.size()) { - throw new ComputationException(ComputationException.Type.LIMIT_REDUCTION_CONFIG_ERROR, "Too many values provided for voltage levels"); + throw new ComputationException(ComputationBusinessErrorCode.LIMIT_REDUCTION_CONFIG_ERROR, "Too many values provided for voltage levels"); } if (voltageLevels.size() > values.size()) { - throw new ComputationException(ComputationException.Type.LIMIT_REDUCTION_CONFIG_ERROR, "Not enough values provided for voltage levels"); + throw new ComputationException(ComputationBusinessErrorCode.LIMIT_REDUCTION_CONFIG_ERROR, "Not enough values provided for voltage levels"); } if (limitDurations.size() < nbValuesByVl - 1) { - throw new ComputationException(ComputationException.Type.LIMIT_REDUCTION_CONFIG_ERROR, "Too many values provided for limit durations"); + throw new ComputationException(ComputationBusinessErrorCode.LIMIT_REDUCTION_CONFIG_ERROR, "Too many values provided for limit durations"); } if (limitDurations.size() > nbValuesByVl - 1) { - throw new ComputationException(ComputationException.Type.LIMIT_REDUCTION_CONFIG_ERROR, "Not enough values provided for limit durations"); + throw new ComputationException(ComputationBusinessErrorCode.LIMIT_REDUCTION_CONFIG_ERROR, "Not enough values provided for limit durations"); } values.forEach(valuesByVl -> { if (valuesByVl.stream().anyMatch(v -> !Range.of(0.0, 1.0).contains(v))) { - throw new ComputationException(ComputationException.Type.LIMIT_REDUCTION_CONFIG_ERROR, "Value not between 0 and 1"); + throw new ComputationException(ComputationBusinessErrorCode.LIMIT_REDUCTION_CONFIG_ERROR, "Value not between 0 and 1"); } }); } diff --git a/src/test/java/org/gridsuite/loadflow/server/PropertyServerNameProviderTest.java b/src/test/java/org/gridsuite/loadflow/server/PropertyServerNameProviderTest.java new file mode 100644 index 00000000..b78dc9a7 --- /dev/null +++ b/src/test/java/org/gridsuite/loadflow/server/PropertyServerNameProviderTest.java @@ -0,0 +1,22 @@ +/** + * Copyright (c) 2025, RTE (http://www.rte-france.com) + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +package org.gridsuite.loadflow.server; + +import org.junit.jupiter.api.Test; +import static org.assertj.core.api.Assertions.assertThat; + +/** + * @author Mohamed Ben-rejeb {@literal } + */ +class PropertyServerNameProviderTest { + + @Test + void returnsProvidedName() { + PropertyServerNameProvider provider = new PropertyServerNameProvider("custom-server"); + assertThat(provider.serverName()).isEqualTo("custom-server"); + } +} \ No newline at end of file From f7403876b9ff29ba57f088b140ad52a7beba5bf4 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Fri, 14 Nov 2025 14:03:25 +0100 Subject: [PATCH 02/13] Checkstyle --- .../loadflow/server/PropertyServerNameProviderTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/gridsuite/loadflow/server/PropertyServerNameProviderTest.java b/src/test/java/org/gridsuite/loadflow/server/PropertyServerNameProviderTest.java index b78dc9a7..f91f71bf 100644 --- a/src/test/java/org/gridsuite/loadflow/server/PropertyServerNameProviderTest.java +++ b/src/test/java/org/gridsuite/loadflow/server/PropertyServerNameProviderTest.java @@ -19,4 +19,4 @@ void returnsProvidedName() { PropertyServerNameProvider provider = new PropertyServerNameProvider("custom-server"); assertThat(provider.serverName()).isEqualTo("custom-server"); } -} \ No newline at end of file +} From bd54fb3ebf9241761bfd7947c92a772546ca7c64 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Wed, 19 Nov 2025 11:53:28 +0100 Subject: [PATCH 03/13] Remove business error codes --- pom.xml | 2 +- .../loadflow/server/RestResponseEntityExceptionHandler.java | 6 ++---- .../loadflow/server/service/LoadFlowResultService.java | 6 +++--- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/pom.xml b/pom.xml index dec78ed0..cbff83cb 100644 --- a/pom.xml +++ b/pom.xml @@ -65,7 +65,7 @@ and computation version containing merged PR: https://github.com/gridsuite/computation/pull/13 --> 1.12.0 - 1.6.0-SNAPSHOT + 1.7.0-SNAPSHOT diff --git a/src/main/java/org/gridsuite/loadflow/server/RestResponseEntityExceptionHandler.java b/src/main/java/org/gridsuite/loadflow/server/RestResponseEntityExceptionHandler.java index fec9015e..5aed23f2 100644 --- a/src/main/java/org/gridsuite/loadflow/server/RestResponseEntityExceptionHandler.java +++ b/src/main/java/org/gridsuite/loadflow/server/RestResponseEntityExceptionHandler.java @@ -33,10 +33,8 @@ protected RestResponseEntityExceptionHandler(ServerNameProvider serverNameProvid @Override protected HttpStatus mapStatus(ComputationBusinessErrorCode businessErrorCode) { return switch (businessErrorCode) { - case RESULT_NOT_FOUND, NETWORK_NOT_FOUND, PARAMETERS_NOT_FOUND -> HttpStatus.NOT_FOUND; - case INVALID_FILTER_FORMAT, - INVALID_SORT_FORMAT, - INVALID_FILTER -> HttpStatus.BAD_REQUEST; + case RESULT_NOT_FOUND, PARAMETERS_NOT_FOUND -> HttpStatus.NOT_FOUND; + case INVALID_SORT_FORMAT -> HttpStatus.BAD_REQUEST; default -> HttpStatus.INTERNAL_SERVER_ERROR; }; } diff --git a/src/main/java/org/gridsuite/loadflow/server/service/LoadFlowResultService.java b/src/main/java/org/gridsuite/loadflow/server/service/LoadFlowResultService.java index d08ef767..b07fe0f0 100644 --- a/src/main/java/org/gridsuite/loadflow/server/service/LoadFlowResultService.java +++ b/src/main/java/org/gridsuite/loadflow/server/service/LoadFlowResultService.java @@ -12,7 +12,6 @@ import com.powsybl.loadflow.LoadFlowResult; import com.powsybl.security.LimitViolationType; import lombok.AllArgsConstructor; -import org.gridsuite.computation.ComputationException; import org.gridsuite.computation.dto.GlobalFilter; import org.gridsuite.computation.dto.ResourceFilterDTO; import org.gridsuite.computation.service.AbstractComputationResultService; @@ -37,6 +36,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.io.UncheckedIOException; import java.time.Instant; import java.util.*; import java.util.concurrent.TimeUnit; @@ -290,7 +290,7 @@ private LoadFlowModificationInfos loadFlowModificationsToDTO(String jsonString) try { return objectMapper.readValue(jsonString, LoadFlowModificationInfos.class); } catch (JsonProcessingException e) { - throw new ComputationException("Invalid json string for modifications !"); + throw new UncheckedIOException("Invalid json string for modifications !", e); } } @@ -301,7 +301,7 @@ private String modificationsToJsonString(LoadFlowModificationInfos loadFlowModif try { return objectMapper.writeValueAsString(loadFlowModificationInfos); } catch (JsonProcessingException e) { - throw new ComputationException("Invalid modifications for json string !"); + throw new UncheckedIOException("Invalid modifications for json string !", e); } } } From 32dc882995fdae66c1bc8a2ec3f692d5eef45940 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Fri, 21 Nov 2025 17:37:44 +0100 Subject: [PATCH 04/13] Mutualize RestResponseEntityExceptionHandler --- .../loadflow/server/LoadFlowApplication.java | 3 +- .../RestResponseEntityExceptionHandler.java | 41 ------------------- .../server/service/LimitReductionService.java | 4 +- .../server/LoadFlowParametersTest.java | 2 +- 4 files changed, 5 insertions(+), 45 deletions(-) delete mode 100644 src/main/java/org/gridsuite/loadflow/server/RestResponseEntityExceptionHandler.java diff --git a/src/main/java/org/gridsuite/loadflow/server/LoadFlowApplication.java b/src/main/java/org/gridsuite/loadflow/server/LoadFlowApplication.java index 16d13962..ee99b2f2 100644 --- a/src/main/java/org/gridsuite/loadflow/server/LoadFlowApplication.java +++ b/src/main/java/org/gridsuite/loadflow/server/LoadFlowApplication.java @@ -7,6 +7,7 @@ package org.gridsuite.loadflow.server; import com.powsybl.network.store.client.NetworkStoreService; +import org.gridsuite.computation.error.RestResponseEntityExceptionHandler; import org.gridsuite.computation.service.NotificationService; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -15,7 +16,7 @@ * @author Franck Lecuyer */ @SuppressWarnings("checkstyle:HideUtilityClassConstructor") -@SpringBootApplication(scanBasePackageClasses = { LoadFlowApplication.class, NetworkStoreService.class, NotificationService.class }) +@SpringBootApplication(scanBasePackageClasses = { LoadFlowApplication.class, NetworkStoreService.class, NotificationService.class, RestResponseEntityExceptionHandler.class }) public class LoadFlowApplication { public static void main(String[] args) { SpringApplication.run(LoadFlowApplication.class, args); diff --git a/src/main/java/org/gridsuite/loadflow/server/RestResponseEntityExceptionHandler.java b/src/main/java/org/gridsuite/loadflow/server/RestResponseEntityExceptionHandler.java deleted file mode 100644 index 5aed23f2..00000000 --- a/src/main/java/org/gridsuite/loadflow/server/RestResponseEntityExceptionHandler.java +++ /dev/null @@ -1,41 +0,0 @@ -/** - * Copyright (c) 2025, RTE (http://www.rte-france.com) - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -package org.gridsuite.loadflow.server; - -import com.powsybl.ws.commons.error.AbstractBaseRestExceptionHandler; -import com.powsybl.ws.commons.error.ServerNameProvider; -import lombok.NonNull; -import org.gridsuite.computation.ComputationBusinessErrorCode; -import org.gridsuite.computation.ComputationException; -import org.springframework.http.HttpStatus; -import org.springframework.web.bind.annotation.ControllerAdvice; - -/** - * @author Hugo Marcellin - */ -@ControllerAdvice -public class RestResponseEntityExceptionHandler extends AbstractBaseRestExceptionHandler { - - protected RestResponseEntityExceptionHandler(ServerNameProvider serverNameProvider) { - super(serverNameProvider); - } - - @Override - protected @NonNull ComputationBusinessErrorCode getBusinessCode(ComputationException e) { - return e.getBusinessErrorCode(); - } - - @Override - protected HttpStatus mapStatus(ComputationBusinessErrorCode businessErrorCode) { - return switch (businessErrorCode) { - case RESULT_NOT_FOUND, PARAMETERS_NOT_FOUND -> HttpStatus.NOT_FOUND; - case INVALID_SORT_FORMAT -> HttpStatus.BAD_REQUEST; - default -> HttpStatus.INTERNAL_SERVER_ERROR; - }; - } -} diff --git a/src/main/java/org/gridsuite/loadflow/server/service/LimitReductionService.java b/src/main/java/org/gridsuite/loadflow/server/service/LimitReductionService.java index 02e3f44d..b3492a0d 100644 --- a/src/main/java/org/gridsuite/loadflow/server/service/LimitReductionService.java +++ b/src/main/java/org/gridsuite/loadflow/server/service/LimitReductionService.java @@ -9,8 +9,8 @@ import lombok.Getter; import lombok.Setter; import org.apache.commons.lang3.Range; -import org.gridsuite.computation.ComputationBusinessErrorCode; -import org.gridsuite.computation.ComputationException; +import org.gridsuite.computation.error.ComputationBusinessErrorCode; +import org.gridsuite.computation.error.ComputationException; import org.gridsuite.loadflow.server.dto.parameters.LimitReductionsByVoltageLevel; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Service; diff --git a/src/test/java/org/gridsuite/loadflow/server/LoadFlowParametersTest.java b/src/test/java/org/gridsuite/loadflow/server/LoadFlowParametersTest.java index c7afd87b..9851e220 100644 --- a/src/test/java/org/gridsuite/loadflow/server/LoadFlowParametersTest.java +++ b/src/test/java/org/gridsuite/loadflow/server/LoadFlowParametersTest.java @@ -14,7 +14,7 @@ import java.util.Map; import java.util.UUID; -import org.gridsuite.computation.ComputationException; +import org.gridsuite.computation.error.ComputationException; import org.gridsuite.loadflow.server.dto.parameters.LimitReductionsByVoltageLevel; import org.gridsuite.loadflow.server.dto.parameters.LoadFlowParametersInfos; import org.gridsuite.loadflow.server.dto.parameters.LoadFlowParametersValues; From 3efbf6c301ab7f51c50ffc32439d16e46a391403 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Wed, 26 Nov 2025 16:41:24 +0100 Subject: [PATCH 05/13] Rename commom handler to ComputationRestResponseEntityExceptionHandler --- .../org/gridsuite/loadflow/server/LoadFlowApplication.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/gridsuite/loadflow/server/LoadFlowApplication.java b/src/main/java/org/gridsuite/loadflow/server/LoadFlowApplication.java index ee99b2f2..af01eec2 100644 --- a/src/main/java/org/gridsuite/loadflow/server/LoadFlowApplication.java +++ b/src/main/java/org/gridsuite/loadflow/server/LoadFlowApplication.java @@ -7,7 +7,7 @@ package org.gridsuite.loadflow.server; import com.powsybl.network.store.client.NetworkStoreService; -import org.gridsuite.computation.error.RestResponseEntityExceptionHandler; +import org.gridsuite.computation.error.ComputationRestResponseEntityExceptionHandler; import org.gridsuite.computation.service.NotificationService; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -16,7 +16,7 @@ * @author Franck Lecuyer */ @SuppressWarnings("checkstyle:HideUtilityClassConstructor") -@SpringBootApplication(scanBasePackageClasses = { LoadFlowApplication.class, NetworkStoreService.class, NotificationService.class, RestResponseEntityExceptionHandler.class }) +@SpringBootApplication(scanBasePackageClasses = { LoadFlowApplication.class, NetworkStoreService.class, NotificationService.class, ComputationRestResponseEntityExceptionHandler.class }) public class LoadFlowApplication { public static void main(String[] args) { SpringApplication.run(LoadFlowApplication.class, args); From bd52268151057f9298d4ad3bba04e8aa96884dc5 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Thu, 27 Nov 2025 15:12:52 +0100 Subject: [PATCH 06/13] Implements separation of business and misc exceptions handlers --- pom.xml | 2 ++ .../org/gridsuite/loadflow/server/LoadFlowApplication.java | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e8c61b8a..45bd9c2b 100644 --- a/pom.xml +++ b/pom.xml @@ -61,6 +61,7 @@ org.gridsuite:loadflow-server 1.7.0-SNAPSHOT + 1.34.0-SNAPSHOT @@ -146,6 +147,7 @@ com.powsybl powsybl-ws-commons + ${powsybl-ws-commons.version} org.springframework.boot diff --git a/src/main/java/org/gridsuite/loadflow/server/LoadFlowApplication.java b/src/main/java/org/gridsuite/loadflow/server/LoadFlowApplication.java index af01eec2..41ea4b11 100644 --- a/src/main/java/org/gridsuite/loadflow/server/LoadFlowApplication.java +++ b/src/main/java/org/gridsuite/loadflow/server/LoadFlowApplication.java @@ -7,6 +7,7 @@ package org.gridsuite.loadflow.server; import com.powsybl.network.store.client.NetworkStoreService; +import com.powsybl.ws.commons.error.BaseExceptionHandler; import org.gridsuite.computation.error.ComputationRestResponseEntityExceptionHandler; import org.gridsuite.computation.service.NotificationService; import org.springframework.boot.SpringApplication; @@ -16,7 +17,7 @@ * @author Franck Lecuyer */ @SuppressWarnings("checkstyle:HideUtilityClassConstructor") -@SpringBootApplication(scanBasePackageClasses = { LoadFlowApplication.class, NetworkStoreService.class, NotificationService.class, ComputationRestResponseEntityExceptionHandler.class }) +@SpringBootApplication(scanBasePackageClasses = {LoadFlowApplication.class, NetworkStoreService.class, NotificationService.class, ComputationRestResponseEntityExceptionHandler.class, BaseExceptionHandler.class}) public class LoadFlowApplication { public static void main(String[] args) { SpringApplication.run(LoadFlowApplication.class, args); From 28a113bc92fa049850337d184cf3e620acffd9b3 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Thu, 27 Nov 2025 16:54:54 +0100 Subject: [PATCH 07/13] Rename handlers --- .../org/gridsuite/loadflow/server/LoadFlowApplication.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/gridsuite/loadflow/server/LoadFlowApplication.java b/src/main/java/org/gridsuite/loadflow/server/LoadFlowApplication.java index 41ea4b11..d73be7cc 100644 --- a/src/main/java/org/gridsuite/loadflow/server/LoadFlowApplication.java +++ b/src/main/java/org/gridsuite/loadflow/server/LoadFlowApplication.java @@ -8,7 +8,7 @@ import com.powsybl.network.store.client.NetworkStoreService; import com.powsybl.ws.commons.error.BaseExceptionHandler; -import org.gridsuite.computation.error.ComputationRestResponseEntityExceptionHandler; +import org.gridsuite.computation.error.ComputationExceptionHandler; import org.gridsuite.computation.service.NotificationService; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -17,7 +17,7 @@ * @author Franck Lecuyer */ @SuppressWarnings("checkstyle:HideUtilityClassConstructor") -@SpringBootApplication(scanBasePackageClasses = {LoadFlowApplication.class, NetworkStoreService.class, NotificationService.class, ComputationRestResponseEntityExceptionHandler.class, BaseExceptionHandler.class}) +@SpringBootApplication(scanBasePackageClasses = {LoadFlowApplication.class, NetworkStoreService.class, NotificationService.class, ComputationExceptionHandler.class, BaseExceptionHandler.class}) public class LoadFlowApplication { public static void main(String[] args) { SpringApplication.run(LoadFlowApplication.class, args); From 7a6f5018adcac5ff090d73346df2cac83b075bb2 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Thu, 27 Nov 2025 18:10:05 +0100 Subject: [PATCH 08/13] Remove BaseExceptionHandler from scan --- .../org/gridsuite/loadflow/server/LoadFlowApplication.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/org/gridsuite/loadflow/server/LoadFlowApplication.java b/src/main/java/org/gridsuite/loadflow/server/LoadFlowApplication.java index d73be7cc..f1541f57 100644 --- a/src/main/java/org/gridsuite/loadflow/server/LoadFlowApplication.java +++ b/src/main/java/org/gridsuite/loadflow/server/LoadFlowApplication.java @@ -7,7 +7,6 @@ package org.gridsuite.loadflow.server; import com.powsybl.network.store.client.NetworkStoreService; -import com.powsybl.ws.commons.error.BaseExceptionHandler; import org.gridsuite.computation.error.ComputationExceptionHandler; import org.gridsuite.computation.service.NotificationService; import org.springframework.boot.SpringApplication; @@ -17,7 +16,7 @@ * @author Franck Lecuyer */ @SuppressWarnings("checkstyle:HideUtilityClassConstructor") -@SpringBootApplication(scanBasePackageClasses = {LoadFlowApplication.class, NetworkStoreService.class, NotificationService.class, ComputationExceptionHandler.class, BaseExceptionHandler.class}) +@SpringBootApplication(scanBasePackageClasses = {LoadFlowApplication.class, NetworkStoreService.class, NotificationService.class, ComputationExceptionHandler.class}) public class LoadFlowApplication { public static void main(String[] args) { SpringApplication.run(LoadFlowApplication.class, args); From 112b3a0fbc0f605567c43989b48d82138dd3c12e Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Tue, 2 Dec 2025 16:09:40 +0100 Subject: [PATCH 09/13] Remove ws-commons upgrade --- pom.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/pom.xml b/pom.xml index 45bd9c2b..e8c61b8a 100644 --- a/pom.xml +++ b/pom.xml @@ -61,7 +61,6 @@ org.gridsuite:loadflow-server 1.7.0-SNAPSHOT - 1.34.0-SNAPSHOT @@ -147,7 +146,6 @@ com.powsybl powsybl-ws-commons - ${powsybl-ws-commons.version} org.springframework.boot From 1de5fdec3b86c4fddc51f327f8d608d777489bfa Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Tue, 2 Dec 2025 16:19:23 +0100 Subject: [PATCH 10/13] Reinstate ws-commons upgrade --- pom.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pom.xml b/pom.xml index e8c61b8a..13b0f6aa 100644 --- a/pom.xml +++ b/pom.xml @@ -61,6 +61,7 @@ org.gridsuite:loadflow-server 1.7.0-SNAPSHOT + 1.34.0 @@ -146,6 +147,7 @@ com.powsybl powsybl-ws-commons + ${powsybl-ws-commons.version} org.springframework.boot From fd7dcf1b83ee3a14cab141696a4cba065b0c05f3 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Tue, 2 Dec 2025 16:50:15 +0100 Subject: [PATCH 11/13] Move overrides to dependencyManagement --- pom.xml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 13b0f6aa..b11f953f 100644 --- a/pom.xml +++ b/pom.xml @@ -96,6 +96,18 @@ + + + com.powsybl + powsybl-ws-commons + ${powsybl-ws-commons.version} + + + + org.gridsuite + gridsuite-computation + ${gridsuite-computation.version} + org.antlr @@ -130,7 +142,6 @@ org.gridsuite gridsuite-computation - ${gridsuite-computation.version} com.powsybl @@ -147,7 +158,6 @@ com.powsybl powsybl-ws-commons - ${powsybl-ws-commons.version} org.springframework.boot From c406c2f77a3d9e40845eea0807710302e82599bd Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Tue, 2 Dec 2025 17:13:28 +0100 Subject: [PATCH 12/13] Upgrade computation --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b11f953f..6e6f8a7e 100644 --- a/pom.xml +++ b/pom.xml @@ -60,7 +60,7 @@ gridsuite org.gridsuite:loadflow-server - 1.7.0-SNAPSHOT + 1.7.0 1.34.0 From 52afee365400a2621f52253f5f3de411182419d8 Mon Sep 17 00:00:00 2001 From: Hugo Marcellin Date: Tue, 2 Dec 2025 17:52:35 +0100 Subject: [PATCH 13/13] Upgrade Filter lib and autowire restTemplateBuilder to FilterService --- pom.xml | 7 +++++++ .../gridsuite/loadflow/server/service/FilterService.java | 9 +++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 6e6f8a7e..1268cfc0 100644 --- a/pom.xml +++ b/pom.xml @@ -62,6 +62,7 @@ 1.7.0 1.34.0 + 1.15.0 @@ -109,6 +110,12 @@ ${gridsuite-computation.version} + + org.gridsuite + gridsuite-filter + ${gridsuite-filter.version} + + org.antlr antlr4 diff --git a/src/main/java/org/gridsuite/loadflow/server/service/FilterService.java b/src/main/java/org/gridsuite/loadflow/server/service/FilterService.java index ca189f29..142323af 100644 --- a/src/main/java/org/gridsuite/loadflow/server/service/FilterService.java +++ b/src/main/java/org/gridsuite/loadflow/server/service/FilterService.java @@ -15,6 +15,7 @@ import org.gridsuite.filter.utils.EquipmentType; import org.gridsuite.loadflow.server.dto.Column; import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.stereotype.Service; import java.util.List; @@ -28,10 +29,10 @@ @Service public class FilterService extends AbstractFilterService { - public FilterService( - NetworkStoreService networkStoreService, - @Value("${gridsuite.services.filter-server.base-uri:http://filter-server/}") String filterServerBaseUri) { - super(networkStoreService, filterServerBaseUri); + public FilterService(RestTemplateBuilder restTemplateBuilder, + NetworkStoreService networkStoreService, + @Value("${gridsuite.services.filter-server.base-uri:http://filter-server/}") String filterServerBaseUri) { + super(restTemplateBuilder, networkStoreService, filterServerBaseUri); } public Optional getResourceFilter(@NonNull UUID networkUuid, @NonNull String variantId, @NonNull GlobalFilter globalFilter) {