From 718701aaff5db22b99a0c61d862ed0615682a52b Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Mon, 12 Feb 2024 18:54:53 -0600 Subject: [PATCH] CE-847 Add method getTopAndBottomMessages --- .../backend/core/utils/ExceptionUtils.java | 19 +++++++++++++++++++ .../core/utils/ExceptionUtilsTest.java | 13 +++++++++++++ 2 files changed, 32 insertions(+) diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/utils/ExceptionUtils.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/utils/ExceptionUtils.java index ae935308..0dfee18c 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/utils/ExceptionUtils.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/utils/ExceptionUtils.java @@ -164,4 +164,23 @@ public class ExceptionUtils return (StringUtils.join("; ", messages)); } + + + + /******************************************************************************* + ** Get the messages from the top & bottoms (root) of an exception. + ** + ** If there's no root, just return the top (e.g., parameter)'s message. + ** If they are both found, put ": " between them. + *******************************************************************************/ + public static String getTopAndBottomMessages(Exception e) + { + String rs = e.getMessage(); + Throwable rootException = getRootException(e); + if(rootException != e) + { + rs += ": " + rootException.getMessage(); + } + return (rs); + } } diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/ExceptionUtilsTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/ExceptionUtilsTest.java index 4b68f28b..bf84bb16 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/ExceptionUtilsTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/utils/ExceptionUtilsTest.java @@ -116,6 +116,19 @@ class ExceptionUtilsTest extends BaseTest + /******************************************************************************* + ** + *******************************************************************************/ + @Test + void testGetTopAndBottomMessages() + { + assertEquals("foo", ExceptionUtils.getTopAndBottomMessages(new Exception("foo"))); + assertEquals("foo: bar", ExceptionUtils.getTopAndBottomMessages(new Exception("foo", new Exception("bar")))); + assertEquals("foo: baz", ExceptionUtils.getTopAndBottomMessages(new Exception("foo", new Exception("bar", new Exception("baz"))))); + } + + + /******************************************************************************* ** Test exception class - lets you set the cause, easier to create a loop. *******************************************************************************/