diff --git a/network-store-client/pom.xml b/network-store-client/pom.xml index ca330907c..66a03e016 100644 --- a/network-store-client/pom.xml +++ b/network-store-client/pom.xml @@ -41,16 +41,21 @@ org.springframework spring-web - org.jgrapht jgrapht-core + + org.slf4j + slf4j-api + ${slf4j.version} + org.slf4j log4j-over-slf4j + ${slf4j.version} runtime diff --git a/network-store-client/src/main/java/com/powsybl/network/store/client/NetworkStoreService.java b/network-store-client/src/main/java/com/powsybl/network/store/client/NetworkStoreService.java index f5237204c..fe064ddab 100644 --- a/network-store-client/src/main/java/com/powsybl/network/store/client/NetworkStoreService.java +++ b/network-store-client/src/main/java/com/powsybl/network/store/client/NetworkStoreService.java @@ -32,8 +32,8 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; +import jakarta.annotation.PostConstruct; +import jakarta.annotation.PreDestroy; import java.nio.file.Path; import java.util.*; import java.util.concurrent.ExecutorService; diff --git a/network-store-client/src/main/java/com/powsybl/network/store/client/RestClientImpl.java b/network-store-client/src/main/java/com/powsybl/network/store/client/RestClientImpl.java index ac2484aae..d4fe3e319 100644 --- a/network-store-client/src/main/java/com/powsybl/network/store/client/RestClientImpl.java +++ b/network-store-client/src/main/java/com/powsybl/network/store/client/RestClientImpl.java @@ -6,12 +6,15 @@ */ package com.powsybl.network.store.client; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.joda.JodaModule; import com.powsybl.commons.PowsyblException; import com.powsybl.network.store.model.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.*; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.web.client.RestTemplate; import org.springframework.web.util.DefaultUriBuilderFactory; import org.springframework.web.util.UriComponentsBuilder; @@ -37,11 +40,22 @@ public RestClientImpl(RestTemplateBuilder restTemplateBuilder) { } public static RestTemplateBuilder createRestTemplateBuilder(String baseUri) { - return new RestTemplateBuilder() - .uriTemplateHandler(new DefaultUriBuilderFactory(UriComponentsBuilder.fromUriString(baseUri) + return new RestTemplateBuilder(restTemplate1 -> restTemplate1.setMessageConverters(List.of(createMapping()))).uriTemplateHandler(new DefaultUriBuilderFactory(UriComponentsBuilder.fromUriString(baseUri) .path(NetworkStoreApi.VERSION))); } + private static ObjectMapper createObjectMapper() { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.registerModule(new JodaModule()); + return objectMapper; + } + + private static MappingJackson2HttpMessageConverter createMapping() { + var converter = new MappingJackson2HttpMessageConverter(); + converter.setObjectMapper(createObjectMapper()); + return converter; + } + private ResponseEntity> getDocument(String url, Object... uriVariables) { return restTemplate.exchange(url, HttpMethod.GET, @@ -59,8 +73,8 @@ private static TopLevelDocument getBody(Re return body; } - private static PowsyblException createHttpException(String url, String method, HttpStatus httpStatus) { - return new PowsyblException("Fail to " + method + " at " + url + ", status: " + httpStatus); + private static PowsyblException createHttpException(String url, String method, HttpStatusCode httpStatusCode) { + return new PowsyblException("Fail to " + method + " at " + url + ", status: " + httpStatusCode); } @Override diff --git a/network-store-client/src/main/java/com/powsybl/network/store/client/RestNetworkStoreClient.java b/network-store-client/src/main/java/com/powsybl/network/store/client/RestNetworkStoreClient.java index d838c31ec..c1391a83e 100644 --- a/network-store-client/src/main/java/com/powsybl/network/store/client/RestNetworkStoreClient.java +++ b/network-store-client/src/main/java/com/powsybl/network/store/client/RestNetworkStoreClient.java @@ -8,6 +8,7 @@ package com.powsybl.network.store.client; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.joda.JodaModule; import com.google.common.base.Stopwatch; import com.google.common.collect.Lists; import com.powsybl.commons.PowsyblException; @@ -46,6 +47,8 @@ public RestNetworkStoreClient(RestClient restClient) { public RestNetworkStoreClient(RestClient restClient, ObjectMapper objectMapper) { this.restClient = Objects.requireNonNull(restClient); this.objectMapper = Objects.requireNonNull(objectMapper); + objectMapper.registerModule(new JodaModule()); + } // network @@ -234,7 +237,7 @@ public Optional> getSubstation(UUID networkUuid, @Override public void updateSubstations(UUID networkUuid, List> substationResources, AttributeFilter attributeFilter) { - updateAll("substation", "/networks/{networkUuid}/substations/", substationResources, attributeFilter, networkUuid); + updateAll("substation", "/networks/{networkUuid}/substations", substationResources, attributeFilter, networkUuid); } public void removeSubstations(UUID networkUuid, int variantNum, List substationsId) { diff --git a/network-store-client/src/main/java/com/powsybl/network/store/client/RestTemplateResponseErrorHandler.java b/network-store-client/src/main/java/com/powsybl/network/store/client/RestTemplateResponseErrorHandler.java index fb98efcc5..c48fcce9b 100644 --- a/network-store-client/src/main/java/com/powsybl/network/store/client/RestTemplateResponseErrorHandler.java +++ b/network-store-client/src/main/java/com/powsybl/network/store/client/RestTemplateResponseErrorHandler.java @@ -19,9 +19,6 @@ import java.nio.charset.StandardCharsets; import java.util.Optional; -import static org.springframework.http.HttpStatus.Series.CLIENT_ERROR; -import static org.springframework.http.HttpStatus.Series.SERVER_ERROR; - /** * @author Geoffroy Jamgotchian */ @@ -29,16 +26,16 @@ public class RestTemplateResponseErrorHandler implements ResponseErrorHandler { @Override public boolean hasError(ClientHttpResponse response) throws IOException { - return response.getStatusCode().series() == CLIENT_ERROR - || response.getStatusCode().series() == SERVER_ERROR; + return response.getStatusCode().is4xxClientError() + || response.getStatusCode().is5xxServerError(); } @Override public void handleError(ClientHttpResponse response) throws IOException { - if (response.getStatusCode().series() == HttpStatus.Series.SERVER_ERROR) { + if (response.getStatusCode().is5xxServerError()) { throw new HttpServerErrorException(response.getStatusCode(), response.getStatusText(), response.getBody().readAllBytes(), StandardCharsets.UTF_8); - } else if (response.getStatusCode().series() == HttpStatus.Series.CLIENT_ERROR) { + } else if (response.getStatusCode().is4xxClientError()) { if (response.getStatusCode() != HttpStatus.NOT_FOUND) { throw new HttpClientErrorException(response.getStatusCode(), response.getStatusText(), response.getBody().readAllBytes(), StandardCharsets.UTF_8); diff --git a/network-store-client/src/test/java/com/powsybl/network/store/client/RestNetworkStoreClientTest.java b/network-store-client/src/test/java/com/powsybl/network/store/client/RestNetworkStoreClientTest.java index 170651226..a5612fbd1 100644 --- a/network-store-client/src/test/java/com/powsybl/network/store/client/RestNetworkStoreClientTest.java +++ b/network-store-client/src/test/java/com/powsybl/network/store/client/RestNetworkStoreClientTest.java @@ -8,6 +8,7 @@ package com.powsybl.network.store.client; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.joda.JodaModule; import com.google.common.collect.ImmutableList; import com.powsybl.commons.PowsyblException; import com.powsybl.iidm.network.*; @@ -68,6 +69,7 @@ public class RestNetworkStoreClientTest { @Before public void setUp() throws IOException { + objectMapper.registerModule(new JodaModule()); Resource n1 = Resource.networkBuilder() .id("n1") .attributes(NetworkAttributes.builder() diff --git a/network-store-iidm-impl/pom.xml b/network-store-iidm-impl/pom.xml index f57005357..5e5848064 100644 --- a/network-store-iidm-impl/pom.xml +++ b/network-store-iidm-impl/pom.xml @@ -68,11 +68,13 @@ org.slf4j log4j-over-slf4j + ${slf4j.version} test org.slf4j slf4j-simple + ${slf4j.version} test diff --git a/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/AbstractBranchAdder.java b/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/AbstractBranchAdder.java index b0dc62b82..ba084d8b6 100644 --- a/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/AbstractBranchAdder.java +++ b/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/AbstractBranchAdder.java @@ -91,7 +91,7 @@ protected void checkNodeBus1() { private String getConnectionBus1() { if (bus1 != null) { - if ((connectableBus1 != null) && (!bus1.equals(connectableBus1))) { + if (!bus1.equals(connectableBus1)) { throw new ValidationException(this, "connection bus 1 is different to connectable bus 1"); } return bus1; @@ -172,7 +172,7 @@ protected void checkNodeBus2() { private String getConnectionBus2() { if (bus2 != null) { - if ((connectableBus2 != null) && (!bus2.equals(connectableBus2))) { + if (connectableBus2 != null && !bus2.equals(connectableBus2)) { throw new ValidationException(this, "connection bus 2 is different to connectable bus 2"); } return bus2; diff --git a/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/AbstractInjectionAdder.java b/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/AbstractInjectionAdder.java index c849177ae..a242b7e49 100644 --- a/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/AbstractInjectionAdder.java +++ b/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/AbstractInjectionAdder.java @@ -100,7 +100,7 @@ private void checkNode() { private String getConnectionBus() { if (bus != null) { - if ((connectableBus != null) && (!bus.equals(connectableBus))) { + if (connectableBus != null && !bus.equals(connectableBus)) { throw new ValidationException(this, "connection bus is different to connectable bus"); } return bus; diff --git a/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/NodeBreakerTopology.java b/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/NodeBreakerTopology.java index c59e7b4f2..d6caac214 100644 --- a/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/NodeBreakerTopology.java +++ b/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/NodeBreakerTopology.java @@ -94,8 +94,8 @@ protected boolean isCalculatedBusValid(Set nodesOrBusesConnected, Map equipmentCount = new EquipmentCount<>(); equipmentCount.count(nodesOrBusesConnected, verticesByNodeOrBus); return !isBusView ? !nodesOrBusesConnected.isEmpty() : - (equipmentCount.busbarSectionCount >= 1 && equipmentCount.feederCount >= 1) - || (equipmentCount.branchCount >= 1 && equipmentCount.feederCount >= 2); + equipmentCount.busbarSectionCount >= 1 && equipmentCount.feederCount >= 1 + || equipmentCount.branchCount >= 1 && equipmentCount.feederCount >= 2; } @Override diff --git a/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/NodeBreakerViewImpl.java b/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/NodeBreakerViewImpl.java index 3f8eb33f6..7708674ed 100644 --- a/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/NodeBreakerViewImpl.java +++ b/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/NodeBreakerViewImpl.java @@ -370,8 +370,8 @@ public int getInternalConnectionCount() { @Override public void removeInternalConnections(int node1, int node2) { if (!getVoltageLevelResource().getAttributes().getInternalConnections() - .removeIf(attributes -> (attributes.getNode1() == node1 && attributes.getNode2() == node2) || - (attributes.getNode1() == node2 && attributes.getNode2() == node1))) { + .removeIf(attributes -> attributes.getNode1() == node1 && attributes.getNode2() == node2 || + attributes.getNode1() == node2 && attributes.getNode2() == node1)) { throw new PowsyblException("Internal connection not found between " + node1 + " and " + node2); } } diff --git a/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/SubstationUtil.java b/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/SubstationUtil.java index 60cd7496e..ea730cca0 100644 --- a/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/SubstationUtil.java +++ b/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/SubstationUtil.java @@ -39,7 +39,7 @@ private static void checkRemovability(Substation substation, Branch branch) { Objects.requireNonNull(branch); Substation s1 = branch.getTerminal1().getVoltageLevel().getSubstation().orElse(null); Substation s2 = branch.getTerminal2().getVoltageLevel().getSubstation().orElse(null); - if ((s1 != substation) || (s2 != substation)) { + if (s1 != substation || s2 != substation) { throw createIsolationException(substation); } } @@ -50,7 +50,7 @@ private static void checkRemovability(Substation substation, ThreeWindingsTransf Substation s1 = twt.getLeg1().getTerminal().getVoltageLevel().getSubstation().orElse(null); Substation s2 = twt.getLeg2().getTerminal().getVoltageLevel().getSubstation().orElse(null); Substation s3 = twt.getLeg3().getTerminal().getVoltageLevel().getSubstation().orElse(null); - if ((s1 != substation) || (s2 != substation) || (s3 != substation)) { + if (s1 != substation || s2 != substation || s3 != substation) { throw createIsolationException(substation); } } @@ -62,7 +62,7 @@ private static void checkRemovability(Substation substation, HvdcConverterStatio if (hvdcLine != null) { Substation s1 = hvdcLine.getConverterStation1().getTerminal().getVoltageLevel().getSubstation().orElse(null); Substation s2 = hvdcLine.getConverterStation2().getTerminal().getVoltageLevel().getSubstation().orElse(null); - if ((s1 != substation) || (s2 != substation)) { + if (s1 != substation || s2 != substation) { throw createIsolationException(substation); } } diff --git a/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/TerminalImpl.java b/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/TerminalImpl.java index 49813ee9d..f197a2b1c 100644 --- a/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/TerminalImpl.java +++ b/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/TerminalImpl.java @@ -348,7 +348,7 @@ public boolean isConnected() { return this.getBusView().getBus() != null; } else { var attributes = getAttributes(); - return (attributes.getBus() != null) && attributes.getBus().equals(attributes.getConnectableBus()); + return attributes.getBus() != null && attributes.getBus().equals(attributes.getConnectableBus()); } } diff --git a/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/ThreeWindingsTransformerAdderImpl.java b/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/ThreeWindingsTransformerAdderImpl.java index 99b57facf..5969cc248 100644 --- a/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/ThreeWindingsTransformerAdderImpl.java +++ b/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/ThreeWindingsTransformerAdderImpl.java @@ -136,7 +136,7 @@ protected void checkParams() { private String getConnectionBus() { if (bus != null) { - if ((connectableBus != null) && (!bus.equals(connectableBus))) { + if (connectableBus != null && !bus.equals(connectableBus)) { throw new ValidationException(this, "connection bus leg " + legNumber + " is different to connectable bus"); } return bus; diff --git a/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/VoltageLevelUtil.java b/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/VoltageLevelUtil.java index b285514a2..b804c7996 100644 --- a/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/VoltageLevelUtil.java +++ b/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/VoltageLevelUtil.java @@ -23,7 +23,7 @@ static void checkRemovability(VoltageLevel voltageLevel) { if (MULTIPLE_TERMINALS_CONNECTABLE_TYPES.contains(type)) { // Reject lines, 2WT and 3WT throw new AssertionError("The voltage level '" + voltageLevel.getId() + "' cannot be removed because of a remaining " + type); - } else if ((type == IdentifiableType.HVDC_CONVERTER_STATION) && (network.getHvdcLine((HvdcConverterStation) connectable) != null)) { + } else if (type == IdentifiableType.HVDC_CONVERTER_STATION && network.getHvdcLine((HvdcConverterStation) connectable) != null) { // Reject all converter stations connected to a HVDC line throw new AssertionError("The voltage level '" + voltageLevel.getId() + "' cannot be removed because of a remaining HVDC line"); } diff --git a/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/extensions/HvdcOperatorActivePowerRangeImpl.java b/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/extensions/HvdcOperatorActivePowerRangeImpl.java index be6584ca2..bf628b6c7 100644 --- a/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/extensions/HvdcOperatorActivePowerRangeImpl.java +++ b/network-store-iidm-impl/src/main/java/com/powsybl/network/store/iidm/impl/extensions/HvdcOperatorActivePowerRangeImpl.java @@ -60,7 +60,7 @@ public HvdcOperatorActivePowerRangeImpl setOprFromCS2toCS1(float oprFromCS2toCS1 } private float checkOPR(float opr, HvdcConverterStation from, HvdcConverterStation to) { - if ((!Float.isNaN(opr)) && (opr < 0)) { + if (!Float.isNaN(opr) && opr < 0) { String message = "OPR from " + from.getId() + " to " + to.getId() + " must be greater than 0 (current value " + opr + ")."; throw new IllegalArgumentException(message); } diff --git a/network-store-model/pom.xml b/network-store-model/pom.xml index a50444292..caea5e5d7 100644 --- a/network-store-model/pom.xml +++ b/network-store-model/pom.xml @@ -20,7 +20,7 @@ Network store model - 2.1.10 + 2.2.9 @@ -56,9 +56,9 @@ jackson-datatype-joda - io.swagger.core.v3 - swagger-annotations - ${swagger-annotations.version} + io.swagger.core.v3 + swagger-annotations-jakarta + ${swagger-annotations.version} org.apache.commons @@ -90,6 +90,7 @@ org.slf4j slf4j-simple + ${slf4j.version} test diff --git a/network-store-model/src/main/java/com/powsybl/network/store/model/ReactiveLimitsAttributes.java b/network-store-model/src/main/java/com/powsybl/network/store/model/ReactiveLimitsAttributes.java index fd380330f..d7bf61775 100644 --- a/network-store-model/src/main/java/com/powsybl/network/store/model/ReactiveLimitsAttributes.java +++ b/network-store-model/src/main/java/com/powsybl/network/store/model/ReactiveLimitsAttributes.java @@ -19,8 +19,8 @@ include = JsonTypeInfo.As.PROPERTY, property = "type") @JsonSubTypes({ - @JsonSubTypes.Type(value = ReactiveCapabilityCurveAttributes.class, name = "ReactiveCapabilityCurve"), - @JsonSubTypes.Type(value = MinMaxReactiveLimitsAttributes.class, name = "MinMaxReactiveLimits") + @JsonSubTypes.Type(value = ReactiveCapabilityCurveAttributes.class, name = "ReactiveCapabilityCurve"), + @JsonSubTypes.Type(value = MinMaxReactiveLimitsAttributes.class, name = "MinMaxReactiveLimits") }) @JsonInclude(JsonInclude.Include.NON_NULL) public interface ReactiveLimitsAttributes { diff --git a/network-store-model/src/main/java/com/powsybl/network/store/model/ShuntCompensatorModelAttributes.java b/network-store-model/src/main/java/com/powsybl/network/store/model/ShuntCompensatorModelAttributes.java index a078441c5..18868a8eb 100644 --- a/network-store-model/src/main/java/com/powsybl/network/store/model/ShuntCompensatorModelAttributes.java +++ b/network-store-model/src/main/java/com/powsybl/network/store/model/ShuntCompensatorModelAttributes.java @@ -19,8 +19,8 @@ include = JsonTypeInfo.As.PROPERTY, property = "type") @JsonSubTypes({ - @JsonSubTypes.Type(value = ShuntCompensatorLinearModelAttributes.class, name = "LinearModel"), - @JsonSubTypes.Type(value = ShuntCompensatorNonLinearModelAttributes.class, name = "NonLinearModel") + @JsonSubTypes.Type(value = ShuntCompensatorLinearModelAttributes.class, name = "LinearModel"), + @JsonSubTypes.Type(value = ShuntCompensatorNonLinearModelAttributes.class, name = "NonLinearModel") }) @JsonInclude(JsonInclude.Include.NON_NULL) public interface ShuntCompensatorModelAttributes { diff --git a/pom.xml b/pom.xml index 62636f6f4..ccaaa3c96 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ com.powsybl powsybl-parent - 12 + 15 @@ -47,11 +47,12 @@ - 2.7.3 + 3.1.2 3.9 2023.2.1 1.5.0 - + 2.0.4 + 1.4.5 ../network-store-client-distribution/target/site/jacoco-aggregate/jacoco.xml, ../../network-store-client-distributiont/target/site/jacoco-aggregate/jacoco.xml, @@ -86,6 +87,23 @@ import + + + ch.qos.logback + logback-classic + ${logback.version} + + + ch.qos.logback + logback-core + ${logback.version} + + + org.slf4j + slf4j-api + ${slf4j.version} + + com.powsybl