Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
CliFactory |
|
| 1.0;1 |
1 | package com.lexicalscope.jewel.cli; | |
2 | ||
3 | /** | |
4 | * Constructs a Cli from an annotated interface definition. | |
5 | * | |
6 | * @see com.lexicalscope.jewel.cli.Option | |
7 | * | |
8 | * @author Tim Wood | |
9 | */ | |
10 | 0 | public abstract class CliFactory |
11 | { | |
12 | /** | |
13 | * Construct a Cli from an annotated interface definition | |
14 | * | |
15 | * @param <O> | |
16 | * The type of the interface that will be used to present the | |
17 | * arguments | |
18 | * @param klass | |
19 | * The annotated interface definition | |
20 | * | |
21 | * @return A Cli configured to create instance of klass | |
22 | * | |
23 | * @throws ArgumentValidationException the arguments do not meet the CLI specification | |
24 | * @throws InvalidOptionSpecificationException the CLI specification is not valid | |
25 | */ | |
26 | public static <O> Cli<O> createCli(final Class<O> klass) throws InvalidOptionSpecificationException | |
27 | { | |
28 | 180 | return new CliInterfaceImpl<O>(klass); |
29 | } | |
30 | ||
31 | /** | |
32 | * Construct a Cli from an annotated class | |
33 | * | |
34 | * @param <O> | |
35 | * The type of the class used to present the arguments | |
36 | * @param options | |
37 | * The annotated class | |
38 | * | |
39 | * @return A Cli configured to configure the options | |
40 | * | |
41 | * @throws ArgumentValidationException the arguments do not meet the CLI specification | |
42 | * @throws InvalidOptionSpecificationException the CLI specification is not valid | |
43 | */ | |
44 | public static <O> Cli<O> createCliUsingInstance(final O options) throws InvalidOptionSpecificationException | |
45 | { | |
46 | 16 | return new CliInstanceImpl<O>(options); |
47 | } | |
48 | ||
49 | /** | |
50 | * Parse arguments from an annotated interface definition | |
51 | * | |
52 | * @param <O> | |
53 | * The type of the interface that will be used to present the | |
54 | * arguments | |
55 | * @param klass | |
56 | * The annotated interface definition | |
57 | * @param arguments | |
58 | * | |
59 | * @return The parsed arguments | |
60 | * | |
61 | * @throws ArgumentValidationException the arguments do not meet the CLI specification | |
62 | * @throws InvalidOptionSpecificationException the CLI specification is not valid | |
63 | */ | |
64 | public static <O> O parseArguments(final Class<O> klass, final String... arguments) | |
65 | throws ArgumentValidationException, InvalidOptionSpecificationException | |
66 | { | |
67 | 150 | return createCli(klass).parseArguments(arguments); |
68 | } | |
69 | ||
70 | /** | |
71 | * Parse arguments from an annotated class instance | |
72 | * | |
73 | * @param <O> | |
74 | * The type of the class used to present the arguments | |
75 | * @param klass | |
76 | * The annotated interface definition | |
77 | * @param arguments | |
78 | * | |
79 | * @return The parsed arguments | |
80 | * | |
81 | * @throws ArgumentValidationException the arguments do not meet the CLI specification | |
82 | * @throws InvalidOptionSpecificationException the CLI specification is not valid | |
83 | */ | |
84 | public static <O> O parseArgumentsUsingInstance(final O options, final String... arguments) | |
85 | throws ArgumentValidationException, InvalidOptionSpecificationException | |
86 | { | |
87 | 14 | return createCliUsingInstance(options).parseArguments(arguments); |
88 | } | |
89 | } |