From 3014f4ff12142026e68935d3a469b60cd0534557 Mon Sep 17 00:00:00 2001 From: Etienne Homer Date: Thu, 16 Apr 2026 13:52:29 +0200 Subject: [PATCH 01/15] Fix import parameters Signed-off-by: Etienne Homer --- .../study/server/dto/RootNetworkInfos.java | 24 ++++++++++++++++-- .../rootnetwork/RootNetworkEntity.java | 25 +++++++++++++++---- .../study/server/service/ConsumerService.java | 14 +++++------ .../server/service/RootNetworkService.java | 9 ++++--- .../study/server/service/StudyService.java | 4 +-- .../server/rootnetworks/RootNetworkTest.java | 4 +-- 6 files changed, 58 insertions(+), 22 deletions(-) diff --git a/src/main/java/org/gridsuite/study/server/dto/RootNetworkInfos.java b/src/main/java/org/gridsuite/study/server/dto/RootNetworkInfos.java index 6e4d65ff97..668de63075 100644 --- a/src/main/java/org/gridsuite/study/server/dto/RootNetworkInfos.java +++ b/src/main/java/org/gridsuite/study/server/dto/RootNetworkInfos.java @@ -1,10 +1,13 @@ package org.gridsuite.study.server.dto; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import lombok.Builder; import lombok.Getter; import lombok.Setter; import org.gridsuite.study.server.repository.rootnetwork.RootNetworkEntity; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; @@ -28,7 +31,7 @@ public class RootNetworkInfos { // reportUuid of network import, root node one private UUID reportUuid; - private Map importParameters; + private Map importParameters; private Map importParametersRaw; @@ -46,7 +49,7 @@ public RootNetworkEntity toEntity() { .caseName(caseInfos.getCaseName()) .caseFormat(caseInfos.getCaseFormat()) .reportUuid(reportUuid) - .importParameters(importParameters) + .importParameters(serializeImportParameters(importParameters)) .tag(tag); if (rootNetworkNodeInfos != null) { @@ -55,4 +58,21 @@ public RootNetworkEntity toEntity() { return rootNetworkEntityBuilder.build(); } + + public static Map serializeImportParameters(Map params) { + if (params == null) { + return null; + } + ObjectMapper objectMapper = new ObjectMapper(); + Map result = new HashMap<>(); + params.forEach((key, value) -> { + try { + result.put(key, objectMapper.writeValueAsString(value)); + } catch (JsonProcessingException e) { + result.put(key, String.valueOf(value)); + } + }); + return result; + } + } diff --git a/src/main/java/org/gridsuite/study/server/repository/rootnetwork/RootNetworkEntity.java b/src/main/java/org/gridsuite/study/server/repository/rootnetwork/RootNetworkEntity.java index afb5475107..234556c104 100644 --- a/src/main/java/org/gridsuite/study/server/repository/rootnetwork/RootNetworkEntity.java +++ b/src/main/java/org/gridsuite/study/server/repository/rootnetwork/RootNetworkEntity.java @@ -6,16 +6,15 @@ */ package org.gridsuite.study.server.repository.rootnetwork; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.persistence.*; import lombok.*; import org.gridsuite.study.server.dto.*; import org.gridsuite.study.server.networkmodificationtree.entities.RootNetworkNodeInfoEntity; import org.gridsuite.study.server.repository.StudyEntity; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.UUID; +import java.util.*; import java.util.stream.Collectors; /** @@ -93,7 +92,7 @@ public RootNetworkInfos toDto() { rootNetworkInfosBuilder.id(this.id) .name(this.name) .networkInfos(new NetworkInfos(this.networkUuid, this.networkId)) - .importParameters(this.importParameters) + .importParameters(deserializeImportParameters(this.importParameters)) .caseInfos(new CaseInfos(this.caseUuid, this.originalCaseUuid, this.caseName, this.caseFormat)) .reportUuid(this.reportUuid) .tag(tag) @@ -107,4 +106,20 @@ public RootNetworkInfos toDto() { public BasicRootNetworkInfos toBasicDto() { return new BasicRootNetworkInfos(getId(), getOriginalCaseUuid(), getName(), getTag(), getDescription(), false); } + + public static Map deserializeImportParameters(Map rawParams) { + if (rawParams == null) { + return null; + } + ObjectMapper objectMapper = new ObjectMapper(); + Map result = new HashMap<>(); + rawParams.forEach((key, value) -> { + try { + result.put(key, objectMapper.readValue(value, Object.class)); + } catch (JsonProcessingException e) { + result.put(key, value); + } + }); + return result; + } } diff --git a/src/main/java/org/gridsuite/study/server/service/ConsumerService.java b/src/main/java/org/gridsuite/study/server/service/ConsumerService.java index cb86c07671..4dc2e559ea 100644 --- a/src/main/java/org/gridsuite/study/server/service/ConsumerService.java +++ b/src/main/java/org/gridsuite/study/server/service/ConsumerService.java @@ -224,10 +224,10 @@ public Consumer> consumeCaseImportSucceeded() { String caseName = message.getHeaders().get(HEADER_CASE_NAME, String.class); Map rawParameters = message.getHeaders().get(HEADER_IMPORT_PARAMETERS, Map.class); // String longer than 1024 bytes are converted to com.rabbitmq.client.LongString (https://docs.spring.io/spring-amqp/docs/3.0.0/reference/html/#message-properties-converters) - Map importParameters = new HashMap<>(); - if (rawParameters != null) { - rawParameters.forEach((key, value) -> importParameters.put(key, value.toString())); - } +// Map importParameters = new HashMap<>(); +// if (rawParameters != null) { +// rawParameters.forEach((key, value) -> importParameters.put(key, value.toString())); +// } if (receiverString != null) { CaseImportReceiver receiver; @@ -238,12 +238,12 @@ public Consumer> consumeCaseImportSucceeded() { return; } - handleConsumeCaseImportSucceeded(receiver, networkUuid, networkId, caseName, caseFormat, importParameters); + handleConsumeCaseImportSucceeded(receiver, networkUuid, networkId, caseName, caseFormat, rawParameters); } }; } - private void handleConsumeCaseImportSucceeded(CaseImportReceiver receiver, UUID networkUuid, String networkId, String caseName, String caseFormat, Map importParameters) { + private void handleConsumeCaseImportSucceeded(CaseImportReceiver receiver, UUID networkUuid, String networkId, String caseName, String caseFormat, Map importParameters) { UUID caseUuid = receiver.getCaseUuid(); UUID studyUuid = receiver.getStudyUuid(); String userId = receiver.getUserId(); @@ -292,7 +292,7 @@ private void handleConsumeCaseImportSucceeded(CaseImportReceiver receiver, UUID } private void insertStudy(UUID studyUuid, String userId, NetworkInfos networkInfos, CaseInfos caseInfos, - Map importParameters, UUID importReportUuid) { + Map importParameters, UUID importReportUuid) { UserProfileInfos userProfileInfos = studyService.getUserProfile(userId); UUID loadFlowParametersUuid = createDefaultLoadFlowParameters(userId, userProfileInfos); diff --git a/src/main/java/org/gridsuite/study/server/service/RootNetworkService.java b/src/main/java/org/gridsuite/study/server/service/RootNetworkService.java index 3c1e7b84a9..40e4e9c01f 100644 --- a/src/main/java/org/gridsuite/study/server/service/RootNetworkService.java +++ b/src/main/java/org/gridsuite/study/server/service/RootNetworkService.java @@ -30,6 +30,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; +import static org.gridsuite.study.server.dto.RootNetworkInfos.serializeImportParameters; import static org.gridsuite.study.server.error.StudyBusinessErrorCode.*; /** @@ -114,7 +115,7 @@ private void updateRootNetworkInfos(RootNetworkEntity rootNetworkEntity, RootNet updateCaseInfos(rootNetworkEntity, rootNetworkInfos.getCaseInfos()); updateNetworkInfos(rootNetworkEntity, rootNetworkInfos.getNetworkInfos()); - rootNetworkEntity.setImportParameters(rootNetworkInfos.getImportParameters()); + rootNetworkEntity.setImportParameters(serializeImportParameters(rootNetworkInfos.getImportParameters())); rootNetworkEntity.setReportUuid(rootNetworkInfos.getReportUuid()); } @@ -164,8 +165,8 @@ public String getCaseName(UUID rootNetworkUuid) { return getRootNetwork(rootNetworkUuid).map(RootNetworkEntity::getCaseName).orElseThrow(() -> new StudyException(NOT_FOUND, "Root network not found")); } - public Map getImportParameters(UUID rootNetworkUuid) { - return rootNetworkRepository.findWithImportParametersById(rootNetworkUuid).map(RootNetworkEntity::getImportParameters).orElseThrow(() -> new StudyException(NOT_FOUND, "Root network not found")); + public Map getImportParameters(UUID rootNetworkUuid) { + return rootNetworkRepository.findWithImportParametersById(rootNetworkUuid).map(RootNetworkEntity::getImportParameters).map(RootNetworkEntity::deserializeImportParameters).orElseThrow(() -> new StudyException(NOT_FOUND, "Root network not found")); } public List getRootNetworkInfosWithLinksInfos(UUID studyUuid) { @@ -183,7 +184,7 @@ public void duplicateStudyRootNetworks(StudyEntity newStudyEntity, StudyEntity s UUID clonedNetworkUuid = networkService.getNetworkUuid(clonedNetwork); UUID clonedCaseUuid = caseService.duplicateCase(rootNetworkEntityToDuplicate.getCaseUuid(), false); - Map newImportParameters = Map.copyOf(rootNetworkEntityToDuplicate.getImportParameters()); + Map newImportParameters = Map.copyOf(rootNetworkEntityToDuplicate.getImportParameters()); UUID clonedRootNodeReportUuid = reportService.duplicateReport(rootNetworkEntityToDuplicate.getReportUuid()); diff --git a/src/main/java/org/gridsuite/study/server/service/StudyService.java b/src/main/java/org/gridsuite/study/server/service/StudyService.java index 22d814ab95..a1c0fddd36 100644 --- a/src/main/java/org/gridsuite/study/server/service/StudyService.java +++ b/src/main/java/org/gridsuite/study/server/service/StudyService.java @@ -626,7 +626,7 @@ public CreatedStudyBasicInfos insertStudy(UUID studyUuid, String userId, Network UUID voltageInitParametersUuid, UUID securityAnalysisParametersUuid, UUID sensitivityAnalysisParametersUuid, UUID networkVisualizationParametersUuid, UUID dynamicSecurityAnalysisParametersUuid, UUID dynamicMarginCalculationParametersUuid, UUID stateEstimationParametersUuid, UUID pccMinParametersUuid, - UUID spreadsheetConfigCollectionUuid, UUID workspacesConfigUuid, Map importParameters, UUID importReportUuid) { + UUID spreadsheetConfigCollectionUuid, UUID workspacesConfigUuid, Map importParameters, UUID importReportUuid) { Objects.requireNonNull(studyUuid); Objects.requireNonNull(userId); Objects.requireNonNull(networkInfos.getNetworkUuid()); @@ -1538,7 +1538,7 @@ private StudyEntity saveStudyThenCreateBasicTree(UUID studyUuid, NetworkInfos ne UUID voltageInitParametersUuid, UUID securityAnalysisParametersUuid, UUID sensitivityAnalysisParametersUuid, UUID networkVisualizationParametersUuid, UUID dynamicSecurityAnalysisParametersUuid, UUID dynamicMarginCalculationParametersUuid, UUID stateEstimationParametersUuid, UUID pccMinParametersUuid, - UUID spreadsheetConfigCollectionUuid, UUID workspacesConfigUuid, Map importParameters, UUID importReportUuid) { + UUID spreadsheetConfigCollectionUuid, UUID workspacesConfigUuid, Map importParameters, UUID importReportUuid) { StudyEntity studyEntity = StudyEntity.builder() .id(studyUuid) diff --git a/src/test/java/org/gridsuite/study/server/rootnetworks/RootNetworkTest.java b/src/test/java/org/gridsuite/study/server/rootnetworks/RootNetworkTest.java index b0b2674d7e..71928f649a 100644 --- a/src/test/java/org/gridsuite/study/server/rootnetworks/RootNetworkTest.java +++ b/src/test/java/org/gridsuite/study/server/rootnetworks/RootNetworkTest.java @@ -384,7 +384,7 @@ void testCreateRootNetworkConsumer() throws Exception { // prepare all headers that will be sent to consumer supposed to receive "caseImportSucceeded" message Consumer> messageConsumer = consumerService.consumeCaseImportSucceeded(); CaseImportReceiver caseImportReceiver = new CaseImportReceiver(studyEntity.getId(), newRootNetworkUuid, CASE_UUID2, CASE_UUID, REPORT_UUID2, USER_ID, 0L, CaseImportAction.ROOT_NETWORK_CREATION); - Map importParameters = new HashMap<>(); + Map importParameters = new HashMap<>(); importParameters.put("param1", "value1"); importParameters.put("param2", "value2"); Map headers = createConsumeCaseImportSucceededHeaders(NETWORK_UUID2.toString(), NETWORK_ID2, CASE_FORMAT2, CASE_NAME2, caseImportReceiver, importParameters); @@ -863,7 +863,7 @@ void getOrderedRootNetworksFromService() { assertEquals("dummyRootNetwork3", resultAfterCreation.get(2).name()); } - private Map createConsumeCaseImportSucceededHeaders(String networkUuid, String networkId, String caseFormat, String caseName, CaseImportReceiver caseImportReceiver, Map importParameters) throws JsonProcessingException { + private Map createConsumeCaseImportSucceededHeaders(String networkUuid, String networkId, String caseFormat, String caseName, CaseImportReceiver caseImportReceiver, Map importParameters) throws JsonProcessingException { Map headers = new HashMap<>(); headers.put("networkUuid", networkUuid); headers.put("networkId", networkId); From 91d863feb55d66680db5e7371b132afd44a62661 Mon Sep 17 00:00:00 2001 From: Etienne Homer Date: Mon, 11 May 2026 11:37:38 +0200 Subject: [PATCH 02/15] clean Signed-off-by: Etienne Homer --- .../org/gridsuite/study/server/service/ConsumerService.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/main/java/org/gridsuite/study/server/service/ConsumerService.java b/src/main/java/org/gridsuite/study/server/service/ConsumerService.java index 0f5e56d02a..3bb6dcd787 100644 --- a/src/main/java/org/gridsuite/study/server/service/ConsumerService.java +++ b/src/main/java/org/gridsuite/study/server/service/ConsumerService.java @@ -222,11 +222,6 @@ public Consumer> consumeCaseImportSucceeded() { String caseFormat = message.getHeaders().get(HEADER_CASE_FORMAT, String.class); String caseName = message.getHeaders().get(HEADER_CASE_NAME, String.class); Map rawParameters = message.getHeaders().get(HEADER_IMPORT_PARAMETERS, Map.class); - // String longer than 1024 bytes are converted to com.rabbitmq.client.LongString (https://docs.spring.io/spring-amqp/docs/3.0.0/reference/html/#message-properties-converters) -// Map importParameters = new HashMap<>(); -// if (rawParameters != null) { -// rawParameters.forEach((key, value) -> importParameters.put(key, value.toString())); -// } if (receiverString != null) { CaseImportReceiver receiver; From b067516f3339feec5c9ca94fffba0be02bd1b13b Mon Sep 17 00:00:00 2001 From: Etienne Homer Date: Tue, 19 May 2026 11:35:15 +0200 Subject: [PATCH 03/15] fix tests Signed-off-by: Etienne Homer --- .../server/repository/rootnetwork/RootNetworkEntity.java | 2 +- .../server/studycontroller/StudyControllerCreationTest.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/gridsuite/study/server/repository/rootnetwork/RootNetworkEntity.java b/src/main/java/org/gridsuite/study/server/repository/rootnetwork/RootNetworkEntity.java index 234556c104..8b14c7d8f0 100644 --- a/src/main/java/org/gridsuite/study/server/repository/rootnetwork/RootNetworkEntity.java +++ b/src/main/java/org/gridsuite/study/server/repository/rootnetwork/RootNetworkEntity.java @@ -73,7 +73,7 @@ public class RootNetworkEntity { @Column(name = "reportUuid") private UUID reportUuid; - @ElementCollection + @ElementCollection(fetch = FetchType.EAGER) @CollectionTable(name = "importParameters", indexes = {@Index(name = "rootNetworkEntity_importParameters_idx1", columnList = "root_network_entity_id")}, foreignKey = @ForeignKey(name = "rootNetworkEntity_importParameters_fk1")) diff --git a/src/test/java/org/gridsuite/study/server/studycontroller/StudyControllerCreationTest.java b/src/test/java/org/gridsuite/study/server/studycontroller/StudyControllerCreationTest.java index 36f9aacef9..2cc569ef1a 100644 --- a/src/test/java/org/gridsuite/study/server/studycontroller/StudyControllerCreationTest.java +++ b/src/test/java/org/gridsuite/study/server/studycontroller/StudyControllerCreationTest.java @@ -207,8 +207,8 @@ void testConsumeCaseImportSucceededWithParameters() throws JsonProcessingExcepti StudyEntity studyEntity = studyRepository.findById(studyUuid).orElseThrow(); UUID rootNetworkUUID = testUtils.getOneRootNetworkUuid(studyEntity.getId()); - Map expectedImportParameters = new HashMap<>(); - importParameters.forEach((key, value) -> expectedImportParameters.put(key, value.toString())); + Map expectedImportParameters = new HashMap<>(); + importParameters.forEach((key, value) -> expectedImportParameters.put(key, value)); assertThat(rootNetworkService.getImportParameters(rootNetworkUUID)).usingRecursiveComparison().isEqualTo(expectedImportParameters); assertStudyCreationFinishedMessageReceived(studyUuid, userId); From 6ad4a55df5f646826247eb4f2852e0ddb663acb9 Mon Sep 17 00:00:00 2001 From: Etienne Homer Date: Tue, 19 May 2026 13:48:04 +0200 Subject: [PATCH 04/15] sonar fixes Signed-off-by: Etienne Homer --- .../study/server/dto/RootNetworkInfos.java | 3 ++- .../server/error/StudyBusinessErrorCode.java | 3 ++- .../repository/rootnetwork/RootNetworkEntity.java | 15 ++++++++++++--- .../changesets/changelog_20260519T112945Z.xml | 11 +++++++++++ .../StudyControllerCreationTest.java | 2 +- 5 files changed, 28 insertions(+), 6 deletions(-) create mode 100644 src/main/resources/db/changelog/changesets/changelog_20260519T112945Z.xml diff --git a/src/main/java/org/gridsuite/study/server/dto/RootNetworkInfos.java b/src/main/java/org/gridsuite/study/server/dto/RootNetworkInfos.java index 668de63075..58a28db37b 100644 --- a/src/main/java/org/gridsuite/study/server/dto/RootNetworkInfos.java +++ b/src/main/java/org/gridsuite/study/server/dto/RootNetworkInfos.java @@ -60,11 +60,12 @@ public RootNetworkEntity toEntity() { } public static Map serializeImportParameters(Map params) { + Map result = new HashMap<>(); if (params == null) { return null; } + ObjectMapper objectMapper = new ObjectMapper(); - Map result = new HashMap<>(); params.forEach((key, value) -> { try { result.put(key, objectMapper.writeValueAsString(value)); diff --git a/src/main/java/org/gridsuite/study/server/error/StudyBusinessErrorCode.java b/src/main/java/org/gridsuite/study/server/error/StudyBusinessErrorCode.java index 25c649a1c6..099ed6f237 100644 --- a/src/main/java/org/gridsuite/study/server/error/StudyBusinessErrorCode.java +++ b/src/main/java/org/gridsuite/study/server/error/StudyBusinessErrorCode.java @@ -30,7 +30,8 @@ public enum StudyBusinessErrorCode implements BusinessErrorCode { NETWORK_EXPORT_FAILED("study.networkExportFailed"), TOO_MANY_NAD_CONFIGS("study.tooManyNadConfigs"), TOO_MANY_MAP_CARDS("study.tooManyMapCards"), - ELEMENT_ALREADY_EXISTS("study.elementAlreadyExists"); + ELEMENT_ALREADY_EXISTS("study.elementAlreadyExists"), + UNPROCESSABLE_IMPORT_PARAMETER("study.unprocessableImportParameter"); private final String value; diff --git a/src/main/java/org/gridsuite/study/server/repository/rootnetwork/RootNetworkEntity.java b/src/main/java/org/gridsuite/study/server/repository/rootnetwork/RootNetworkEntity.java index 8b14c7d8f0..eb9d1450d6 100644 --- a/src/main/java/org/gridsuite/study/server/repository/rootnetwork/RootNetworkEntity.java +++ b/src/main/java/org/gridsuite/study/server/repository/rootnetwork/RootNetworkEntity.java @@ -11,12 +11,16 @@ import jakarta.persistence.*; import lombok.*; import org.gridsuite.study.server.dto.*; +import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.networkmodificationtree.entities.RootNetworkNodeInfoEntity; import org.gridsuite.study.server.repository.StudyEntity; import java.util.*; import java.util.stream.Collectors; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.NOT_FOUND; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.UNPROCESSABLE_IMPORT_PARAMETER; + /** * @author Le Saulnier Kevin */ @@ -108,16 +112,21 @@ public BasicRootNetworkInfos toBasicDto() { } public static Map deserializeImportParameters(Map rawParams) { + Map result = new HashMap<>(); if (rawParams == null) { - return null; + return result; } + ObjectMapper objectMapper = new ObjectMapper(); - Map result = new HashMap<>(); rawParams.forEach((key, value) -> { + if (value == null) { + result.put(key, null); + return; + } try { result.put(key, objectMapper.readValue(value, Object.class)); } catch (JsonProcessingException e) { - result.put(key, value); + throw new StudyException(UNPROCESSABLE_IMPORT_PARAMETER, "Import parameter '" + key + " => " + value + "' is not valid JSON: " + e.getMessage()); } }); return result; diff --git a/src/main/resources/db/changelog/changesets/changelog_20260519T112945Z.xml b/src/main/resources/db/changelog/changesets/changelog_20260519T112945Z.xml new file mode 100644 index 0000000000..68c43e1013 --- /dev/null +++ b/src/main/resources/db/changelog/changesets/changelog_20260519T112945Z.xml @@ -0,0 +1,11 @@ + + + + + + import_parameters='' + + + diff --git a/src/test/java/org/gridsuite/study/server/studycontroller/StudyControllerCreationTest.java b/src/test/java/org/gridsuite/study/server/studycontroller/StudyControllerCreationTest.java index 2cc569ef1a..0e58fd6781 100644 --- a/src/test/java/org/gridsuite/study/server/studycontroller/StudyControllerCreationTest.java +++ b/src/test/java/org/gridsuite/study/server/studycontroller/StudyControllerCreationTest.java @@ -208,7 +208,7 @@ void testConsumeCaseImportSucceededWithParameters() throws JsonProcessingExcepti UUID rootNetworkUUID = testUtils.getOneRootNetworkUuid(studyEntity.getId()); Map expectedImportParameters = new HashMap<>(); - importParameters.forEach((key, value) -> expectedImportParameters.put(key, value)); + importParameters.forEach(expectedImportParameters::put); assertThat(rootNetworkService.getImportParameters(rootNetworkUUID)).usingRecursiveComparison().isEqualTo(expectedImportParameters); assertStudyCreationFinishedMessageReceived(studyUuid, userId); From 98899c56d202b8fd377b4806867b605c119f68fa Mon Sep 17 00:00:00 2001 From: Etienne Homer Date: Tue, 19 May 2026 13:52:14 +0200 Subject: [PATCH 05/15] clean import Signed-off-by: Etienne Homer --- .../study/server/repository/rootnetwork/RootNetworkEntity.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/org/gridsuite/study/server/repository/rootnetwork/RootNetworkEntity.java b/src/main/java/org/gridsuite/study/server/repository/rootnetwork/RootNetworkEntity.java index eb9d1450d6..d2e70a057b 100644 --- a/src/main/java/org/gridsuite/study/server/repository/rootnetwork/RootNetworkEntity.java +++ b/src/main/java/org/gridsuite/study/server/repository/rootnetwork/RootNetworkEntity.java @@ -18,7 +18,6 @@ import java.util.*; import java.util.stream.Collectors; -import static org.gridsuite.study.server.error.StudyBusinessErrorCode.NOT_FOUND; import static org.gridsuite.study.server.error.StudyBusinessErrorCode.UNPROCESSABLE_IMPORT_PARAMETER; /** From 2e1acd45eb5576430ac00ebda7507067cbd90b26 Mon Sep 17 00:00:00 2001 From: Etienne Homer Date: Tue, 19 May 2026 14:20:37 +0200 Subject: [PATCH 06/15] move to JsonUtils Signed-off-by: Etienne Homer --- .../study/server/dto/RootNetworkInfos.java | 23 +--------- .../rootnetwork/RootNetworkEntity.java | 26 +---------- .../server/service/RootNetworkService.java | 8 ++-- .../study/server/utils/JsonUtils.java | 43 +++++++++++++++++++ 4 files changed, 50 insertions(+), 50 deletions(-) diff --git a/src/main/java/org/gridsuite/study/server/dto/RootNetworkInfos.java b/src/main/java/org/gridsuite/study/server/dto/RootNetworkInfos.java index 58a28db37b..ac57e9ccba 100644 --- a/src/main/java/org/gridsuite/study/server/dto/RootNetworkInfos.java +++ b/src/main/java/org/gridsuite/study/server/dto/RootNetworkInfos.java @@ -1,17 +1,16 @@ package org.gridsuite.study.server.dto; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import lombok.Builder; import lombok.Getter; import lombok.Setter; import org.gridsuite.study.server.repository.rootnetwork.RootNetworkEntity; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; +import static org.gridsuite.study.server.utils.JsonUtils.serializeImportParameters; + @Builder @Getter @Setter @@ -58,22 +57,4 @@ public RootNetworkEntity toEntity() { return rootNetworkEntityBuilder.build(); } - - public static Map serializeImportParameters(Map params) { - Map result = new HashMap<>(); - if (params == null) { - return null; - } - - ObjectMapper objectMapper = new ObjectMapper(); - params.forEach((key, value) -> { - try { - result.put(key, objectMapper.writeValueAsString(value)); - } catch (JsonProcessingException e) { - result.put(key, String.valueOf(value)); - } - }); - return result; - } - } diff --git a/src/main/java/org/gridsuite/study/server/repository/rootnetwork/RootNetworkEntity.java b/src/main/java/org/gridsuite/study/server/repository/rootnetwork/RootNetworkEntity.java index d2e70a057b..ed798a9070 100644 --- a/src/main/java/org/gridsuite/study/server/repository/rootnetwork/RootNetworkEntity.java +++ b/src/main/java/org/gridsuite/study/server/repository/rootnetwork/RootNetworkEntity.java @@ -6,19 +6,16 @@ */ package org.gridsuite.study.server.repository.rootnetwork; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.persistence.*; import lombok.*; import org.gridsuite.study.server.dto.*; -import org.gridsuite.study.server.error.StudyException; import org.gridsuite.study.server.networkmodificationtree.entities.RootNetworkNodeInfoEntity; import org.gridsuite.study.server.repository.StudyEntity; import java.util.*; import java.util.stream.Collectors; -import static org.gridsuite.study.server.error.StudyBusinessErrorCode.UNPROCESSABLE_IMPORT_PARAMETER; +import static org.gridsuite.study.server.utils.JsonUtils.deserializeImportParameters; /** * @author Le Saulnier Kevin @@ -109,25 +106,4 @@ public RootNetworkInfos toDto() { public BasicRootNetworkInfos toBasicDto() { return new BasicRootNetworkInfos(getId(), getOriginalCaseUuid(), getName(), getTag(), getDescription(), false); } - - public static Map deserializeImportParameters(Map rawParams) { - Map result = new HashMap<>(); - if (rawParams == null) { - return result; - } - - ObjectMapper objectMapper = new ObjectMapper(); - rawParams.forEach((key, value) -> { - if (value == null) { - result.put(key, null); - return; - } - try { - result.put(key, objectMapper.readValue(value, Object.class)); - } catch (JsonProcessingException e) { - throw new StudyException(UNPROCESSABLE_IMPORT_PARAMETER, "Import parameter '" + key + " => " + value + "' is not valid JSON: " + e.getMessage()); - } - }); - return result; - } } diff --git a/src/main/java/org/gridsuite/study/server/service/RootNetworkService.java b/src/main/java/org/gridsuite/study/server/service/RootNetworkService.java index 40e4e9c01f..5facc277ca 100644 --- a/src/main/java/org/gridsuite/study/server/service/RootNetworkService.java +++ b/src/main/java/org/gridsuite/study/server/service/RootNetworkService.java @@ -21,6 +21,7 @@ import org.gridsuite.study.server.repository.rootnetwork.RootNetworkRequestRepository; import org.gridsuite.study.server.repository.rootnetwork.RootNetworkEntity; import org.gridsuite.study.server.repository.rootnetwork.RootNetworkRepository; +import org.gridsuite.study.server.utils.JsonUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -30,7 +31,6 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import static org.gridsuite.study.server.dto.RootNetworkInfos.serializeImportParameters; import static org.gridsuite.study.server.error.StudyBusinessErrorCode.*; /** @@ -115,7 +115,7 @@ private void updateRootNetworkInfos(RootNetworkEntity rootNetworkEntity, RootNet updateCaseInfos(rootNetworkEntity, rootNetworkInfos.getCaseInfos()); updateNetworkInfos(rootNetworkEntity, rootNetworkInfos.getNetworkInfos()); - rootNetworkEntity.setImportParameters(serializeImportParameters(rootNetworkInfos.getImportParameters())); + rootNetworkEntity.setImportParameters(JsonUtils.serializeImportParameters(rootNetworkInfos.getImportParameters())); rootNetworkEntity.setReportUuid(rootNetworkInfos.getReportUuid()); } @@ -166,7 +166,7 @@ public String getCaseName(UUID rootNetworkUuid) { } public Map getImportParameters(UUID rootNetworkUuid) { - return rootNetworkRepository.findWithImportParametersById(rootNetworkUuid).map(RootNetworkEntity::getImportParameters).map(RootNetworkEntity::deserializeImportParameters).orElseThrow(() -> new StudyException(NOT_FOUND, "Root network not found")); + return rootNetworkRepository.findWithImportParametersById(rootNetworkUuid).map(RootNetworkEntity::getImportParameters).map(JsonUtils::deserializeImportParameters).orElseThrow(() -> new StudyException(NOT_FOUND, "Root network not found")); } public List getRootNetworkInfosWithLinksInfos(UUID studyUuid) { @@ -184,7 +184,7 @@ public void duplicateStudyRootNetworks(StudyEntity newStudyEntity, StudyEntity s UUID clonedNetworkUuid = networkService.getNetworkUuid(clonedNetwork); UUID clonedCaseUuid = caseService.duplicateCase(rootNetworkEntityToDuplicate.getCaseUuid(), false); - Map newImportParameters = Map.copyOf(rootNetworkEntityToDuplicate.getImportParameters()); + Map newImportParameters = JsonUtils.deserializeImportParameters(rootNetworkEntityToDuplicate.getImportParameters()); UUID clonedRootNodeReportUuid = reportService.duplicateReport(rootNetworkEntityToDuplicate.getReportUuid()); diff --git a/src/main/java/org/gridsuite/study/server/utils/JsonUtils.java b/src/main/java/org/gridsuite/study/server/utils/JsonUtils.java index 7fbe37c167..70e475ad28 100644 --- a/src/main/java/org/gridsuite/study/server/utils/JsonUtils.java +++ b/src/main/java/org/gridsuite/study/server/utils/JsonUtils.java @@ -14,11 +14,16 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import lombok.NonNull; import org.gridsuite.study.server.dto.modification.ModificationApplicationContext; +import org.gridsuite.study.server.error.StudyException; import org.springframework.data.util.Pair; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.function.Predicate; +import static org.gridsuite.study.server.error.StudyBusinessErrorCode.UNPROCESSABLE_IMPORT_PARAMETER; + public final class JsonUtils { private JsonUtils() { throw new UnsupportedOperationException("This is a utility class and cannot be instantiated"); @@ -65,4 +70,42 @@ public static String getModificationContextJsonString(ObjectMapper objectMapper, throw new IllegalStateException("Impossible to parse modification context", e); } } + + public static Map deserializeImportParameters(Map rawParams) { + Map result = new HashMap<>(); + if (rawParams == null) { + return result; + } + + ObjectMapper objectMapper = new ObjectMapper(); + rawParams.forEach((key, value) -> { + if (value == null) { + result.put(key, null); + return; + } + try { + result.put(key, objectMapper.readValue(value, Object.class)); + } catch (JsonProcessingException e) { + throw new StudyException(UNPROCESSABLE_IMPORT_PARAMETER, "Import parameter '" + key + " => " + value + "' is not valid JSON: " + e.getMessage()); + } + }); + return result; + } + + public static Map serializeImportParameters(Map params) { + Map result = new HashMap<>(); + if (params == null) { + return result; + } + + ObjectMapper objectMapper = new ObjectMapper(); + params.forEach((key, value) -> { + try { + result.put(key, objectMapper.writeValueAsString(value)); + } catch (JsonProcessingException e) { + result.put(key, String.valueOf(value)); + } + }); + return result; + } } From 23ba8a2413996b7ad08b94c5c4ec212487b05588 Mon Sep 17 00:00:00 2001 From: Etienne Homer Date: Tue, 19 May 2026 15:17:32 +0200 Subject: [PATCH 07/15] test with objects Signed-off-by: Etienne Homer --- .../gridsuite/study/server/rootnetworks/RootNetworkTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/test/java/org/gridsuite/study/server/rootnetworks/RootNetworkTest.java b/src/test/java/org/gridsuite/study/server/rootnetworks/RootNetworkTest.java index 095e83b9b2..7f001868c6 100644 --- a/src/test/java/org/gridsuite/study/server/rootnetworks/RootNetworkTest.java +++ b/src/test/java/org/gridsuite/study/server/rootnetworks/RootNetworkTest.java @@ -386,7 +386,8 @@ void testCreateRootNetworkConsumer() throws Exception { CaseImportReceiver caseImportReceiver = new CaseImportReceiver(studyEntity.getId(), newRootNetworkUuid, CASE_UUID2, CASE_UUID, REPORT_UUID2, USER_ID, 0L, CaseImportAction.ROOT_NETWORK_CREATION); Map importParameters = new HashMap<>(); importParameters.put("param1", "value1"); - importParameters.put("param2", "value2"); + importParameters.put("param2", true); + importParameters.put("param3", null); Map headers = createConsumeCaseImportSucceededHeaders(NETWORK_UUID2.toString(), NETWORK_ID2, CASE_FORMAT2, CASE_NAME2, caseImportReceiver, importParameters); // send message to consumer From 3ad708db867856b35f0f0b7601f7c5fbdad85fdd Mon Sep 17 00:00:00 2001 From: Etienne Homer Date: Tue, 19 May 2026 15:22:12 +0200 Subject: [PATCH 08/15] thow on serialization Signed-off-by: Etienne Homer --- src/main/java/org/gridsuite/study/server/utils/JsonUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/gridsuite/study/server/utils/JsonUtils.java b/src/main/java/org/gridsuite/study/server/utils/JsonUtils.java index 70e475ad28..c9b00d5146 100644 --- a/src/main/java/org/gridsuite/study/server/utils/JsonUtils.java +++ b/src/main/java/org/gridsuite/study/server/utils/JsonUtils.java @@ -103,7 +103,7 @@ public static Map serializeImportParameters(Map try { result.put(key, objectMapper.writeValueAsString(value)); } catch (JsonProcessingException e) { - result.put(key, String.valueOf(value)); + throw new StudyException(UNPROCESSABLE_IMPORT_PARAMETER, "Import parameter '" + key + " => " + value + "' is not serializable: " + e.getMessage()); } }); return result; From fbad7e8f162a74bd1190d1d466dcb27b422eb741 Mon Sep 17 00:00:00 2001 From: Etienne Homer Date: Tue, 19 May 2026 16:21:42 +0200 Subject: [PATCH 09/15] use common objectMapper Signed-off-by: Etienne Homer --- .../service/NetworkModificationService.java | 2 +- .../study/server/utils/JsonUtils.java | 14 +-- .../study/server/NetworkModificationTest.java | 106 +++++++++--------- .../studycontroller/NodeControllerTest.java | 16 +-- .../server/studycontroller/StudyTest.java | 4 +- 5 files changed, 71 insertions(+), 71 deletions(-) diff --git a/src/main/java/org/gridsuite/study/server/service/NetworkModificationService.java b/src/main/java/org/gridsuite/study/server/service/NetworkModificationService.java index ddb37da6fa..523ef23aa0 100644 --- a/src/main/java/org/gridsuite/study/server/service/NetworkModificationService.java +++ b/src/main/java/org/gridsuite/study/server/service/NetworkModificationService.java @@ -149,7 +149,7 @@ public NetworkModificationsResult createModification(UUID groupUuid, HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); - HttpEntity httpEntity = new HttpEntity<>(getModificationContextJsonString(objectMapper, modificationContextInfos), headers); + HttpEntity httpEntity = new HttpEntity<>(getModificationContextJsonString(modificationContextInfos), headers); return restTemplate.exchange(path, HttpMethod.POST, httpEntity, NetworkModificationsResult.class).getBody(); } diff --git a/src/main/java/org/gridsuite/study/server/utils/JsonUtils.java b/src/main/java/org/gridsuite/study/server/utils/JsonUtils.java index c9b00d5146..380da6899d 100644 --- a/src/main/java/org/gridsuite/study/server/utils/JsonUtils.java +++ b/src/main/java/org/gridsuite/study/server/utils/JsonUtils.java @@ -25,6 +25,8 @@ import static org.gridsuite.study.server.error.StudyBusinessErrorCode.UNPROCESSABLE_IMPORT_PARAMETER; public final class JsonUtils { + private static final ObjectMapper MAPPER = new ObjectMapper(); + private JsonUtils() { throw new UnsupportedOperationException("This is a utility class and cannot be instantiated"); } @@ -60,10 +62,10 @@ public static JsonNode nodeAt(@NonNull final JsonNode node, @NonNull final JsonP return nodeAt(node, jsonNode -> !jsonNode.isMissingNode(), pointers); } - public static String getModificationContextJsonString(ObjectMapper objectMapper, Pair> modificationContextInfos) { + public static String getModificationContextJsonString(Pair> modificationContextInfos) { try { - ObjectNode modificationJson = (ObjectNode) objectMapper.readTree(modificationContextInfos.getFirst()); - ObjectNode modificationContextJson = objectMapper.valueToTree(modificationContextInfos); + ObjectNode modificationJson = (ObjectNode) MAPPER.readTree(modificationContextInfos.getFirst()); + ObjectNode modificationContextJson = MAPPER.valueToTree(modificationContextInfos); modificationContextJson.set(Pair.class.getDeclaredField("first").getName(), modificationJson); return modificationContextJson.toString(); } catch (JsonProcessingException | NoSuchFieldException e) { @@ -77,14 +79,13 @@ public static Map deserializeImportParameters(Map { if (value == null) { result.put(key, null); return; } try { - result.put(key, objectMapper.readValue(value, Object.class)); + result.put(key, MAPPER.readValue(value, Object.class)); } catch (JsonProcessingException e) { throw new StudyException(UNPROCESSABLE_IMPORT_PARAMETER, "Import parameter '" + key + " => " + value + "' is not valid JSON: " + e.getMessage()); } @@ -98,10 +99,9 @@ public static Map serializeImportParameters(Map return result; } - ObjectMapper objectMapper = new ObjectMapper(); params.forEach((key, value) -> { try { - result.put(key, objectMapper.writeValueAsString(value)); + result.put(key, MAPPER.writeValueAsString(value)); } catch (JsonProcessingException e) { throw new StudyException(UNPROCESSABLE_IMPORT_PARAMETER, "Import parameter '" + key + " => " + value + "' is not serializable: " + e.getMessage()); } diff --git a/src/test/java/org/gridsuite/study/server/NetworkModificationTest.java b/src/test/java/org/gridsuite/study/server/NetworkModificationTest.java index e1c9110553..ab47112935 100644 --- a/src/test/java/org/gridsuite/study/server/NetworkModificationTest.java +++ b/src/test/java/org/gridsuite/study/server/NetworkModificationTest.java @@ -538,7 +538,7 @@ void testLocalBuildValue() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); assertEquals(BuildStatus.BUILT_WITH_ERROR, networkModificationTreeService.getNodeBuildStatus(modificationNodeUuid, rootNetworkUuid).getGlobalBuildStatus()); Pair> modificationBody = Pair.of(jsonCreateLoadInfos, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNodeUuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); // Build second node is OK networkModificationResult.get().setApplicationStatus(NetworkModificationResult.ApplicationStatus.ALL_OK); @@ -556,7 +556,7 @@ void testLocalBuildValue() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNode2Uuid); assertEquals(BuildStatus.BUILT_WITH_ERROR, networkModificationTreeService.getNodeBuildStatus(modificationNode2Uuid, rootNetworkUuid).getGlobalBuildStatus()); modificationBody = Pair.of(jsonCreateLoadInfos, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode2Uuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); //Build modification node 2, local status should be BUILT and computed one should be BUILT_WITH_ERRORS assertEquals(BuildStatus.BUILT, networkModificationTreeService.getNodeBuildStatus(modificationNode2Uuid, rootNetworkUuid).getLocalBuildStatus()); @@ -700,7 +700,7 @@ void testNetworkModificationSwitch() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNode1Uuid); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); Pair> modificationBody = Pair.of(bodyJson, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode1Uuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); List csbiListResult = studyService.getStudies(); @@ -716,7 +716,7 @@ void testNetworkModificationSwitch() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNode2Uuid); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); modificationBody = Pair.of(bodyJson, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode2Uuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); // test build status on switch modification RootNetworkNodeInfoEntity rootNetworkNodeInfo1Entity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode1.getId(), studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(NOT_FOUND, "Root network not found")); @@ -744,7 +744,7 @@ void testNetworkModificationSwitch() throws Exception { checkEquipmentMessagesReceived(studyNameUserIdUuid, modificationNode1Uuid, expectedPayload); checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNode1Uuid); modificationBody = Pair.of(bodyJson, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode1Uuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); reportServerStubs.verifyDeleteReport(); @@ -791,7 +791,7 @@ void testNetworkModificationEquipment() throws Exception { checkEquipmentCreatingMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); Pair> modificationBody = Pair.of(bodyJson, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNodeUuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); List csbiListResponse = studyService.getStudies(); @@ -807,7 +807,7 @@ void testNetworkModificationEquipment() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNodeUuid2); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); modificationBody = Pair.of(bodyJson, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNodeUuid2, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); } @Test @@ -857,7 +857,7 @@ void testCreateGenerator() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNode1Uuid); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); Pair> modificationBody = Pair.of(bodyJsonCreate, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode1Uuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); // create generator on second modification node mockMvc.perform(post(URI_NETWORK_MODIF, studyNameUserIdUuid, modificationNode2Uuid) @@ -869,7 +869,7 @@ void testCreateGenerator() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNode2Uuid); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); modificationBody = Pair.of(bodyJsonCreate, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode2Uuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); // update generator creation body.replace("generatorId", "generatorId2"); @@ -933,7 +933,7 @@ void testCreateShuntsCompensator() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNode1Uuid); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); Pair> modificationBody = Pair.of(createShuntCompensatorAttributes, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode1Uuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); // update shunt compensator creation UUID stubPutId = wireMockStubs.stubNetworkModificationPut(MODIFICATION_UUID); @@ -997,7 +997,7 @@ void testCreateLine() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNode1Uuid); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); Pair> modificationBody = Pair.of(createLineAttributes, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode1Uuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); // create line on second modification node mockMvc.perform(post(URI_NETWORK_MODIF, studyNameUserIdUuid, modificationNode2Uuid) @@ -1008,7 +1008,7 @@ void testCreateLine() throws Exception { checkEquipmentCreatingMessagesReceived(studyNameUserIdUuid, modificationNode2Uuid); checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNode2Uuid); modificationBody = Pair.of(createLineAttributes, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode2Uuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); // update line creation String lineAttributesUpdated = "{\"type\":\"" + ModificationType.LINE_CREATION @@ -1080,7 +1080,7 @@ void testCreateTwoWindingsTransformer() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNode1Uuid); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); Pair> modificationBody = Pair.of(createTwoWindingsTransformerAttributes, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode1Uuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); // create 2WT on second modification node mockMvc.perform(post(URI_NETWORK_MODIF, studyNameUserIdUuid, modificationNode2Uuid) @@ -1092,7 +1092,7 @@ void testCreateTwoWindingsTransformer() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNode2Uuid); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); modificationBody = Pair.of(createTwoWindingsTransformerAttributes, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode2Uuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); // update Two Windings Transformer creation String twoWindingsTransformerAttributesUpdated = "{\"type\":\"" + ModificationType.TWO_WINDINGS_TRANSFORMER_CREATION + "\",\"equipmentId\":\"2wtId\",\"equipmentName\":\"2wtName\",\"seriesResistance\":\"10\",\"seriesReactance\":\"10\",\"magnetizingConductance\":\"100\",\"magnetizingSusceptance\":\"100\",\"ratedVoltage1\":\"480\",\"ratedVoltage2\":\"380\",\"voltageLevelId1\":\"CHOO5P6\",\"busOrBusbarSectionId1\":\"CHOO5P6_1\",\"voltageLevelId2\":\"CHOO5P6\",\"busOrBusbarSectionId2\":\"CHOO5P6_1\"}"; @@ -1202,11 +1202,11 @@ void testUpdateLines() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNode1Uuid); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); Pair> modificationBody = Pair.of(bodyJsonCreate1, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode1Uuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); bodyLineInfos.put("equipmentId", "lineFailedId"); String bodyJsonCreate2 = mapper.writeValueAsString(bodyLineInfos); - String modificationBodyJson = getModificationContextJsonString(mapper, Pair.of(bodyJsonCreate2, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode1Uuid, NETWORK_UUID)))); + String modificationBodyJson = getModificationContextJsonString(Pair.of(bodyJsonCreate2, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode1Uuid, NETWORK_UUID)))); wireMockStubs.stubNetworkModificationPostWithError(modificationBodyJson); mockMvc.perform(post(URI_NETWORK_MODIF, studyNameUserIdUuid, modificationNode1Uuid) .content(bodyJsonCreate2).contentType(MediaType.APPLICATION_JSON) @@ -1231,11 +1231,11 @@ void testUpdateLines() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNode1Uuid); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); modificationBody = Pair.of(bodyJsonCreate3, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode1Uuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); bodyLineInfos.put("equipmentId", "lineFailedId"); String bodyJsonCreate4 = mapper.writeValueAsString(bodyLineInfos); - modificationBodyJson = getModificationContextJsonString(mapper, Pair.of(bodyJsonCreate4, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode1Uuid, NETWORK_UUID)))); + modificationBodyJson = getModificationContextJsonString(Pair.of(bodyJsonCreate4, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode1Uuid, NETWORK_UUID)))); wireMockStubs.stubNetworkModificationPostWithError(modificationBodyJson); mockMvc.perform(post(URI_NETWORK_MODIF, studyNameUserIdUuid, modificationNode1Uuid) .content(bodyJsonCreate4).contentType(MediaType.APPLICATION_JSON) @@ -1260,11 +1260,11 @@ void testUpdateLines() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNode1Uuid); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); modificationBody = Pair.of(bodyJsonCreate5, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode1Uuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); bodyLineInfos.put("equipmentId", "lineFailedId"); String bodyJsonCreate6 = mapper.writeValueAsString(bodyLineInfos); - modificationBodyJson = getModificationContextJsonString(mapper, Pair.of(bodyJsonCreate6, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode1Uuid, NETWORK_UUID)))); + modificationBodyJson = getModificationContextJsonString(Pair.of(bodyJsonCreate6, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode1Uuid, NETWORK_UUID)))); wireMockStubs.stubNetworkModificationPostWithError(modificationBodyJson); mockMvc.perform(post(URI_NETWORK_MODIF, studyNameUserIdUuid, modificationNode1Uuid) .content(bodyJsonCreate6).contentType(MediaType.APPLICATION_JSON) @@ -1289,11 +1289,11 @@ void testUpdateLines() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNode1Uuid); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); modificationBody = Pair.of(bodyJsonCreate7, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode1Uuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); bodyLineInfos.put("equipmentId", "lineFailedId"); String bodyJsonCreate8 = mapper.writeValueAsString(bodyLineInfos); - modificationBodyJson = getModificationContextJsonString(mapper, Pair.of(bodyJsonCreate8, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode1Uuid, NETWORK_UUID)))); + modificationBodyJson = getModificationContextJsonString(Pair.of(bodyJsonCreate8, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode1Uuid, NETWORK_UUID)))); wireMockStubs.stubNetworkModificationPostWithError(modificationBodyJson); mockMvc.perform(post(URI_NETWORK_MODIF, studyNameUserIdUuid, modificationNode1Uuid) .content(bodyJsonCreate8).contentType(MediaType.APPLICATION_JSON) @@ -1316,7 +1316,7 @@ void testUpdateLines() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNode2Uuid); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); modificationBody = Pair.of(bodyJsonCreate9, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode2Uuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); } @Test @@ -1355,7 +1355,7 @@ void testCreateLoad() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNode1Uuid); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); Pair> modificationBody = Pair.of(createLoadAttributes, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode1Uuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); // create load on second modification node mockMvc.perform(post(URI_NETWORK_MODIF, studyNameUserIdUuid, modificationNode2Uuid) @@ -1367,7 +1367,7 @@ void testCreateLoad() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNode2Uuid); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); modificationBody = Pair.of(createLoadAttributes, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode2Uuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); // update load creation String loadAttributesUpdated = "{\"type\":\"" + ModificationType.LOAD_CREATION + "\",\"loadId\":\"loadId2\",\"loadName\":\"loadName2\",\"loadType\":\"UNDEFINED\",\"activePower\":\"50.0\",\"reactivePower\":\"25.0\",\"voltageLevelId\":\"idVL2\",\"busId\":\"idBus2\"}"; @@ -1428,7 +1428,7 @@ void testModifyLoad() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); Pair> modificationBody = Pair.of(loadModificationAttributes, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNodeUuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); // modify load on second modification node mockMvc.perform(post(URI_NETWORK_MODIF, studyNameUserIdUuid, modificationNodeUuid2) @@ -1440,7 +1440,7 @@ void testModifyLoad() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNodeUuid2); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); modificationBody = Pair.of(loadModificationAttributes, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNodeUuid2, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); // update load modification UUID stubPutId = wireMockStubs.stubNetworkModificationPut(MODIFICATION_UUID); @@ -1486,7 +1486,7 @@ void testModifyEquipment() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); Pair> modificationBody = Pair.of(equipmentModificationAttribute, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNodeUuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); // modify generator on second modification node mockMvc.perform(post(URI_NETWORK_MODIF, studyNameUserIdUuid, modificationNodeUuid2) @@ -1498,7 +1498,7 @@ void testModifyEquipment() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNodeUuid2); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); modificationBody = Pair.of(equipmentModificationAttribute, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNodeUuid2, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); // update generator modification String generatorAttributesUpdated = "{\"type\":\"" + ModificationType.GENERATOR_MODIFICATION + "\",\"generatorId\":\"generatorId1\",\"generatorType\":\"FICTITIOUS\",\"activePower\":\"70.0\"}"; @@ -1547,7 +1547,7 @@ void testCreateSubstation() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNode1Uuid); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); Pair> modificationBody = Pair.of(createSubstationAttributes, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode1Uuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); // create substation on second modification node mockMvc.perform(post(URI_NETWORK_MODIF, studyNameUserIdUuid, modificationNode2Uuid) @@ -1559,7 +1559,7 @@ void testCreateSubstation() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNode2Uuid); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); modificationBody = Pair.of(createSubstationAttributes, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode2Uuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); // update substation creation UUID stubPutId = wireMockStubs.stubNetworkModificationPut(MODIFICATION_UUID); @@ -1619,7 +1619,7 @@ void testCreateVoltageLevel() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNode1Uuid); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); Pair> modificationBody = Pair.of(createVoltageLevelAttributes, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode1Uuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); // create voltage level on second modification node mockMvc.perform(post(URI_NETWORK_MODIF, studyNameUserIdUuid, modificationNode2Uuid) @@ -1631,7 +1631,7 @@ void testCreateVoltageLevel() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNode2Uuid); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); modificationBody = Pair.of(createVoltageLevelAttributes, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode2Uuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); // update voltage level creation UUID stubPutId = wireMockStubs.stubNetworkModificationPut(MODIFICATION_UUID); @@ -1693,7 +1693,7 @@ void testLineSplitWithVoltageLevel() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); Pair> modificationBody = Pair.of(lineSplitWoVLasJSON, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNodeUuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); UUID stubPutId = wireMockStubs.stubNetworkModificationPutWithBody(MODIFICATION_UUID, lineSplitWoVLasJSON); mockMvc.perform(put(URI_NETWORK_MODIF_WITH_ID, studyNameUserIdUuid, modificationNodeUuid, MODIFICATION_UUID) @@ -1707,7 +1707,7 @@ void testLineSplitWithVoltageLevel() throws Exception { wireMockStubs.verifyNetworkModificationPut(stubPutId, MODIFICATION_UUID, lineSplitWoVLasJSON); String badBody = "{\"type\":\"" + ModificationType.LINE_SPLIT_WITH_VOLTAGE_LEVEL + "\",\"bogus\":\"bogus\"}"; - String modificationBodyJson = getModificationContextJsonString(mapper, Pair.of(badBody, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNodeUuid, NETWORK_UUID)))); + String modificationBodyJson = getModificationContextJsonString(Pair.of(badBody, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNodeUuid, NETWORK_UUID)))); wireMockStubs.stubNetworkModificationPostWithBodyAndError(modificationBodyJson); stubPutId = wireMockStubs.stubNetworkModificationPutWithBodyAndError(MODIFICATION_UUID, badBody); mockMvc.perform(post(URI_NETWORK_MODIF, studyNameUserIdUuid, modificationNodeUuid) @@ -1753,7 +1753,7 @@ void testLineAttachToVoltageLevel() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); Pair> modificationBody = Pair.of(createLineAttachToVoltageLevelAttributes, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNodeUuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); UUID stubPutId = wireMockStubs.stubNetworkModificationPutWithBody(MODIFICATION_UUID, createLineAttachToVoltageLevelAttributes); mockMvc.perform(put(URI_NETWORK_MODIF_WITH_ID, studyNameUserIdUuid, modificationNodeUuid, MODIFICATION_UUID) @@ -1788,7 +1788,7 @@ void testLinesAttachToSplitLines() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); Pair> modificationBody = Pair.of(createLinesAttachToSplitLinesAttributes, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNodeUuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); UUID stubPutId = wireMockStubs.stubNetworkModificationPutWithBody(MODIFICATION_UUID, createLinesAttachToSplitLinesAttributes); mockMvc.perform(put(URI_NETWORK_MODIF_WITH_ID, studyNameUserIdUuid, modificationNodeUuid, MODIFICATION_UUID) @@ -1802,7 +1802,7 @@ void testLinesAttachToSplitLines() throws Exception { wireMockStubs.verifyNetworkModificationPut(stubPutId, MODIFICATION_UUID, createLinesAttachToSplitLinesAttributes); String badBody = "{\"type\":\"" + ModificationType.LINES_ATTACH_TO_SPLIT_LINES + "\",\"bogus\":\"bogus\"}"; - String modificationBodyJson = getModificationContextJsonString(mapper, Pair.of(badBody, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNodeUuid, NETWORK_UUID)))); + String modificationBodyJson = getModificationContextJsonString(Pair.of(badBody, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNodeUuid, NETWORK_UUID)))); wireMockStubs.stubNetworkModificationPostWithBodyAndError(modificationBodyJson); stubPutId = wireMockStubs.stubNetworkModificationPutWithBodyAndError(MODIFICATION_UUID, badBody); mockMvc.perform(post(URI_NETWORK_MODIF, studyNameUserIdUuid, modificationNodeUuid) @@ -1846,7 +1846,7 @@ void testScaling(ModificationType scalingType) throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); Pair> modificationBody = Pair.of(requestBody, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNodeUuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); UUID stubPutId = wireMockStubs.stubNetworkModificationPutWithBody(MODIFICATION_UUID, requestBody); mockMvc.perform(put(URI_NETWORK_MODIF_WITH_ID, studyNameUserIdUuid, modificationNodeUuid, MODIFICATION_UUID) @@ -1860,7 +1860,7 @@ void testScaling(ModificationType scalingType) throws Exception { wireMockStubs.verifyNetworkModificationPut(stubPutId, MODIFICATION_UUID, requestBody); // test with errors - String modificationBodyJson = getModificationContextJsonString(mapper, Pair.of(requestBody, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNodeUuid, NETWORK_UUID)))); + String modificationBodyJson = getModificationContextJsonString(Pair.of(requestBody, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNodeUuid, NETWORK_UUID)))); wireMockStubs.stubNetworkModificationPostWithBodyAndError(modificationBodyJson); mockMvc.perform(post(URI_NETWORK_MODIF, studyNameUserIdUuid, modificationNodeUuid) .content(requestBody).contentType(MediaType.APPLICATION_JSON) @@ -1901,7 +1901,7 @@ void testDeleteVoltageLevelOnline() throws Exception { checkEquipmentCreatingMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); Pair> modificationBody = Pair.of(createDeleteVoltageLevelOnlineAttributes, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNodeUuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); UUID stubIdPut = wireMockStubs.stubNetworkModificationPutWithBody(MODIFICATION_UUID, createDeleteVoltageLevelOnlineAttributes); mockMvc.perform(put(URI_NETWORK_MODIF_WITH_ID, studyNameUserIdUuid, modificationNodeUuid, MODIFICATION_UUID) @@ -1914,7 +1914,7 @@ void testDeleteVoltageLevelOnline() throws Exception { wireMockStubs.verifyNetworkModificationPut(stubIdPut, MODIFICATION_UUID, createDeleteVoltageLevelOnlineAttributes); String badBody = "{\"type\":\"" + ModificationType.DELETE_VOLTAGE_LEVEL_ON_LINE + "\",\"bogus\":\"bogus\"}"; - String modificationBodyJson = getModificationContextJsonString(mapper, Pair.of(badBody, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNodeUuid, NETWORK_UUID)))); + String modificationBodyJson = getModificationContextJsonString(Pair.of(badBody, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNodeUuid, NETWORK_UUID)))); wireMockStubs.stubNetworkModificationPostWithBodyAndError(modificationBodyJson); UUID stubIdPutErr = wireMockStubs.stubNetworkModificationPutWithBodyAndError(MODIFICATION_UUID, badBody); mockMvc.perform(post(URI_NETWORK_MODIF, studyNameUserIdUuid, modificationNodeUuid).header(USER_ID_HEADER, userId) @@ -1954,7 +1954,7 @@ void testDeleteAttachingline() throws Exception { checkEquipmentCreatingMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); Pair> modificationBody = Pair.of(createDeleteAttachingLineAttributes, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNodeUuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); UUID stubIdPut = wireMockStubs.stubNetworkModificationPutWithBody(MODIFICATION_UUID, createDeleteAttachingLineAttributes); mockMvc.perform(put(URI_NETWORK_MODIF_WITH_ID, studyNameUserIdUuid, modificationNodeUuid, MODIFICATION_UUID) @@ -1967,7 +1967,7 @@ void testDeleteAttachingline() throws Exception { wireMockStubs.verifyNetworkModificationPut(stubIdPut, MODIFICATION_UUID, createDeleteAttachingLineAttributes); String badBody = "{\"type\":\"" + ModificationType.DELETE_ATTACHING_LINE + "\",\"bogus\":\"bogus\"}"; - String modificationBodyJson = getModificationContextJsonString(mapper, Pair.of(badBody, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNodeUuid, NETWORK_UUID)))); + String modificationBodyJson = getModificationContextJsonString(Pair.of(badBody, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNodeUuid, NETWORK_UUID)))); wireMockStubs.stubNetworkModificationPostWithBodyAndError(modificationBodyJson); UUID stubIdPutErr = wireMockStubs.stubNetworkModificationPutWithBodyAndError(MODIFICATION_UUID, badBody); mockMvc.perform(post(URI_NETWORK_MODIF, studyNameUserIdUuid, modificationNodeUuid) @@ -2496,7 +2496,7 @@ void testDeleteEquipment() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNode1Uuid); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); Pair> modificationBody = Pair.of(bodyJson, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode1Uuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); // delete equipment on second modification node mockMvc.perform(post(URI_NETWORK_MODIF, studyNameUserIdUuid, modificationNode2Uuid) @@ -2508,7 +2508,7 @@ void testDeleteEquipment() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNode2Uuid); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); modificationBody = Pair.of(bodyJson, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode2Uuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); // update equipment deletion UUID stubPutId = wireMockStubs.stubNetworkModificationPut(MODIFICATION_UUID); @@ -2612,7 +2612,7 @@ void testNodesInvalidation() throws Exception { checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); assertEquals(BuildStatus.NOT_BUILT, networkModificationTreeService.getNodeBuildStatus(modificationNode3Uuid, firstRootNetworkUuid).getGlobalBuildStatus()); Pair> modificationBody = Pair.of(jsonCreateLoadInfos, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode2Uuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); } @Test @@ -2668,7 +2668,7 @@ void testRemoveLoadFlowComputationReport() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNode1Uuid); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); Pair> modificationBody = Pair.of(bodyJson, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNode1Uuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); wireMockStubs.verifyNetworkModificationDeleteIndex(deleteModificationIndexStub); // 1 status LF + 2 x 10 computations + 1 report @@ -2719,7 +2719,7 @@ void testUpdateOfBuildStatus() throws Exception { checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); assertEquals(BuildStatus.NOT_BUILT, networkModificationTreeService.getNodeBuildStatus(modificationNodeUuid, firstRootNetworkUuid).getGlobalBuildStatus()); Pair> modificationBody = Pair.of(jsonCreateLoadInfos, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNodeUuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); // Mark the node status as built RootNetworkNodeInfoEntity rootNetworkNodeInfoEntity = rootNetworkNodeInfoRepository.findByNodeInfoIdAndRootNetworkId(modificationNode.getId(), studyTestUtils.getOneRootNetworkUuid(studyNameUserIdUuid)).orElseThrow(() -> new StudyException(NOT_FOUND, "Root network not found")); @@ -2742,7 +2742,7 @@ void testUpdateOfBuildStatus() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); assertEquals(BuildStatus.BUILT, networkModificationTreeService.getNodeBuildStatus(modificationNodeUuid, firstRootNetworkUuid).getGlobalBuildStatus()); modificationBody = Pair.of(jsonCreateLoadInfos, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNodeUuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); // Built with warnings networkModificationResult.get().setApplicationStatus(NetworkModificationResult.ApplicationStatus.WITH_WARNINGS); @@ -2759,7 +2759,7 @@ void testUpdateOfBuildStatus() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); assertEquals(BuildStatus.BUILT_WITH_WARNING, networkModificationTreeService.getNodeBuildStatus(modificationNodeUuid, firstRootNetworkUuid).getGlobalBuildStatus()); modificationBody = Pair.of(jsonCreateLoadInfos, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNodeUuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); // Built with errors networkModificationResult.get().setApplicationStatus(NetworkModificationResult.ApplicationStatus.WITH_ERRORS); @@ -2776,7 +2776,7 @@ void testUpdateOfBuildStatus() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); assertEquals(BuildStatus.BUILT_WITH_ERROR, networkModificationTreeService.getNodeBuildStatus(modificationNodeUuid, firstRootNetworkUuid).getGlobalBuildStatus()); modificationBody = Pair.of(jsonCreateLoadInfos, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNodeUuid, NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); } private void testBuildWithNodeUuid(UUID studyUuid, UUID nodeUuid, UUID rootNetworkUuid, String userId, UUID profileStubId) throws Exception { @@ -3115,7 +3115,7 @@ void testCreateModificationWithErrors() throws Exception { checkEquipmentCreatingMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid, modificationNodeUuid); checkElementUpdatedMessageSent(studyNameUserIdUuid, userId); - String modificationBodyJson = getModificationContextJsonString(mapper, Pair.of(jsonCreateLoadInfos, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNodeUuid, NETWORK_UUID)))); + String modificationBodyJson = getModificationContextJsonString(Pair.of(jsonCreateLoadInfos, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, modificationNodeUuid, NETWORK_UUID)))); wireMockStubs.verifyNetworkModificationPostWithVariant(modificationBodyJson); // String message error diff --git a/src/test/java/org/gridsuite/study/server/studycontroller/NodeControllerTest.java b/src/test/java/org/gridsuite/study/server/studycontroller/NodeControllerTest.java index b0744d0959..f9dbe400c5 100644 --- a/src/test/java/org/gridsuite/study/server/studycontroller/NodeControllerTest.java +++ b/src/test/java/org/gridsuite/study/server/studycontroller/NodeControllerTest.java @@ -77,7 +77,7 @@ void testCutAndPasteNode() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(study1Uuid, node1.getId()); checkElementUpdatedMessageSent(study1Uuid, userId); Pair> modificationBody = Pair.of(createTwoWindingsTransformerAttributes, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, node1.getId(), NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); // add modification on node "node2" String createLoadAttributes = "{\"type\":\"" + ModificationType.LOAD_CREATION + "\",\"loadId\":\"loadId1\",\"loadName\":\"loadName1\",\"loadType\":\"UNDEFINED\",\"activePower\":\"100.0\",\"reactivePower\":\"50.0\",\"voltageLevelId\":\"idVL1\",\"busId\":\"idBus1\"}"; @@ -92,7 +92,7 @@ void testCutAndPasteNode() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(study1Uuid, node2.getId()); checkElementUpdatedMessageSent(study1Uuid, userId); modificationBody = Pair.of(createLoadAttributes, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, node2.getId(), NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); rootNetworkNodeInfoService.updateRootNetworkNode(node2.getId(), studyTestUtils.getOneRootNetworkUuid(study1Uuid), RootNetworkNodeInfo.builder() @@ -491,7 +491,7 @@ void testDuplicateNode() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(study1Uuid, node1.getId()); checkElementUpdatedMessageSent(study1Uuid, userId); Pair> modificationBody = Pair.of(createTwoWindingsTransformerAttributes, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, node1.getId(), NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); // add modification on node "node2" String createLoadAttributes = "{\"type\":\"" + ModificationType.LOAD_CREATION + "\",\"loadId\":\"loadId1\",\"loadName\":\"loadName1\",\"loadType\":\"UNDEFINED\",\"activePower\":\"100.0\",\"reactivePower\":\"50.0\",\"voltageLevelId\":\"idVL1\",\"busId\":\"idBus1\"}"; @@ -506,7 +506,7 @@ void testDuplicateNode() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(study1Uuid, node2.getId()); checkElementUpdatedMessageSent(study1Uuid, userId); modificationBody = Pair.of(createLoadAttributes, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, node2.getId(), NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); rootNetworkNodeInfoService.updateRootNetworkNode(node2.getId(), studyTestUtils.getOneRootNetworkUuid(study1Uuid), RootNetworkNodeInfo.builder() @@ -621,7 +621,7 @@ void testDuplicateSubtree() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(study1Uuid, node1.getId()); checkElementUpdatedMessageSent(study1Uuid, userId); Pair> modificationBody = Pair.of(createTwoWindingsTransformerAttributes, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, node1.getId(), NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); wireMockStubs.verifyNetworkModificationDeleteIndex(deleteModificationIndexStub); // Invalidation node 3 @@ -642,7 +642,7 @@ void testDuplicateSubtree() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(study1Uuid, node2.getId()); checkElementUpdatedMessageSent(study1Uuid, userId); modificationBody = Pair.of(createLoadAttributes, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, node2.getId(), NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); rootNetworkNodeInfoService.updateRootNetworkNode(node2.getId(), firstRootNetworkUuid, RootNetworkNodeInfo.builder() @@ -762,7 +762,7 @@ void testDuplicateNodeBetweenStudies() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(study1Uuid, node1.getId()); checkElementUpdatedMessageSent(study1Uuid, userId); Pair> modificationBody = Pair.of(createTwoWindingsTransformerAttributes, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, node1.getId(), NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); // add modification on node "node2" wireMockStubs.stubNetworkModificationPost(mapper.writeValueAsString(new NetworkModificationsResult(List.of(UUID.randomUUID()), List.of(Optional.empty())))); @@ -777,7 +777,7 @@ void testDuplicateNodeBetweenStudies() throws Exception { checkEquipmentUpdatingFinishedMessagesReceived(study1Uuid, node2.getId()); checkElementUpdatedMessageSent(study1Uuid, userId); modificationBody = Pair.of(createLoadAttributes, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(firstRootNetworkUuid, node2.getId(), NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); //study 2 node2 should not have any child List allNodes = networkModificationTreeService.getAllNodes(study2Uuid); diff --git a/src/test/java/org/gridsuite/study/server/studycontroller/StudyTest.java b/src/test/java/org/gridsuite/study/server/studycontroller/StudyTest.java index d8e80caf05..f3db9d958f 100644 --- a/src/test/java/org/gridsuite/study/server/studycontroller/StudyTest.java +++ b/src/test/java/org/gridsuite/study/server/studycontroller/StudyTest.java @@ -933,7 +933,7 @@ private void testDuplicateStudy(UUID study1Uuid, UUID rootNetworkUuid, String us checkEquipmentUpdatingFinishedMessagesReceived(study1Uuid, node1.getId()); checkElementUpdatedMessageSent(study1Uuid, userId); Pair> modificationBody = Pair.of(createTwoWindingsTransformerAttributes, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(rootNetworkUuid, node1.getId(), NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); // add modification on node "node2" String createLoadAttributes = "{\"type\":\"" + ModificationType.LOAD_CREATION + "\",\"loadId\":\"loadId1\",\"loadName\":\"loadName1\",\"loadType\":\"UNDEFINED\",\"activePower\":\"100.0\",\"reactivePower\":\"50.0\",\"voltageLevelId\":\"idVL1\",\"busId\":\"idBus1\"}"; @@ -949,7 +949,7 @@ private void testDuplicateStudy(UUID study1Uuid, UUID rootNetworkUuid, String us checkEquipmentUpdatingFinishedMessagesReceived(study1Uuid, node2.getId()); checkElementUpdatedMessageSent(study1Uuid, userId); modificationBody = Pair.of(createLoadAttributes, List.of(rootNetworkNodeInfoService.getNetworkModificationApplicationContext(rootNetworkUuid, node2.getId(), NETWORK_UUID))); - wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(mapper, modificationBody)); + wireMockStubs.verifyNetworkModificationPostWithVariant(getModificationContextJsonString(modificationBody)); rootNetworkNodeInfoService.updateRootNetworkNode(node2.getId(), studyTestUtils.getOneRootNetworkUuid(study1Uuid), RootNetworkNodeInfo.builder() From 16795fc80ec9d337ca974e26ad09cbc3bcce3b7f Mon Sep 17 00:00:00 2001 From: Etienne Homer Date: Tue, 19 May 2026 17:42:49 +0200 Subject: [PATCH 10/15] fix hibernate session problem in test Signed-off-by: Etienne Homer --- .../study/server/repository/rootnetwork/RootNetworkEntity.java | 2 +- .../gridsuite/study/server/NetworkModificationUnitTest.java | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/gridsuite/study/server/repository/rootnetwork/RootNetworkEntity.java b/src/main/java/org/gridsuite/study/server/repository/rootnetwork/RootNetworkEntity.java index ed798a9070..96b5dddf4d 100644 --- a/src/main/java/org/gridsuite/study/server/repository/rootnetwork/RootNetworkEntity.java +++ b/src/main/java/org/gridsuite/study/server/repository/rootnetwork/RootNetworkEntity.java @@ -73,7 +73,7 @@ public class RootNetworkEntity { @Column(name = "reportUuid") private UUID reportUuid; - @ElementCollection(fetch = FetchType.EAGER) + @ElementCollection @CollectionTable(name = "importParameters", indexes = {@Index(name = "rootNetworkEntity_importParameters_idx1", columnList = "root_network_entity_id")}, foreignKey = @ForeignKey(name = "rootNetworkEntity_importParameters_fk1")) diff --git a/src/test/java/org/gridsuite/study/server/NetworkModificationUnitTest.java b/src/test/java/org/gridsuite/study/server/NetworkModificationUnitTest.java index 338247b5e2..9a70890ecf 100644 --- a/src/test/java/org/gridsuite/study/server/NetworkModificationUnitTest.java +++ b/src/test/java/org/gridsuite/study/server/NetworkModificationUnitTest.java @@ -12,7 +12,6 @@ import org.gridsuite.study.server.dto.BuildInfos; import org.gridsuite.study.server.dto.InvalidateNodeTreeParameters; import org.gridsuite.study.server.dto.RootNetworkIndexationStatus; -import org.gridsuite.study.server.dto.RootNetworkInfos; import org.gridsuite.study.server.dto.modification.NetworkModificationMetadata; import org.gridsuite.study.server.dto.workflow.RerunLoadFlowInfos; import org.gridsuite.study.server.error.StudyException; @@ -272,7 +271,7 @@ void buildNodeWithWorkflowInfos() throws JsonProcessingException { void unbuildAllNodes() { setupWithTwoRootNetwork(); UUID rootNodeUuid = networkModificationTreeService.getStudyRootNodeUuid(studyUuid); - List rootNetworkUuids = rootNetworkService.getRootNetworkInfosWithLinksInfos(studyUuid).stream().map(RootNetworkInfos::getId).toList(); + List rootNetworkUuids = rootNetworkRepository.findAllWithInfosByStudyId(studyUuid).stream().map(RootNetworkEntity::getId).toList(); studyController.unbuildAllNodes(studyUuid, USER_ID_HEADER); From fa9ca1fea5e6b0c1f69811d86301e266228abea2 Mon Sep 17 00:00:00 2001 From: Etienne Homer Date: Tue, 19 May 2026 18:35:06 +0200 Subject: [PATCH 11/15] Add JsonUtilsTest Signed-off-by: Etienne Homer --- .../gridsuite/study/server/JsonUtilsTest.java | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 src/test/java/org/gridsuite/study/server/JsonUtilsTest.java diff --git a/src/test/java/org/gridsuite/study/server/JsonUtilsTest.java b/src/test/java/org/gridsuite/study/server/JsonUtilsTest.java new file mode 100644 index 0000000000..4e5d18651e --- /dev/null +++ b/src/test/java/org/gridsuite/study/server/JsonUtilsTest.java @@ -0,0 +1,88 @@ +/** + * Copyright (c) 2026, 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.study.server; + +import org.gridsuite.study.server.error.StudyBusinessErrorCode; +import org.gridsuite.study.server.error.StudyException; +import org.gridsuite.study.server.utils.JsonUtils; +import org.junit.jupiter.api.Test; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.*; + +/** + * @author Etienne HOMER + */ +class JsonUtilsTest { + + @Test + void shouldSerializeImportParameters() { + Map params = new HashMap<>(); + params.put("string", "value"); + params.put("int", 123); + params.put("bool", true); + params.put("list", List.of("a", "b")); + params.put("map", Map.of("k", "v")); + params.put("null", null); + + Map result = JsonUtils.serializeImportParameters(params); + + assertEquals("\"value\"", result.get("string")); + assertEquals("123", result.get("int")); + assertEquals("true", result.get("bool")); + assertEquals("[\"a\",\"b\"]", result.get("list")); + assertEquals("{\"k\":\"v\"}", result.get("map")); + assertEquals("null", result.get("null")); + } + + @Test + void shouldReturnEmptyMapWhenSerializeNull() { + Map result = JsonUtils.serializeImportParameters(null); + assertNotNull(result); + assertTrue(result.isEmpty()); + } + + @Test + void shouldDeserializeImportParameters() { + Map rawParams = new HashMap<>(); + rawParams.put("string", "\"value\""); + rawParams.put("int", "123"); + rawParams.put("bool", "true"); + rawParams.put("list", "[\"a\",\"b\"]"); + rawParams.put("map", "{\"k\":\"v\"}"); + rawParams.put("null", "null"); + rawParams.put("realNull", null); + + Map result = JsonUtils.deserializeImportParameters(rawParams); + + assertEquals("value", result.get("string")); + assertEquals(123, result.get("int")); + assertEquals(true, result.get("bool")); + assertEquals(List.of("a", "b"), result.get("list")); + assertEquals(Map.of("k", "v"), result.get("map")); + assertNull(result.get("null")); + assertNull(result.get("realNull")); + } + + @Test + void shouldReturnEmptyMapWhenDeserializeNull() { + Map result = JsonUtils.deserializeImportParameters(null); + assertNotNull(result); + assertTrue(result.isEmpty()); + } + + @Test + void shouldThrowExceptionWhenDeserializeInvalidJson() { + Map rawParams = Map.of("invalid", "{notJson}"); + StudyException exception = assertThrows(StudyException.class, () -> JsonUtils.deserializeImportParameters(rawParams)); + assertEquals(StudyBusinessErrorCode.UNPROCESSABLE_IMPORT_PARAMETER, exception.getBusinessErrorCode()); + assertTrue(exception.getMessage().contains("Import parameter 'invalid => {notJson}' is not valid JSON")); + } +} From 01b2ad3a93247e52da767d6f6ad96c6877a8b87b Mon Sep 17 00:00:00 2001 From: Etienne Homer Date: Wed, 20 May 2026 09:46:13 +0200 Subject: [PATCH 12/15] last test Signed-off-by: Etienne Homer --- .../gridsuite/study/server/JsonUtilsTest.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/test/java/org/gridsuite/study/server/JsonUtilsTest.java b/src/test/java/org/gridsuite/study/server/JsonUtilsTest.java index 4e5d18651e..085314792f 100644 --- a/src/test/java/org/gridsuite/study/server/JsonUtilsTest.java +++ b/src/test/java/org/gridsuite/study/server/JsonUtilsTest.java @@ -23,7 +23,7 @@ class JsonUtilsTest { @Test - void shouldSerializeImportParameters() { + void testSerializeImportParameters() { Map params = new HashMap<>(); params.put("string", "value"); params.put("int", 123); @@ -43,14 +43,25 @@ void shouldSerializeImportParameters() { } @Test - void shouldReturnEmptyMapWhenSerializeNull() { + void testSerializeNull() { Map result = JsonUtils.serializeImportParameters(null); assertNotNull(result); assertTrue(result.isEmpty()); } @Test - void shouldDeserializeImportParameters() { + void testNonSerializableParameter() { + class NonSerializable { + private final String hidden = "hidden"; + } + + StudyException exception = assertThrows(StudyException.class, () -> JsonUtils.serializeImportParameters(Map.of("nonSerializable", new NonSerializable()))); + assertEquals(StudyBusinessErrorCode.UNPROCESSABLE_IMPORT_PARAMETER, exception.getBusinessErrorCode()); + assertTrue(exception.getMessage().contains("Import parameter 'nonSerializable =>")); + } + + @Test + void testDeserializeImportParameters() { Map rawParams = new HashMap<>(); rawParams.put("string", "\"value\""); rawParams.put("int", "123"); @@ -72,14 +83,14 @@ void shouldDeserializeImportParameters() { } @Test - void shouldReturnEmptyMapWhenDeserializeNull() { + void testDeserializeNull() { Map result = JsonUtils.deserializeImportParameters(null); assertNotNull(result); assertTrue(result.isEmpty()); } @Test - void shouldThrowExceptionWhenDeserializeInvalidJson() { + void testDeserializeInvalidJson() { Map rawParams = Map.of("invalid", "{notJson}"); StudyException exception = assertThrows(StudyException.class, () -> JsonUtils.deserializeImportParameters(rawParams)); assertEquals(StudyBusinessErrorCode.UNPROCESSABLE_IMPORT_PARAMETER, exception.getBusinessErrorCode()); From 52544d4133044ac17b2aa6039d7ddfd0f17d8dc7 Mon Sep 17 00:00:00 2001 From: Etienne Homer Date: Wed, 20 May 2026 10:00:37 +0200 Subject: [PATCH 13/15] Fix sonar warnings Signed-off-by: Etienne Homer --- src/test/java/org/gridsuite/study/server/JsonUtilsTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/org/gridsuite/study/server/JsonUtilsTest.java b/src/test/java/org/gridsuite/study/server/JsonUtilsTest.java index 085314792f..2183751da1 100644 --- a/src/test/java/org/gridsuite/study/server/JsonUtilsTest.java +++ b/src/test/java/org/gridsuite/study/server/JsonUtilsTest.java @@ -52,10 +52,10 @@ void testSerializeNull() { @Test void testNonSerializableParameter() { class NonSerializable { - private final String hidden = "hidden"; } - StudyException exception = assertThrows(StudyException.class, () -> JsonUtils.serializeImportParameters(Map.of("nonSerializable", new NonSerializable()))); + Map nonSerializableParams = Map.of("nonSerializable", new NonSerializable()); + StudyException exception = assertThrows(StudyException.class, () -> JsonUtils.serializeImportParameters(nonSerializableParams)); assertEquals(StudyBusinessErrorCode.UNPROCESSABLE_IMPORT_PARAMETER, exception.getBusinessErrorCode()); assertTrue(exception.getMessage().contains("Import parameter 'nonSerializable =>")); } From aac1df62721daa7b29f2dce69707b4c12dfba9d2 Mon Sep 17 00:00:00 2001 From: Etienne Homer Date: Wed, 20 May 2026 10:54:22 +0200 Subject: [PATCH 14/15] Remove importParametersRaw Signed-off-by: Etienne Homer --- .../org/gridsuite/study/server/dto/RootNetworkInfos.java | 2 -- .../org/gridsuite/study/server/service/StudyService.java | 4 ++-- .../study/server/rootnetworks/RootNetworkTest.java | 8 +++----- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/gridsuite/study/server/dto/RootNetworkInfos.java b/src/main/java/org/gridsuite/study/server/dto/RootNetworkInfos.java index ac57e9ccba..c3d1a63410 100644 --- a/src/main/java/org/gridsuite/study/server/dto/RootNetworkInfos.java +++ b/src/main/java/org/gridsuite/study/server/dto/RootNetworkInfos.java @@ -32,8 +32,6 @@ public class RootNetworkInfos { private Map importParameters; - private Map importParametersRaw; - private String tag; public RootNetworkEntity toEntity() { diff --git a/src/main/java/org/gridsuite/study/server/service/StudyService.java b/src/main/java/org/gridsuite/study/server/service/StudyService.java index a33fe7cd90..cc3d4675dd 100644 --- a/src/main/java/org/gridsuite/study/server/service/StudyService.java +++ b/src/main/java/org/gridsuite/study/server/service/StudyService.java @@ -334,7 +334,7 @@ public RootNetworkRequestInfos createRootNetworkRequest(UUID studyUuid, RootNetw try { UUID clonedCaseUuid = caseService.duplicateCase(rootNetworkInfos.getCaseInfos().getOriginalCaseUuid(), true); rootNetworkInfos.getCaseInfos().setCaseUuid(clonedCaseUuid); - persistNetwork(rootNetworkInfos, studyUuid, null, userId, rootNetworkInfos.getImportParametersRaw(), CaseImportAction.ROOT_NETWORK_CREATION); + persistNetwork(rootNetworkInfos, studyUuid, null, userId, rootNetworkInfos.getImportParameters(), CaseImportAction.ROOT_NETWORK_CREATION); } catch (Exception e) { rootNetworkService.deleteRootNetworkRequest(rootNetworkCreationRequestEntity); throw e; @@ -397,7 +397,7 @@ private void updateRootNetworkCaseInfos(UUID studyUuid, RootNetworkInfos rootNet UUID clonedCaseUuid = caseService.duplicateCase(rootNetworkInfos.getCaseInfos().getOriginalCaseUuid(), true); rootNetworkInfos.getCaseInfos().setCaseUuid(clonedCaseUuid); try { - persistNetwork(rootNetworkInfos, studyUuid, null, userId, rootNetworkInfos.getImportParametersRaw(), CaseImportAction.ROOT_NETWORK_MODIFICATION); + persistNetwork(rootNetworkInfos, studyUuid, null, userId, rootNetworkInfos.getImportParameters(), CaseImportAction.ROOT_NETWORK_MODIFICATION); } catch (Exception e) { rootNetworkService.deleteRootNetworkRequest(rootNetworkModificationRequestEntity); throw e; diff --git a/src/test/java/org/gridsuite/study/server/rootnetworks/RootNetworkTest.java b/src/test/java/org/gridsuite/study/server/rootnetworks/RootNetworkTest.java index 7f001868c6..3cf3b64f81 100644 --- a/src/test/java/org/gridsuite/study/server/rootnetworks/RootNetworkTest.java +++ b/src/test/java/org/gridsuite/study/server/rootnetworks/RootNetworkTest.java @@ -201,7 +201,7 @@ void testCreateRootNetworkRequest() throws Exception { UUID stubId = wireMockServer.stubFor(WireMock.post(WireMock.urlPathEqualTo("/v1/networks")) .willReturn(WireMock.ok())).getId(); Mockito.doReturn(DUPLICATE_CASE_UUID).when(caseService).duplicateCase(caseUuid, true); - RootNetworkInfos rootNetworkInfos = RootNetworkInfos.builder().name("rootNetworkName2").tag("rn2").caseInfos(new CaseInfos(null, caseUuid, null, caseFormat)).importParametersRaw(importParameters).build(); + RootNetworkInfos rootNetworkInfos = RootNetworkInfos.builder().name("rootNetworkName2").tag("rn2").caseInfos(new CaseInfos(null, caseUuid, null, caseFormat)).importParameters(importParameters).build(); // request execution - returns RootNetworkRequestInfos String response = mockMvc.perform(post("/v1/studies/{studyUuid}/root-networks", studyEntity.getId()) @@ -678,7 +678,6 @@ void testUpdateRootNetworkConsumer() throws Exception { // create a second root network RootNetworkInfos rootNetworkInfos = RootNetworkInfos.builder().id(UUID.randomUUID()).tag("oldT").name("oldName") .caseInfos(new CaseInfos(UUID.randomUUID(), UUID.randomUUID(), "oldCaseName", "oldCaseFormat")).networkInfos(new NetworkInfos(UUID.randomUUID(), "oldNetworkId")) - .importParametersRaw(Map.of("param1", "oldValue1", "param2", "oldValue2")) .importParameters(Map.of("param1", "oldValue1", "param2", "oldValue2")) .reportUuid(UUID.randomUUID()) .build(); @@ -694,7 +693,6 @@ void testUpdateRootNetworkConsumer() throws Exception { final UUID newCaseUuid = UUID.randomUUID(); RootNetworkInfos rootNetworkUpdateInfos = RootNetworkInfos.builder().id(rootNetworkInfos.getId()).name("newRootNetworkName").tag("newT") .caseInfos(new CaseInfos(null, newCaseUuid, "newCaseName", "newCaseFormat")).networkInfos(new NetworkInfos(UUID.randomUUID(), "newNetworkId")) - .importParametersRaw(Map.of("param1", "newValue1", "param2", "newValue2", "param3", "value3")) .importParameters(Map.of("param1", "newValue1", "param2", "newValue2", "param3", "value3")) .reportUuid(UUID.randomUUID()) .build(); @@ -720,7 +718,7 @@ void testUpdateRootNetworkConsumer() throws Exception { "caseUuid", WireMock.equalTo(DUPLICATE_CASE_UUID.toString()), "caseFormat", WireMock.equalTo(rootNetworkUpdateInfos.getCaseInfos().getCaseFormat()) ), - objectMapper.writeValueAsString(rootNetworkUpdateInfos.getImportParametersRaw()) + objectMapper.writeValueAsString(rootNetworkUpdateInfos.getImportParameters()) ); // verify that the node is blocked @@ -752,7 +750,7 @@ private void assertEqualsRootNetworkInDB(RootNetworkInfos rootNetworkInfos) { assertEquals(rootNetworkInfos.getCaseInfos().getCaseUuid(), rootNetworkEntity.getCaseUuid()); assertEquals(rootNetworkInfos.getCaseInfos().getCaseFormat(), rootNetworkEntity.getCaseFormat()); assertEquals(rootNetworkInfos.getReportUuid(), rootNetworkEntity.getReportUuid()); - assertEquals(rootNetworkInfos.getImportParametersRaw(), rootNetworkService.getImportParameters(rootNetworkInfos.getId())); + assertEquals(rootNetworkInfos.getImportParameters(), rootNetworkService.getImportParameters(rootNetworkInfos.getId())); } @Test From ddc9b1cebd63986781ca0fd33c6ba5dd792cbb40 Mon Sep 17 00:00:00 2001 From: Etienne Homer Date: Wed, 20 May 2026 13:38:13 +0200 Subject: [PATCH 15/15] use changelog Signed-off-by: Etienne Homer --- src/main/resources/db/changelog/db.changelog-master.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/resources/db/changelog/db.changelog-master.yaml b/src/main/resources/db/changelog/db.changelog-master.yaml index 3f709aed5d..959dabd306 100644 --- a/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/src/main/resources/db/changelog/db.changelog-master.yaml @@ -374,3 +374,6 @@ databaseChangeLog: - include: file: changesets/changelog_20260319T184344Z.xml relativeToChangelogFile: true + - include: + file: changesets/changelog_20260519T112945Z.xml + relativeToChangelogFile: true \ No newline at end of file