Author: ebourg Date: Tue Apr 12 15:55:03 2011 New Revision: 1091485 URL: http://svn.apache.org/viewvc?rev=1091485&view=rev Log: Option type is now set to String by default (Fixes CLI-215) The type is now explicitly a Class instance instead of an unspecified Object
Modified: commons/proper/cli/trunk/src/main/java/org/apache/commons/cli/CommandLine.java 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/main/java/org/apache/commons/cli/PatternOptionBuilder.java commons/proper/cli/trunk/src/test/java/org/apache/commons/cli/CommandLineTest.java commons/proper/cli/trunk/src/test/java/org/apache/commons/cli/OptionBuilderTest.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=1091485&r1=1091484&r2=1091485&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 Tue Apr 12 15:55:03 2011 @@ -113,16 +113,14 @@ public class CommandLine implements Seri public Object getParsedOptionValue(String opt) throws ParseException { String res = getOptionValue(opt); - Option option = resolveOption(opt); - if (option == null) + + if (option == null || res == null) { return null; } - - Object type = option.getType(); - - return (res == null) ? null : TypeHandler.createValue(res, type); + + return TypeHandler.createValue(res, option.getType()); } /** 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=1091485&r1=1091484&r2=1091485&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 Tue Apr 12 15:55:03 2011 @@ -69,7 +69,7 @@ public class Option implements Cloneable private int numberOfArgs = UNINITIALIZED; /** the type of this Option */ - private Object type; + private Class type = String.class; /** the list of argument values **/ private List values = new ArrayList(); @@ -193,7 +193,7 @@ public class Option implements Cloneable * * @param type the type of this Option */ - public void setType(Object type) + public void setType(Class type) { this.type = type; } 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=1091485&r1=1091484&r2=1091485&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 Tue Apr 12 15:55:03 2011 @@ -48,7 +48,7 @@ public final class OptionBuilder private static int numberOfArgs = Option.UNINITIALIZED; /** option type */ - private static Object type; + private static Class type; /** option can have an optional argument value */ private static boolean optionalArg; @@ -81,7 +81,7 @@ public final class OptionBuilder description = null; argName = null; longopt = null; - type = null; + type = String.class; required = false; numberOfArgs = Option.UNINITIALIZED; optionalArg = false; @@ -287,7 +287,7 @@ public final class OptionBuilder * @param newType the type of the Options argument value * @return the OptionBuilder instance */ - public static OptionBuilder withType(Object newType) + public static OptionBuilder withType(Class newType) { OptionBuilder.type = newType; Modified: commons/proper/cli/trunk/src/main/java/org/apache/commons/cli/PatternOptionBuilder.java URL: http://svn.apache.org/viewvc/commons/proper/cli/trunk/src/main/java/org/apache/commons/cli/PatternOptionBuilder.java?rev=1091485&r1=1091484&r2=1091485&view=diff ============================================================================== --- commons/proper/cli/trunk/src/main/java/org/apache/commons/cli/PatternOptionBuilder.java (original) +++ commons/proper/cli/trunk/src/main/java/org/apache/commons/cli/PatternOptionBuilder.java Tue Apr 12 15:55:03 2011 @@ -91,7 +91,7 @@ public class PatternOptionBuilder * @param ch the specified character * @return The class that <code>ch</code> represents */ - public static Object getValueClass(char ch) + public static Class getValueClass(char ch) { switch (ch) { @@ -149,7 +149,7 @@ public class PatternOptionBuilder { char opt = ' '; boolean required = false; - Object type = null; + Class type = null; Options options = new Options(); 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=1091485&r1=1091484&r2=1091485&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 Tue Apr 12 15:55:03 2011 @@ -61,4 +61,16 @@ public class CommandLineTest extends Tes assertEquals(3, cmd.getOptions().length); } + + public void testGetParsedOptionValue() throws Exception { + Options options = new Options(); + options.addOption(OptionBuilder.hasArg().withType(Number.class).create("i")); + options.addOption(OptionBuilder.hasArg().create("f")); + + CommandLineParser parser = new DefaultParser(); + CommandLine cmd = parser.parse(options, new String[] { "-i", "123", "-f", "foo" }); + + assertEquals(123, ((Number) cmd.getParsedOptionValue("i")).intValue()); + assertEquals("foo", cmd.getParsedOptionValue("f")); + } } 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=1091485&r1=1091484&r2=1091485&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 Tue Apr 12 15:55:03 2011 @@ -26,14 +26,14 @@ public class OptionBuilderTest extends T .hasArg( ) .isRequired( ) .hasArgs( ) - .withType( new Float( 10 ) ) + .withType( Float.class ) .withDescription( "this is a simple option" ) .create( 's' ); assertEquals( "s", simple.getOpt() ); assertEquals( "simple option", simple.getLongOpt() ); assertEquals( "this is a simple option", simple.getDescription() ); - assertEquals( simple.getType().getClass(), Float.class ); + assertEquals( simple.getType(), Float.class ); assertTrue( simple.hasArg() ); assertTrue( simple.isRequired() ); assertTrue( simple.hasArgs() ); @@ -44,14 +44,14 @@ public class OptionBuilderTest extends T .hasArg( ) .isRequired( ) .hasArgs( ) - .withType( new Float( 10 ) ) + .withType( Float.class ) .withDescription( "this is a simple option" ) .create( 's' ); assertEquals( "s", simple.getOpt() ); assertEquals( "simple option", simple.getLongOpt() ); assertEquals( "this is a simple option", simple.getDescription() ); - assertEquals( simple.getType().getClass(), Float.class ); + assertEquals( simple.getType(), Float.class ); assertTrue( simple.hasArg() ); assertTrue( simple.isRequired() ); assertTrue( simple.hasArgs() ); @@ -64,7 +64,7 @@ public class OptionBuilderTest extends T assertEquals( "d", simple.getOpt() ); assertEquals( "dimple option", simple.getLongOpt() ); assertEquals( "this is a dimple option", simple.getDescription() ); - assertNull( simple.getType() ); + assertEquals( String.class, simple.getType() ); assertTrue( simple.hasArg() ); assertTrue( !simple.isRequired() ); assertTrue( !simple.hasArgs() );