From cedc72ea790a6c5817817f855a34c30897602a73 Mon Sep 17 00:00:00 2001 From: Florent MILLOT Date: Mon, 6 Oct 2025 16:16:52 +0200 Subject: [PATCH] Switch evaluateFiltersFromFirstRootNetwork to use POST with body instead of GET with query params. Signed-off-by: Florent MILLOT --- .../study/server/controller/StudyController.java | 7 ++++--- .../gridsuite/study/server/service/FilterService.java | 11 +++++++---- .../gridsuite/study/server/service/StudyService.java | 4 ++-- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/gridsuite/study/server/controller/StudyController.java b/src/main/java/org/gridsuite/study/server/controller/StudyController.java index c45cf2aa3..d75d1ccb7 100644 --- a/src/main/java/org/gridsuite/study/server/controller/StudyController.java +++ b/src/main/java/org/gridsuite/study/server/controller/StudyController.java @@ -2365,13 +2365,14 @@ public ResponseEntity exportFilterFromFirstRootNetwork( } // temporary - used by grid-explore only to prevent filter conversion from dysfunctioning since it does not have access to root networks yet - @GetMapping(value = "/studies/{studyUuid}/filters/elements") + @PostMapping(value = "/studies/{studyUuid}/filters/elements") @Operation(summary = "Evaluate filters list on first root network of study to get matched identifiables elements") @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "The list of matched identifiables elements")}) public ResponseEntity evaluateFiltersOnFirstRootNetwork( @Parameter(description = "Study uuid") @PathVariable("studyUuid") UUID studyUuid, - @Parameter(description = "Filters uuid to be applied") @RequestParam(name = "filtersUuid") List filtersUuid) { - return ResponseEntity.ok().contentType(MediaType.APPLICATION_JSON).body(studyService.evaluateFiltersFromFirstRootNetwork(studyUuid, filtersUuid)); + // the body should match FiltersWithEquipmentTypes in filter-server + @RequestBody String body) { + return ResponseEntity.ok().contentType(MediaType.APPLICATION_JSON).body(studyService.evaluateFiltersFromFirstRootNetwork(studyUuid, body)); } @GetMapping(value = "/studies/{studyUuid}/root-networks/{rootNetworkUuid}/nodes/{nodeUuid}/filters/elements") diff --git a/src/main/java/org/gridsuite/study/server/service/FilterService.java b/src/main/java/org/gridsuite/study/server/service/FilterService.java index 064bdfb12..f5cea3310 100644 --- a/src/main/java/org/gridsuite/study/server/service/FilterService.java +++ b/src/main/java/org/gridsuite/study/server/service/FilterService.java @@ -111,16 +111,19 @@ public String exportFilters(UUID networkUuid, List filtersUuid, String var return restTemplate.getForObject(uriComponent.toUriString(), String.class); } - public String evaluateFilters(UUID networkUuid, List filtersUuid) { + public String evaluateFilters(UUID networkUuid, String body) { Objects.requireNonNull(networkUuid); - Objects.requireNonNull(filtersUuid); + Objects.requireNonNull(body); String endPointUrl = getBaseUri() + DELIMITER + FILTER_API_VERSION + FILTER_END_POINT_EVALUATE_IDS; UriComponentsBuilder uriComponentsBuilder = UriComponentsBuilder.fromHttpUrl(endPointUrl); uriComponentsBuilder.queryParam("networkUuid", networkUuid); - uriComponentsBuilder.queryParam("ids", filtersUuid); var uriComponent = uriComponentsBuilder.buildAndExpand(); - return restTemplate.getForObject(uriComponent.toUriString(), String.class); + var headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + HttpEntity request = new HttpEntity<>(body, headers); + + return restTemplate.postForObject(uriComponent.toUriString(), request, String.class); } } 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 c5b89334c..3c29cc0c3 100644 --- a/src/main/java/org/gridsuite/study/server/service/StudyService.java +++ b/src/main/java/org/gridsuite/study/server/service/StudyService.java @@ -3376,9 +3376,9 @@ public String exportFilterFromFirstRootNetwork(UUID studyUuid, UUID filterUuid) } @Transactional(readOnly = true) - public String evaluateFiltersFromFirstRootNetwork(UUID studyUuid, List filtersUuid) { + public String evaluateFiltersFromFirstRootNetwork(UUID studyUuid, String body) { StudyEntity studyEntity = studyRepository.findById(studyUuid).orElseThrow(() -> new StudyException(STUDY_NOT_FOUND)); - return filterService.evaluateFilters(studyEntity.getFirstRootNetwork().getNetworkUuid(), filtersUuid); + return filterService.evaluateFilters(studyEntity.getFirstRootNetwork().getNetworkUuid(), body); } public String exportFilters(UUID rootNetworkUuid, List filtersUuid, UUID nodeUuid, boolean inUpstreamBuiltParentNode) {