From 3dd1d66940720dcb2755716e405ecb356c9d22ef Mon Sep 17 00:00:00 2001 From: renczesstefan Date: Fri, 20 Feb 2026 15:53:00 +0100 Subject: [PATCH 1/6] [NAE-2381] Log in RestResponseExceptionHandler --- .../engine/workflow/web/RestResponseExceptionHandler.java | 1 + 1 file changed, 1 insertion(+) diff --git a/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/RestResponseExceptionHandler.java b/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/RestResponseExceptionHandler.java index 21b0154c6a..7d56651d79 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/RestResponseExceptionHandler.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/RestResponseExceptionHandler.java @@ -23,6 +23,7 @@ public class RestResponseExceptionHandler extends ResponseEntityExceptionHandler @Override protected ResponseEntity handleHttpMessageNotWritable(HttpMessageNotWritableException exception, HttpHeaders headers, HttpStatusCode status, WebRequest request) { try { + log.error("Received HttpMessageNotWritableException: {}", exception.getMessage(), exception); List path = ((JsonMappingException) exception.getCause()).getPath(); JsonMappingException.Reference fieldReference = path.get(path.size() - 1); JsonMappingException.Reference caseReference = path.get(path.size() - 3); From 7df0caf713618e3d52bf6ff1bf71e09be2d921e2 Mon Sep 17 00:00:00 2001 From: renczesstefan Date: Fri, 20 Feb 2026 15:55:32 +0100 Subject: [PATCH 2/6] [NAE-2381] Log in RestResponseExceptionHandler --- .../engine/workflow/web/RestResponseExceptionHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/RestResponseExceptionHandler.java b/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/RestResponseExceptionHandler.java index 7d56651d79..0797e3a091 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/RestResponseExceptionHandler.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/RestResponseExceptionHandler.java @@ -23,7 +23,7 @@ public class RestResponseExceptionHandler extends ResponseEntityExceptionHandler @Override protected ResponseEntity handleHttpMessageNotWritable(HttpMessageNotWritableException exception, HttpHeaders headers, HttpStatusCode status, WebRequest request) { try { - log.error("Received HttpMessageNotWritableException: {}", exception.getMessage(), exception); + log.debug("Received HttpMessageNotWritableException: {}", exception.getMessage(), exception); List path = ((JsonMappingException) exception.getCause()).getPath(); JsonMappingException.Reference fieldReference = path.get(path.size() - 1); JsonMappingException.Reference caseReference = path.get(path.size() - 3); From 24b652fb5f743b0ba583e77e2fec6f5fff367e24 Mon Sep 17 00:00:00 2001 From: renczesstefan Date: Fri, 20 Feb 2026 16:01:42 +0100 Subject: [PATCH 3/6] [NAE-2381] Log in RestResponseExceptionHandler --- .../web/RestResponseExceptionHandler.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/RestResponseExceptionHandler.java b/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/RestResponseExceptionHandler.java index 0797e3a091..cb2041364a 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/RestResponseExceptionHandler.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/RestResponseExceptionHandler.java @@ -23,16 +23,17 @@ public class RestResponseExceptionHandler extends ResponseEntityExceptionHandler @Override protected ResponseEntity handleHttpMessageNotWritable(HttpMessageNotWritableException exception, HttpHeaders headers, HttpStatusCode status, WebRequest request) { try { - log.debug("Received HttpMessageNotWritableException: {}", exception.getMessage(), exception); + log.error("Received HttpMessageNotWritableException: {}", exception.getMessage(), exception); List path = ((JsonMappingException) exception.getCause()).getPath(); - JsonMappingException.Reference fieldReference = path.get(path.size() - 1); - JsonMappingException.Reference caseReference = path.get(path.size() - 3); - Field from = (Field) fieldReference.getFrom(); - Case useCase = (Case) caseReference.getFrom(); - - log.error("[{}] Could not parse value of field [{}], value [{}]", useCase.getStringId(), from.getStringId(), from.getValue()); + if (path.size() > 3) { + JsonMappingException.Reference fieldReference = path.getLast(); + JsonMappingException.Reference caseReference = path.get(path.size() - 3); + Field from = (Field) fieldReference.getFrom(); + Case useCase = (Case) caseReference.getFrom(); + log.error("[{}] Could not parse value of field [{}], value [{}]", useCase.getStringId(), from.getStringId(), from.getValue()); + } } catch (Exception e) { - log.warn("Unrecognized exception: ", e); + log.error("Unrecognized exception: ", e); } return super.handleHttpMessageNotWritable(exception, headers, status, request); } From a89110592764d34d4773771bda1bce1edbbca94b Mon Sep 17 00:00:00 2001 From: renczesstefan Date: Fri, 20 Feb 2026 16:28:24 +0100 Subject: [PATCH 4/6] - updated error logging --- .../engine/workflow/web/RestResponseExceptionHandler.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/RestResponseExceptionHandler.java b/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/RestResponseExceptionHandler.java index cb2041364a..75274e7b48 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/RestResponseExceptionHandler.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/RestResponseExceptionHandler.java @@ -23,7 +23,6 @@ public class RestResponseExceptionHandler extends ResponseEntityExceptionHandler @Override protected ResponseEntity handleHttpMessageNotWritable(HttpMessageNotWritableException exception, HttpHeaders headers, HttpStatusCode status, WebRequest request) { try { - log.error("Received HttpMessageNotWritableException: {}", exception.getMessage(), exception); List path = ((JsonMappingException) exception.getCause()).getPath(); if (path.size() > 3) { JsonMappingException.Reference fieldReference = path.getLast(); @@ -31,6 +30,8 @@ protected ResponseEntity handleHttpMessageNotWritable(HttpMessageNotWrit Field from = (Field) fieldReference.getFrom(); Case useCase = (Case) caseReference.getFrom(); log.error("[{}] Could not parse value of field [{}], value [{}]", useCase.getStringId(), from.getStringId(), from.getValue()); + } else { + log.error("Received HttpMessageNotWritableException: {}", exception.getMessage(), exception); } } catch (Exception e) { log.error("Unrecognized exception: ", e); From 95261a31112b28faf0b8a9e9df8b4c357bdb402a Mon Sep 17 00:00:00 2001 From: renczesstefan Date: Fri, 20 Feb 2026 16:31:13 +0100 Subject: [PATCH 5/6] - updated error logging --- .../engine/workflow/web/RestResponseExceptionHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/RestResponseExceptionHandler.java b/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/RestResponseExceptionHandler.java index 75274e7b48..9020279362 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/RestResponseExceptionHandler.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/RestResponseExceptionHandler.java @@ -29,7 +29,7 @@ protected ResponseEntity handleHttpMessageNotWritable(HttpMessageNotWrit JsonMappingException.Reference caseReference = path.get(path.size() - 3); Field from = (Field) fieldReference.getFrom(); Case useCase = (Case) caseReference.getFrom(); - log.error("[{}] Could not parse value of field [{}], value [{}]", useCase.getStringId(), from.getStringId(), from.getValue()); + log.debug("[{}] Could not parse value of field [{}], value [{}]", useCase.getStringId(), from.getStringId(), from.getValue()); } else { log.error("Received HttpMessageNotWritableException: {}", exception.getMessage(), exception); } From 569a0a236613f4de53d3c2801c642159fec5f749 Mon Sep 17 00:00:00 2001 From: renczesstefan Date: Fri, 20 Feb 2026 16:35:51 +0100 Subject: [PATCH 6/6] - updated error logging --- .../web/RestResponseExceptionHandler.java | 34 ++++++++++++++----- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/RestResponseExceptionHandler.java b/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/RestResponseExceptionHandler.java index 9020279362..344c46ece8 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/RestResponseExceptionHandler.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/workflow/web/RestResponseExceptionHandler.java @@ -21,21 +21,37 @@ public class RestResponseExceptionHandler extends ResponseEntityExceptionHandler private static final Logger log = LoggerFactory.getLogger(RestResponseExceptionHandler.class); @Override - protected ResponseEntity handleHttpMessageNotWritable(HttpMessageNotWritableException exception, HttpHeaders headers, HttpStatusCode status, WebRequest request) { + protected ResponseEntity handleHttpMessageNotWritable(HttpMessageNotWritableException exception, + HttpHeaders headers, + HttpStatusCode status, + WebRequest request) { try { - List path = ((JsonMappingException) exception.getCause()).getPath(); + Throwable cause = exception.getCause(); + if (!(cause instanceof JsonMappingException jme)) { + log.error("Received HttpMessageNotWritableException: {}", exception.getMessage(), exception); + return super.handleHttpMessageNotWritable(exception, headers, status, request); + } + + List path = jme.getPath(); if (path.size() > 3) { - JsonMappingException.Reference fieldReference = path.getLast(); - JsonMappingException.Reference caseReference = path.get(path.size() - 3); - Field from = (Field) fieldReference.getFrom(); - Case useCase = (Case) caseReference.getFrom(); - log.debug("[{}] Could not parse value of field [{}], value [{}]", useCase.getStringId(), from.getStringId(), from.getValue()); + Object fieldFrom = path.getLast().getFrom(); + Object caseFrom = path.get(path.size() - 3).getFrom(); + + if (fieldFrom instanceof Field field && caseFrom instanceof Case useCase) { + log.debug("[{}] Could not parse value of field [{}], value [{}] | path={}", + useCase.getStringId(), field.getStringId(), field.getValue(), jme.getPathReference()); + } else { + log.error("JSON write failed: {} | path={}", + jme.getOriginalMessage(), jme.getPathReference(), jme); + } } else { - log.error("Received HttpMessageNotWritableException: {}", exception.getMessage(), exception); + log.error("JSON write failed: {} | path={}", + jme.getOriginalMessage(), jme.getPathReference(), jme); } + } catch (Exception e) { log.error("Unrecognized exception: ", e); } return super.handleHttpMessageNotWritable(exception, headers, status, request); } -} +} \ No newline at end of file