diff options
author | Cedric Beust <cedric@beust.com> | 2017-04-07 06:50:42 -0700 |
---|---|---|
committer | Cedric Beust <cedric@beust.com> | 2017-04-07 06:50:42 -0700 |
commit | b3606c0bee31f8d2f37d0aae13152b3990b1e9df (patch) | |
tree | 33bf2f28505fb8d1a73966efda8468e35f19f7db | |
parent | fadaa32e3113690dc0cdd0fe66cffeddaced9daf (diff) | |
download | jcommander-b3606c0bee31f8d2f37d0aae13152b3990b1e9df.tar.gz |
GH-337: Added the JCommander instance to ParameterException so you can call usage() on it.
Fixes https://github.com/cbeust/jcommander/issues/337
-rw-r--r-- | src/main/java/com/beust/jcommander/JCommander.java | 41 | ||||
-rw-r--r-- | src/main/java/com/beust/jcommander/ParameterException.java | 18 |
2 files changed, 28 insertions, 31 deletions
diff --git a/src/main/java/com/beust/jcommander/JCommander.java b/src/main/java/com/beust/jcommander/JCommander.java index 8fd455d..eff463a 100644 --- a/src/main/java/com/beust/jcommander/JCommander.java +++ b/src/main/java/com/beust/jcommander/JCommander.java @@ -18,42 +18,20 @@ package com.beust.jcommander; +import com.beust.jcommander.FuzzyMap.IKey; +import com.beust.jcommander.converters.*; +import com.beust.jcommander.internal.*; + import java.io.BufferedReader; import java.io.IOException; -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.lang.reflect.ParameterizedType; -import java.lang.reflect.Type; +import java.lang.reflect.*; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Comparator; -import java.util.EnumSet; -import java.util.Iterator; -import java.util.List; -import java.util.Locale; -import java.util.Map; +import java.util.*; import java.util.ResourceBundle; import java.util.concurrent.CopyOnWriteArrayList; -import com.beust.jcommander.FuzzyMap.IKey; -import com.beust.jcommander.converters.DefaultListConverter; -import com.beust.jcommander.converters.EnumConverter; -import com.beust.jcommander.converters.IParameterSplitter; -import com.beust.jcommander.converters.NoConverter; -import com.beust.jcommander.converters.StringConverter; -import com.beust.jcommander.internal.Console; -import com.beust.jcommander.internal.DefaultConsole; -import com.beust.jcommander.internal.DefaultConverterFactory; -import com.beust.jcommander.internal.JDK6Console; -import com.beust.jcommander.internal.Lists; -import com.beust.jcommander.internal.Maps; -import com.beust.jcommander.internal.Nullable; - /** * The main class for JCommander. It's responsible for parsing the object that contains * all the annotated fields, parse the command line and assign the fields with the correct @@ -306,7 +284,12 @@ public class JCommander { * Parse and validate the command line parameters. */ public void parse(String... args) { - parse(true /* validate */, args); + try { + parse(true /* validate */, args); + } catch(ParameterException ex) { + ex.setJCommander(this); + throw ex; + } } /** diff --git a/src/main/java/com/beust/jcommander/ParameterException.java b/src/main/java/com/beust/jcommander/ParameterException.java index 2bba7d1..41570ff 100644 --- a/src/main/java/com/beust/jcommander/ParameterException.java +++ b/src/main/java/com/beust/jcommander/ParameterException.java @@ -26,7 +26,6 @@ package com.beust.jcommander; */ @SuppressWarnings("serial") public class ParameterException extends RuntimeException { - public ParameterException(Throwable t) { super(t); } @@ -37,6 +36,21 @@ public class ParameterException extends RuntimeException { public ParameterException(String string, Throwable t) { super(string, t); - } + } + + private JCommander jc; + + public void setJCommander(JCommander jc) { + this.jc = jc; + } + + public JCommander getJCommander() { + return jc; + } + public void usage() { + if (jc != null) { + jc.usage(); + } + } } |