Author: rfscholte Date: Sat Feb 25 11:09:03 2017 New Revision: 1784363 URL: http://svn.apache.org/viewvc?rev=1784363&view=rev Log: CLI-269: Introduce CommandLine.Builder
Modified: commons/proper/cli/trunk/src/main/java/org/apache/commons/cli/CommandLine.java commons/proper/cli/trunk/src/test/java/org/apache/commons/cli/CommandLineTest.java Modified: commons/proper/cli/trunk/src/main/java/org/apache/commons/cli/CommandLine.java URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/main/java/org/apache/commons/cli/CommandLine.java?rev=1784363&r1=1784362&r2=1784363&view=diff ============================================================================== --- commons/proper/cli/trunk/src/main/java/org/apache/commons/cli/CommandLine.java (original) +++ commons/proper/cli/trunk/src/main/java/org/apache/commons/cli/CommandLine.java Sat Feb 25 11:09:03 2017 @@ -377,4 +377,42 @@ public class CommandLine implements Seri // return the array return processed.toArray(optionsArray); } + + /** + * A nested builder class to create <code>CommandLine</code> instance + * using descriptive methods. + * + * @since 1.4 + */ + public static final class Builder + { + private final CommandLine commandLine = new CommandLine(); + + /** + * Add an option to the command line. The values of the option are stored. + * + * @param opt the processed option + */ + public Builder addOption( Option opt ) + { + commandLine.addOption( opt ); + return this; + } + + /** + * Add left-over unrecognized option/argument. + * + * @param arg the unrecognized option/argument. + */ + public Builder addArg( String arg ) + { + commandLine.addArg( arg ); + return this; + } + + public CommandLine build() + { + return commandLine; + } + } } Modified: commons/proper/cli/trunk/src/test/java/org/apache/commons/cli/CommandLineTest.java URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/test/java/org/apache/commons/cli/CommandLineTest.java?rev=1784363&r1=1784362&r2=1784363&view=diff ============================================================================== --- commons/proper/cli/trunk/src/test/java/org/apache/commons/cli/CommandLineTest.java (original) +++ commons/proper/cli/trunk/src/test/java/org/apache/commons/cli/CommandLineTest.java Sat Feb 25 11:09:03 2017 @@ -76,4 +76,18 @@ public class CommandLineTest assertEquals(123, ((Number) cmd.getParsedOptionValue("i")).intValue()); assertEquals("foo", cmd.getParsedOptionValue("f")); } + + @Test + public void testBuilder() + throws Exception + { + CommandLine.Builder builder = new CommandLine.Builder(); + builder.addArg( "foo" ).addArg( "bar" ); + builder.addOption( Option.builder( "T" ).build() ); + CommandLine cmd = builder.build(); + + assertEquals( "foo", cmd.getArgs()[0] ); + assertEquals( "bar", cmd.getArgList().get( 1 ) ); + assertEquals( "T", cmd.getOptions()[0].getOpt() ); + } }