From 21a993d6bfd410395bdcbf0dad417ef874977985 Mon Sep 17 00:00:00 2001 From: Eric Bottard Date: Wed, 1 Jul 2015 11:50:20 +0200 Subject: [PATCH] SHL-157: Prevent whole crash due to Completer --- .../springframework/shell/core/SimpleParser.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/springframework/shell/core/SimpleParser.java b/src/main/java/org/springframework/shell/core/SimpleParser.java index 69b6fa64..36ba86ad 100644 --- a/src/main/java/org/springframework/shell/core/SimpleParser.java +++ b/src/main/java/org/springframework/shell/core/SimpleParser.java @@ -30,6 +30,7 @@ import java.util.Map; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; +import java.util.logging.Level; import java.util.logging.Logger; import org.springframework.shell.core.annotation.CliAvailabilityIndicator; @@ -881,10 +882,15 @@ public class SimpleParser implements Parser { String optionContext = successiveInvocationContext + " " + option.optionContext(); if (candidate.supports(parameterType, optionContext)) { // Found a usable converter - boolean allComplete = candidate.getAllPossibleValues(allValues, parameterType, - lastOptionValue, optionContext, methodTarget); - if (!allComplete) { - suffix = ""; + try { + boolean allComplete = candidate.getAllPossibleValues(allValues, parameterType, + lastOptionValue, optionContext, methodTarget); + if (!allComplete) { + suffix = ""; + } + } // Make sure completer thrown exceptions don't crash the whole process + catch (Exception e) { + LOGGER.warning(e.getMessage()); } break; }