You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by tn...@apache.org on 2013/02/17 23:32:22 UTC

svn commit: r1447094 - in /commons/proper/cli/trunk/src: main/java/org/apache/commons/cli/ test/java/org/apache/commons/cli/

Author: tn
Date: Sun Feb 17 22:32:21 2013
New Revision: 1447094

URL: http://svn.apache.org/r1447094
Log:
Add more descriptive methods to Option.Builder, adapt unit tests.

Modified:
    commons/proper/cli/trunk/src/main/java/org/apache/commons/cli/Option.java
    commons/proper/cli/trunk/src/main/java/org/apache/commons/cli/OptionBuilder.java
    commons/proper/cli/trunk/src/test/java/org/apache/commons/cli/HelpFormatterTest.java
    commons/proper/cli/trunk/src/test/java/org/apache/commons/cli/OptionBuilderTest.java
    commons/proper/cli/trunk/src/test/java/org/apache/commons/cli/OptionTest.java

Modified: commons/proper/cli/trunk/src/main/java/org/apache/commons/cli/Option.java
URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/main/java/org/apache/commons/cli/Option.java?rev=1447094&r1=1447093&r2=1447094&view=diff
==============================================================================
--- commons/proper/cli/trunk/src/main/java/org/apache/commons/cli/Option.java (original)
+++ commons/proper/cli/trunk/src/main/java/org/apache/commons/cli/Option.java Sun Feb 17 22:32:21 2013
@@ -895,6 +895,16 @@ public class Option implements Cloneable
         }
         
         /**
+         * Marks this Option as required.
+         *
+         * @return this builder, to allow method chaining
+         */
+        public Builder required()
+        {
+            return required(true);
+        }
+
+        /**
          * Sets whether the Option is mandatory.
          *
          * @param required specifies whether the Option is mandatory
@@ -917,10 +927,31 @@ public class Option implements Cloneable
             this.type = type;
             return this;
         }
-        
+
         /**
-         * Sets the value separator. For example if the argument value
-         * was a Java property, the value separator would be '='.
+         * The Option will use '=' as a means to separate argument value.
+         *
+         * @return this builder, to allow method chaining
+         */
+        public Builder valueSeparator()
+        {
+            return valueSeparator('=');
+        }
+
+        /**
+         * The Option will use <code>sep</code> as a means to
+         * separate argument values.
+         * <p>
+         * <b>Example:</b>
+         * <pre>
+         * Option opt = Option.builder("D").valueSeparator('=')
+         *                                 .build();
+         *
+         * String args = "-Dkey=value";
+         * CommandLine line = parser.parse(args);
+         * String propertyName = opt.getValue(0);  // will be "key"
+         * String propertyValue = opt.getValue(1); // will be "value"
+         * </pre>
          *
          * @param sep The value separator.
          * @return this builder, to allow method chaining

Modified: commons/proper/cli/trunk/src/main/java/org/apache/commons/cli/OptionBuilder.java
URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/main/java/org/apache/commons/cli/OptionBuilder.java?rev=1447094&r1=1447093&r2=1447094&view=diff
==============================================================================
--- commons/proper/cli/trunk/src/main/java/org/apache/commons/cli/OptionBuilder.java (original)
+++ commons/proper/cli/trunk/src/main/java/org/apache/commons/cli/OptionBuilder.java Sun Feb 17 22:32:21 2013
@@ -155,15 +155,16 @@ public final class OptionBuilder
     /**
      * The next Option created uses <code>sep</code> as a means to
      * separate argument values.
-     *
+     * <p>
      * <b>Example:</b>
      * <pre>
-     * Option opt = OptionBuilder.withValueSeparator(':')
+     * Option opt = OptionBuilder.withValueSeparator('=')
      *                           .create('D');
      *
+     * String args = "-Dkey=value";
      * CommandLine line = parser.parse(args);
-     * String propertyName = opt.getValue(0);
-     * String propertyValue = opt.getValue(1);
+     * String propertyName = opt.getValue(0);  // will be "key"
+     * String propertyValue = opt.getValue(1); // will be "value"
      * </pre>
      *
      * @param sep The value separator to be used for the argument values.

Modified: commons/proper/cli/trunk/src/test/java/org/apache/commons/cli/HelpFormatterTest.java
URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/test/java/org/apache/commons/cli/HelpFormatterTest.java?rev=1447094&r1=1447093&r2=1447094&view=diff
==============================================================================
--- commons/proper/cli/trunk/src/test/java/org/apache/commons/cli/HelpFormatterTest.java (original)
+++ commons/proper/cli/trunk/src/test/java/org/apache/commons/cli/HelpFormatterTest.java Sun Feb 17 22:32:21 2013
@@ -322,9 +322,9 @@ public class HelpFormatterTest
     public void testPrintOptionGroupUsage()
     {
         OptionGroup group = new OptionGroup();
-        group.addOption(OptionBuilder.create("a"));
-        group.addOption(OptionBuilder.create("b"));
-        group.addOption(OptionBuilder.create("c"));
+        group.addOption(Option.builder("a").build());
+        group.addOption(Option.builder("b").build());
+        group.addOption(Option.builder("c").build());
 
         Options options = new Options();
         options.addOptionGroup(group);
@@ -341,9 +341,9 @@ public class HelpFormatterTest
     public void testPrintRequiredOptionGroupUsage()
     {
         OptionGroup group = new OptionGroup();
-        group.addOption(OptionBuilder.create("a"));
-        group.addOption(OptionBuilder.create("b"));
-        group.addOption(OptionBuilder.create("c"));
+        group.addOption(Option.builder("a").build());
+        group.addOption(Option.builder("b").build());
+        group.addOption(Option.builder("c").build());
         group.setRequired(true);
 
         Options options = new Options();
@@ -378,7 +378,7 @@ public class HelpFormatterTest
     @Test
     public void testDefaultArgName()
     {
-        Option option = OptionBuilder.hasArg().isRequired().create("f");
+        Option option = Option.builder("f").hasArg().required(true).build();
         
         Options options = new Options();
         options.addOption(option);
@@ -501,35 +501,36 @@ public class HelpFormatterTest
         Option newRun = new Option("n", "new", false, "Create NLT cache entries only for new items");
         Option trackerRun = new Option("t", "tracker", false, "Create NLT cache entries only for tracker items");
         
-        Option timeLimit = OptionBuilder.withLongOpt("limit")
-                                        .hasArg()
-                                        .withValueSeparator()
-                                        .withDescription("Set time limit for execution, in mintues")
-                                        .create("l");
-        
-        Option age = OptionBuilder.withLongOpt("age")
-                                        .hasArg()
-                                        .withValueSeparator()
-                                        .withDescription("Age (in days) of cache item before being recomputed")
-                                        .create("a");
-        
-        Option server = OptionBuilder.withLongOpt("server")
-                                        .hasArg()
-                                        .withValueSeparator()
-                                        .withDescription("The NLT server address")
-                                        .create("s");
-        
-        Option numResults = OptionBuilder.withLongOpt("results")
-                                        .hasArg()
-                                        .withValueSeparator()
-                                        .withDescription("Number of results per item")
-                                        .create("r");
+        Option timeLimit = Option.builder("l")
+                                 .longOpt("limit")
+                                 .hasArg()
+                                 .valueSeparator()
+                                 .desc("Set time limit for execution, in mintues")
+                                 .build();
         
-        Option configFile = OptionBuilder.withLongOpt("config")
+        Option age = Option.builder("a").longOpt("age")
                                         .hasArg()
-                                        .withValueSeparator()
-                                        .withDescription("Use the specified configuration file")
-                                        .create();
+                                        .valueSeparator()
+                                        .desc("Age (in days) of cache item before being recomputed")
+                                        .build();
+        
+        Option server = Option.builder("s").longOpt("server")
+                                           .hasArg()
+                                           .valueSeparator()
+                                           .desc("The NLT server address")
+                                           .build();
+        
+        Option numResults = Option.builder("r").longOpt("results")
+                                               .hasArg()
+                                               .valueSeparator()
+                                               .desc("Number of results per item")
+                                               .build();
+        
+        Option configFile = Option.builder().longOpt("config")
+                                            .hasArg()
+                                            .valueSeparator()
+                                            .desc("Use the specified configuration file")
+                                            .build();
         
         Options mOptions = new Options();
         mOptions.addOption(help);
@@ -568,8 +569,8 @@ public class HelpFormatterTest
     {
         Options options = new Options();
         options.addOption( "f", true, "the file" );
-        options.addOption(OptionBuilder.withLongOpt("size").withDescription("the size").hasArg().withArgName("SIZE").create('s'));
-        options.addOption(OptionBuilder.withLongOpt("age").withDescription("the age").hasArg().create());
+        options.addOption(Option.builder("s").longOpt("size").desc("the size").hasArg().argName("SIZE").build());
+        options.addOption(Option.builder().longOpt("age").desc("the age").hasArg().build());
         
         HelpFormatter formatter = new HelpFormatter();
         assertEquals(HelpFormatter.DEFAULT_LONG_OPT_SEPARATOR, formatter.getLongOptSeparator());
@@ -595,8 +596,8 @@ public class HelpFormatterTest
     {
         Options options = new Options();
         options.addOption( "f", true, "the file" );
-        options.addOption(OptionBuilder.withLongOpt("size").withDescription("the size").hasArg().withArgName("SIZE").create('s'));
-        options.addOption(OptionBuilder.withLongOpt("age").withDescription("the age").hasArg().create());
+        options.addOption(Option.builder("s").longOpt("size").desc("the size").hasArg().argName("SIZE").build());
+        options.addOption(Option.builder().longOpt("age").desc("the age").hasArg().build());
         
         HelpFormatter formatter = new HelpFormatter();
         formatter.setLongOptSeparator("=");

Modified: commons/proper/cli/trunk/src/test/java/org/apache/commons/cli/OptionBuilderTest.java
URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/test/java/org/apache/commons/cli/OptionBuilderTest.java?rev=1447094&r1=1447093&r2=1447094&view=diff
==============================================================================
--- commons/proper/cli/trunk/src/test/java/org/apache/commons/cli/OptionBuilderTest.java (original)
+++ commons/proper/cli/trunk/src/test/java/org/apache/commons/cli/OptionBuilderTest.java Sun Feb 17 22:32:21 2013
@@ -24,6 +24,7 @@ import static org.junit.Assert.fail;
 
 import org.junit.Test;
 
+@SuppressWarnings("deprecation") // OptionBuilder is marked deprecated
 public class OptionBuilderTest
 {
     @Test

Modified: commons/proper/cli/trunk/src/test/java/org/apache/commons/cli/OptionTest.java
URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/test/java/org/apache/commons/cli/OptionTest.java?rev=1447094&r1=1447093&r2=1447094&view=diff
==============================================================================
--- commons/proper/cli/trunk/src/test/java/org/apache/commons/cli/OptionTest.java (original)
+++ commons/proper/cli/trunk/src/test/java/org/apache/commons/cli/OptionTest.java Sun Feb 17 22:32:21 2013
@@ -28,6 +28,8 @@ public class OptionTest
 {
     private static class TestOption extends Option
     {
+        private static final long serialVersionUID = 1L;
+
         public TestOption(String opt, boolean hasArg, String description) throws IllegalArgumentException
         {
             super(opt, hasArg, description);
@@ -72,6 +74,8 @@ public class OptionTest
 
     private static class DefaultOption extends Option
     {
+        private static final long serialVersionUID = 1L;
+
         private final String defaultValue;
 
         public DefaultOption(String opt, String description, String defaultValue) throws IllegalArgumentException