From 89b13a90d9184d9c8634de63a37591773049d63e Mon Sep 17 00:00:00 2001 From: Sandra Date: Mon, 31 Jan 2022 05:36:01 +0100 Subject: [PATCH] Pass backend errors to the frontend --- .../timings/api/v1/ParseController.java | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/backend/api/src/main/java/eu/okaeri/timings/api/v1/ParseController.java b/backend/api/src/main/java/eu/okaeri/timings/api/v1/ParseController.java index 8e63fec..017c2d3 100644 --- a/backend/api/src/main/java/eu/okaeri/timings/api/v1/ParseController.java +++ b/backend/api/src/main/java/eu/okaeri/timings/api/v1/ParseController.java @@ -45,7 +45,7 @@ public class ParseController { } String[] parts = line.substring(1).split(":", 2); if (parts.length != 2) { - throw new RuntimeException("Cannot parse metadata: '" + line + "'"); + return ResponseEntity.badRequest().body(Map.of("error", "Cannot parse metadata: '" + line + "'")); } String key = parts[0].trim().toLowerCase(Locale.ROOT); String value = parts[1].trim(); @@ -57,7 +57,7 @@ public class ParseController { if (header == null) { String[] parts = line.split(","); if (parts.length < 2) { - throw new RuntimeException("Cannot parse header: '" + line + "'"); + return ResponseEntity.badRequest().body(Map.of("error", "Cannot parse header: '" + line + "'")); } header = Arrays.asList(parts); continue; @@ -66,22 +66,26 @@ public class ParseController { // data String[] parts = line.split(","); if (parts.length != header.size()) { - throw new RuntimeException("Cannot parse record: '" + line + "'"); + return ResponseEntity.badRequest().body(Map.of("error", "Cannot parse record: '" + line + "'")); } - records.add(Arrays.stream(parts) - .map(value -> { - try { - return new BigDecimal(value); - } catch (Exception exception) { - throw new RuntimeException("Cannot parse value: '" + value + "' from record '" + line + "'"); - } - }) - .collect(Collectors.toList())); + try { + records.add(Arrays.stream(parts) + .map(value -> { + try { + return new BigDecimal(value); + } catch (Exception exception) { + throw new RuntimeException("Cannot parse value: '" + value + "' from record '" + line + "'"); + } + }) + .collect(Collectors.toList())); + } catch (Exception exception) { + return ResponseEntity.badRequest().body(Map.of("error", exception.getMessage())); + } } if (header == null || records.size() < 2) { - throw new RuntimeException("Invalid report"); + return ResponseEntity.badRequest().body(Map.of("error", "Invalid report")); } Map stats = Map.of(