From c14cfe8a52e45f432f85e4cbe4fc6c2df21fcc9a Mon Sep 17 00:00:00 2001 From: Adam Bem Date: Fri, 10 Feb 2023 11:34:09 +0100 Subject: [PATCH 1/2] Xalan now returns message when something goes wrong --- .../src/main/java/com/r11/tools/xslt/SparkInitializer.java | 1 - 1 file changed, 1 deletion(-) diff --git a/Backend/xslt-rest/src/main/java/com/r11/tools/xslt/SparkInitializer.java b/Backend/xslt-rest/src/main/java/com/r11/tools/xslt/SparkInitializer.java index e17ad41..9e1d389 100644 --- a/Backend/xslt-rest/src/main/java/com/r11/tools/xslt/SparkInitializer.java +++ b/Backend/xslt-rest/src/main/java/com/r11/tools/xslt/SparkInitializer.java @@ -158,7 +158,6 @@ public class SparkInitializer { duration = System.currentTimeMillis() - timeStart; LOG.info("Request: " + body + " processed in " + duration + " ms."); responseMap.put("processor", Xalan.getVersion()); - responseMap.put("result", tmp); responseMap.put("time", Long.toString(duration)); resp.body(mapper.writeValueAsString(responseMap)); return resp; From 6a0e49546ccac1ca1643e9651b4afc3bb2964ccc Mon Sep 17 00:00:00 2001 From: Adam Bem Date: Fri, 10 Feb 2023 11:55:12 +0100 Subject: [PATCH 2/2] Improved faulty JSON error handling --- .../com/r11/tools/xslt/SparkInitializer.java | 46 ++++++++++++++----- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/Backend/xslt-rest/src/main/java/com/r11/tools/xslt/SparkInitializer.java b/Backend/xslt-rest/src/main/java/com/r11/tools/xslt/SparkInitializer.java index 9e1d389..99a6133 100644 --- a/Backend/xslt-rest/src/main/java/com/r11/tools/xslt/SparkInitializer.java +++ b/Backend/xslt-rest/src/main/java/com/r11/tools/xslt/SparkInitializer.java @@ -1,5 +1,6 @@ package com.r11.tools.xslt; +import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.r11.tools.xslt.processors.Saxon; @@ -65,8 +66,15 @@ public class SparkInitializer { Map responseMap = new HashMap<>(); try { requestMap = mapper.readValue(body, Map.class); - } catch (JsonMappingException ex) { - ex.printStackTrace(); + } catch (JsonMappingException | JsonParseException ex) { + LOG.error("Request JSON error. " + ex); + responseMap.put("result", ex.getMessage()); + responseMap.put("processor", "N/A"); + responseMap.put("status", "ERR"); + responseMap.put("time", "N/A"); + resp.status(400); + resp.body(mapper.writeValueAsString(responseMap)); + return resp; } String data = requestMap.get("data"); @@ -103,8 +111,15 @@ public class SparkInitializer { Map responseMap = new HashMap<>(); try { requestMap = mapper.readValue(body, Map.class); - } catch (JsonMappingException ex) { - LOG.error("JSON mapping error. " + ex); + } catch (JsonMappingException | JsonParseException ex) { + LOG.error("Request JSON error. " + ex); + responseMap.put("result", ex.getMessage()); + responseMap.put("processor", "N/A"); + responseMap.put("status", "ERR"); + responseMap.put("time", "N/A"); + resp.status(400); + resp.body(mapper.writeValueAsString(responseMap)); + return resp; } String data = requestMap.get("data"); @@ -173,17 +188,24 @@ public class SparkInitializer { private static final Route xsltHandler = (Request req, Response resp) -> { String body = req.body(); ObjectMapper mapper = new ObjectMapper(); - Map jsonMap = new HashMap<>(); + Map requestMap = new HashMap<>(); Map responseMap = new HashMap<>(); try { - jsonMap = mapper.readValue(body, Map.class); - } catch (JsonMappingException ex) { - LOG.error("JSON mapping error. " + ex); + requestMap = mapper.readValue(body, Map.class); + } catch (JsonMappingException | JsonParseException ex) { + LOG.error("Request JSON error. " + ex); + responseMap.put("result", ex.getMessage()); + responseMap.put("processor", "N/A"); + responseMap.put("status", "ERR"); + responseMap.put("time", "N/A"); + resp.status(400); + resp.body(mapper.writeValueAsString(responseMap)); + return resp; } - String data = jsonMap.get("data"); - String query = jsonMap.get("process"); - String processor = jsonMap.get("processor"); - String version = jsonMap.get("version"); + String data = requestMap.get("data"); + String query = requestMap.get("process"); + String processor = requestMap.get("processor"); + String version = requestMap.get("version"); if (processor == null) { return "saxon, xalan";