@Override protected void addParameter(ParameterDescriptor parameter) throws IntrospectionException { // Check we can add the option if (parameter instanceof OptionDescriptor) { OptionDescriptor option = (OptionDescriptor)parameter; Set<String> blah = new HashSet<String>(); for (String optionName : option.getNames()) { blah.add((optionName.length() == 1 ? "-" : "--") + optionName); } for (MethodDescriptor<T> method : methods.values()) { Set<String> diff = new HashSet<String>(method.getOptionNames()); diff.retainAll(blah); if (diff.size() > 0) { throw new IntrospectionException("Cannot add method " + method.getName() + " because it has common " + " options with its class: " + diff); } } } // super.addParameter(parameter); }
for (String optionName : option.getNames()) { String name; if (optionName.length() == 1) {
public void assertOption(String name, String... values) { Event.Option event = (Event.Option)parser.next(); assertTrue(event.getParameter().getNames().contains(name)); assertEquals(Arrays.asList(values), event.getStrings()); }
public void testOptionWithUpperCase() throws IntrospectionException { class A { @Option(names = "I") private int i; } CommandDescriptor<Instance<A>> ai = CommandFactory.DEFAULT.create(A.class); assertEquals(1,ai.getOptions().size()); OptionDescriptor i = ai.getOption("-I"); assertEquals(Arrays.asList("I"),i.getNames()); }
public void testOption() throws IntrospectionException { class A { @Option(names = "i") private int i; } CommandDescriptor<Instance<A>> ai = CommandFactory.DEFAULT.create(A.class); assertEquals(1,ai.getOptions().size()); OptionDescriptor i = ai.getOption("-i"); assertEquals(Arrays.asList("i"),i.getNames()); }
static void bind(InvocationMatch<?> match, Iterable<ParameterDescriptor> parameters, Object target, Object[] args) throws SyntaxException, InvocationException { for (ParameterDescriptor parameter : parameters) { ParameterMatch parameterMatch = match.getParameter(parameter); Object value = parameterMatch != null ? parameterMatch.computeValue() : null; if (value == null) { if (parameter.getDeclaredType().isPrimitive() || parameter.isRequired()) { if (parameter instanceof ArgumentDescriptor) { ArgumentDescriptor argument = (ArgumentDescriptor)parameter; throw new SyntaxException("Missing argument " + argument.getName()); } else { OptionDescriptor option = (OptionDescriptor)parameter; throw new SyntaxException("Missing option " + option.getNames()); } } } else { ((Binding)parameter).set(target, args, value); } } }
public void testAnnotation() throws IntrospectionException { class A { @Level String l; } CommandDescriptor<Instance<A>> a = CommandFactory.DEFAULT.create(A.class); assertEquals(1,a.getOptions().size()); OptionDescriptor i = a.getOption("-l"); assertEquals(Arrays.asList("l"),i.getNames()); assertTrue(i.getAnnotation() instanceof Level); } }
public void testThreeLettersName() throws Exception { class A { @Option(names = "opt") RetentionPolicy o; } OptionDescriptor i = CommandFactory.DEFAULT.create(A.class).getOption("--opt"); assertEquals(Arrays.asList("opt"), i.getNames()); // class B { @Option(names = "-oo") RetentionPolicy o; } assertIllegalParameter(B.class); // class C { @Option(names = "oo-") RetentionPolicy o; } assertIllegalParameter(C.class); // class D { @Option(names = "o-o") RetentionPolicy o; } i = CommandFactory.DEFAULT.create(D.class).getOption("--o-o"); assertEquals(Arrays.asList("o-o"), i.getNames()); }
public void testTwoLettersName() throws Exception { class A { @Option(names = "op") RetentionPolicy o; } OptionDescriptor i = CommandFactory.DEFAULT.create(A.class).getOption("--op"); assertEquals(Arrays.asList("op"), i.getNames()); // class B { @Option(names = "-o") RetentionPolicy o; } assertIllegalParameter(B.class); // class C { @Option(names = "o-") RetentionPolicy o; } assertIllegalParameter(C.class); }
public void testSingleLetterName() throws Exception { class A { @Option(names = "o") RetentionPolicy o; } OptionDescriptor i = CommandFactory.DEFAULT.create(A.class).getOption("-o"); assertEquals(Arrays.asList("o"), i.getNames()); // class B { @Option(names = "-") RetentionPolicy o; } assertIllegalParameter(B.class); // class C { @Option(names = "_") RetentionPolicy o; } assertIllegalParameter(C.class); }
@Override protected void addParameter(ParameterDescriptor parameter) throws IntrospectionException { // Check we can add the option if (parameter instanceof OptionDescriptor) { OptionDescriptor option = (OptionDescriptor)parameter; Set<String> blah = new HashSet<String>(); for (String optionName : option.getNames()) { blah.add((optionName.length() == 1 ? "-" : "--") + optionName); } for (MethodDescriptor<T> method : methods.values()) { Set<String> diff = new HashSet<String>(method.getOptionNames()); diff.retainAll(blah); if (diff.size() > 0) { throw new IntrospectionException("Cannot add method " + method.getName() + " because it has common " + " options with its class: " + diff); } } } // super.addParameter(parameter); }
@Override protected void addParameter(ParameterDescriptor parameter) throws IntrospectionException { // Check we can add the option if (parameter instanceof OptionDescriptor) { OptionDescriptor option = (OptionDescriptor)parameter; Set<String> blah = new HashSet<String>(); for (String optionName : option.getNames()) { blah.add((optionName.length() == 1 ? "-" : "--") + optionName); } for (MethodDescriptor<T> method : methods.values()) { Set<String> diff = new HashSet<String>(method.getOptionNames()); diff.retainAll(blah); if (diff.size() > 0) { throw new IntrospectionException("Cannot add method " + method.getName() + " because it has common " + " options with its class: " + diff); } } } // super.addParameter(parameter); }
for (String optionName : option.getNames()) { String name; if (optionName.length() == 1) {
for (String optionName : option.getNames()) { String name; if (optionName.length() == 1) {
void configure(InvocationMatch<T> classMatch, T command) throws InvocationException, SyntaxException { for (ParameterDescriptor parameter : getParameters()) { ParameterMatch match = classMatch.getParameter(parameter); if (match == null) { if (parameter.isRequired()) { if (parameter instanceof ArgumentDescriptor) { ArgumentDescriptor argument = (ArgumentDescriptor)parameter; throw new SyntaxException("Missing argument " + argument.getName()); } else { OptionDescriptor option = (OptionDescriptor)parameter; throw new SyntaxException("Missing option " + option.getNames()); } } } else { Object value = match.computeValue(); Field f = ((ClassFieldBinding)parameter.getBinding()).getField(); try { f.setAccessible(true); f.set(command, value); } catch (Exception e) { throw new InvocationException(e.getMessage(), e); } } } }
static void bind(InvocationMatch<?> match, Iterable<ParameterDescriptor> parameters, Object target, Object[] args) throws SyntaxException, InvocationException { for (ParameterDescriptor parameter : parameters) { ParameterMatch parameterMatch = match.getParameter(parameter); Object value = parameterMatch != null ? parameterMatch.computeValue() : null; if (value == null) { if (parameter.getDeclaredType().isPrimitive() || parameter.isRequired()) { if (parameter instanceof ArgumentDescriptor) { ArgumentDescriptor argument = (ArgumentDescriptor)parameter; throw new SyntaxException("Missing argument " + argument.getName()); } else { OptionDescriptor option = (OptionDescriptor)parameter; throw new SyntaxException("Missing option " + option.getNames()); } } } else { ((Binding)parameter).set(target, args, value); } } }
} else { OptionDescriptor option = (OptionDescriptor)parameter; throw new SyntaxException("Missing option " + option.getNames());