From 076a183d080233af5833954e259e182e18768968 Mon Sep 17 00:00:00 2001 From: Eric Bottard Date: Sun, 17 Sep 2017 20:59:27 +0200 Subject: [PATCH] Protect against Exceptions in ResultHandler code --- .../shell/result/TerminalAwareResultHandler.java | 2 +- .../shell/result/TypeHierarchyResultHandler.java | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/spring-shell-core/src/main/java/org/springframework/shell/result/TerminalAwareResultHandler.java b/spring-shell-core/src/main/java/org/springframework/shell/result/TerminalAwareResultHandler.java index 40fb5689..8a12b4cd 100644 --- a/spring-shell-core/src/main/java/org/springframework/shell/result/TerminalAwareResultHandler.java +++ b/spring-shell-core/src/main/java/org/springframework/shell/result/TerminalAwareResultHandler.java @@ -27,7 +27,7 @@ import org.springframework.shell.ResultHandler; * * @author Eric Bottard */ -public abstract class TerminalAwareResultHandler implements ResultHandler { +public abstract class TerminalAwareResultHandler implements ResultHandler { protected Terminal terminal; @Autowired @Lazy diff --git a/spring-shell-core/src/main/java/org/springframework/shell/result/TypeHierarchyResultHandler.java b/spring-shell-core/src/main/java/org/springframework/shell/result/TypeHierarchyResultHandler.java index 2dfab68b..01cc044e 100644 --- a/spring-shell-core/src/main/java/org/springframework/shell/result/TypeHierarchyResultHandler.java +++ b/spring-shell-core/src/main/java/org/springframework/shell/result/TypeHierarchyResultHandler.java @@ -47,7 +47,13 @@ public class TypeHierarchyResultHandler implements ResultHandler { } Class clazz = result.getClass(); ResultHandler handler = getResultHandler(clazz); - handler.handleResult(result); + try { + handler.handleResult(result); + } + catch (Exception e) { + // Protect against exceptions happening in ResultHandlers + getResultHandler(e.getClass()).handleResult(e); + } } private ResultHandler getResultHandler(Class clazz) {