From 74a0c4969964b7adc6823ea99df9900d068b9470 Mon Sep 17 00:00:00 2001 From: Eric Bottard Date: Wed, 26 Feb 2014 14:35:46 +0100 Subject: [PATCH] Don't crash shell in completions if an option has been set twice --- .../org/springframework/shell/core/SimpleParser.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/springframework/shell/core/SimpleParser.java b/src/main/java/org/springframework/shell/core/SimpleParser.java index 7630b0e5..7bc9ef47 100644 --- a/src/main/java/org/springframework/shell/core/SimpleParser.java +++ b/src/main/java/org/springframework/shell/core/SimpleParser.java @@ -577,7 +577,15 @@ public class SimpleParser implements Parser { Assert.notNull(cmd, "CliCommand unavailable for '" + methodTarget.getMethod().toGenericString() + "'"); // Make a reasonable attempt at parsing the remainingBuffer - Tokenizer tokenizer = new Tokenizer(methodTarget.getRemainingBuffer(), true); + Tokenizer tokenizer = null; + try { + tokenizer = new Tokenizer(methodTarget.getRemainingBuffer(), true); + } + catch (IllegalArgumentException e) { + // Make sure we don't crash the mail shell loop just + // because the user specified some option twice + return -1; + } Map options = tokenizer.getTokens(); // Lookup arguments for this target