diff options
author | Anton Gustafsson <antag99@gmail.com> | 2015-07-05 10:32:53 +0200 |
---|---|---|
committer | Anton Gustafsson <antag99@gmail.com> | 2015-07-05 10:32:53 +0200 |
commit | 632ef58e747976be5b52033bcee6cb61d13eefb6 (patch) | |
tree | 441a47491e91789eb97c48872af9170f235f65df /src | |
parent | c399919841b766ffcdb859a13294194a24079419 (diff) | |
download | jcommander-632ef58e747976be5b52033bcee6cb61d13eefb6.tar.gz |
Fix issue where JCommander could not access private fields/methods
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/com/beust/jcommander/JCommander.java | 12 | ||||
-rw-r--r-- | src/main/java/com/beust/jcommander/Parameterized.java | 2 |
2 files changed, 11 insertions, 3 deletions
diff --git a/src/main/java/com/beust/jcommander/JCommander.java b/src/main/java/com/beust/jcommander/JCommander.java index 1441352..0ff1c30 100644 --- a/src/main/java/com/beust/jcommander/JCommander.java +++ b/src/main/java/com/beust/jcommander/JCommander.java @@ -1309,6 +1309,8 @@ public class JCommander { throw new ParameterException(e); } catch (InvocationTargetException e) { throw new ParameterException(e); + } catch (NoSuchMethodException e) { + throw new ParameterException(e); } return result; @@ -1320,8 +1322,11 @@ public class JCommander { */ private Object convertToList(String value, IStringConverter<?> converter, Class<? extends IParameterSplitter> splitterClass) - throws InstantiationException, IllegalAccessException { - IParameterSplitter splitter = splitterClass.newInstance(); + throws InstantiationException, IllegalAccessException, NoSuchMethodException, + InvocationTargetException { + Constructor<? extends IParameterSplitter> constructor = splitterClass.getConstructor(new Class[0]); + constructor.setAccessible(true); + IParameterSplitter splitter = constructor.newInstance(); List<Object> result = Lists.newArrayList(); for (String param : splitter.split(value)) { result.add(converter.convert(param)); @@ -1331,13 +1336,14 @@ public class JCommander { private IStringConverter<?> instantiateConverter(String optionName, Class<? extends IStringConverter<?>> converterClass) - throws IllegalArgumentException, InstantiationException, IllegalAccessException, + throws InstantiationException, IllegalAccessException, InvocationTargetException { Constructor<IStringConverter<?>> ctor = null; Constructor<IStringConverter<?>> stringCtor = null; Constructor<IStringConverter<?>>[] ctors = (Constructor<IStringConverter<?>>[]) converterClass.getDeclaredConstructors(); for (Constructor<IStringConverter<?>> c : ctors) { + c.setAccessible(true); Class<?>[] types = c.getParameterTypes(); if (types.length == 1 && types[0].equals(String.class)) { stringCtor = c; diff --git a/src/main/java/com/beust/jcommander/Parameterized.java b/src/main/java/com/beust/jcommander/Parameterized.java index 6fff1df..b5ecd1b 100644 --- a/src/main/java/com/beust/jcommander/Parameterized.java +++ b/src/main/java/com/beust/jcommander/Parameterized.java @@ -41,6 +41,7 @@ public class Parameterized { Class<? extends Object> cls = arg.getClass(); while (!Object.class.equals(cls)) { for (Field f : cls.getDeclaredFields()) { + f.setAccessible(true); Annotation annotation = f.getAnnotation(Parameter.class); Annotation delegateAnnotation = f.getAnnotation(ParametersDelegate.class); Annotation dynamicParameter = f.getAnnotation(DynamicParameter.class); @@ -62,6 +63,7 @@ public class Parameterized { cls = arg.getClass(); while (!Object.class.equals(cls)) { for (Method m : cls.getDeclaredMethods()) { + m.setAccessible(true); Annotation annotation = m.getAnnotation(Parameter.class); Annotation delegateAnnotation = m.getAnnotation(ParametersDelegate.class); Annotation dynamicParameter = m.getAnnotation(DynamicParameter.class); |