diff --git a/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/MonitorController.java b/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/MonitorController.java index 65ec8bc..9bdd067 100644 --- a/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/MonitorController.java +++ b/monitor-server/src/main/java/org/gridsuite/monitor/server/controllers/MonitorController.java @@ -6,6 +6,9 @@ */ package org.gridsuite.monitor.server.controllers; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.responses.ApiResponse; @@ -34,9 +37,11 @@ public class MonitorController { private final MonitorService monitorService; public static final String HEADER_USER_ID = "userId"; + private final ObjectMapper objectMapper; - public MonitorController(MonitorService monitorService) { + public MonitorController(MonitorService monitorService, ObjectMapper objectMapper) { this.monitorService = monitorService; + this.objectMapper = objectMapper; } @PostMapping("/execute/security-analysis") @@ -61,9 +66,19 @@ public ResponseEntity> getExecutionReports(@Parameter(descripti @GetMapping("/executions/{executionId}/results") @Operation(summary = "Get results for an execution") @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "The execution results")}) - public ResponseEntity> getExecutionResults(@Parameter(description = "Execution UUID") @PathVariable UUID executionId) { + public ResponseEntity> getExecutionResults(@Parameter(description = "Execution UUID") @PathVariable UUID executionId) { List results = monitorService.getResults(executionId); - return ResponseEntity.ok(results); + + // To make it easier to view the results during monitoring development, we return a List. + // Note that the return type can be changed later when developing the front end. + List resultsJsonNode = results.stream().map(resultString -> { + try { + return objectMapper.readValue(resultString, JsonNode.class); + } catch (JsonProcessingException e) { + throw new IllegalStateException(String.format("Unable to serialize result to JSON: %s", resultString), e); + } + }).toList(); + return ResponseEntity.ok(resultsJsonNode); } @GetMapping("/executions")