From 5641b1173cafe59f97d3622ec58cace52640d3e3 Mon Sep 17 00:00:00 2001 From: snowleo Date: Wed, 26 Oct 2011 19:46:40 +0200 Subject: Abort the installation wizard if a runtime exception happens --- .../essentials/update/states/AbstractState.java | 32 ++++++++++++++-------- 1 file changed, 20 insertions(+), 12 deletions(-) (limited to 'EssentialsUpdate/src/com/earth2me/essentials/update/states/AbstractState.java') diff --git a/EssentialsUpdate/src/com/earth2me/essentials/update/states/AbstractState.java b/EssentialsUpdate/src/com/earth2me/essentials/update/states/AbstractState.java index 3f0c4c233..6d2613a40 100644 --- a/EssentialsUpdate/src/com/earth2me/essentials/update/states/AbstractState.java +++ b/EssentialsUpdate/src/com/earth2me/essentials/update/states/AbstractState.java @@ -8,12 +8,12 @@ public abstract class AbstractState { private transient boolean abortion = false; private final transient StateMap stateMap; - + public AbstractState(final StateMap stateMap) { this.stateMap = stateMap; } - + public T getState(final Class stateClass) { if (!stateMap.containsKey(stateClass)) @@ -35,7 +35,7 @@ public abstract class AbstractState } return (T)stateMap.get(stateClass); } - + public abstract AbstractState getNextState(); /** @@ -60,7 +60,7 @@ public abstract class AbstractState * @return true, if the answer could be recognized as a valid answer */ public abstract boolean reactOnAnswer(String answer); - + public final AbstractState reactOnAnswer(final Player sender, final String answer) { final String trimmedAnswer = answer.trim(); @@ -71,16 +71,24 @@ public abstract class AbstractState abort(); return null; } - final boolean found = reactOnAnswer(trimmedAnswer); - if (found) + try { - return getNextState(); + final boolean found = reactOnAnswer(trimmedAnswer); + if (found) + { + return getNextState(); + } + else + { + sender.sendMessage("Answer not recognized."); + return this; + } } - else + catch (RuntimeException ex) { - sender.sendMessage("Answer not recognized."); + sender.sendMessage(ex.toString()); return this; - } + } } /** @@ -90,12 +98,12 @@ public abstract class AbstractState { listener.onWorkDone(); } - + public boolean isAbortion() { return abortion; } - + protected void abort() { abortion = true; -- cgit v1.2.3