diff --git a/java/src/org/broadinstitute/sting/commandline/ArgumentTypeDescriptor.java b/java/src/org/broadinstitute/sting/commandline/ArgumentTypeDescriptor.java index 7847f4575..f17428570 100644 --- a/java/src/org/broadinstitute/sting/commandline/ArgumentTypeDescriptor.java +++ b/java/src/org/broadinstitute/sting/commandline/ArgumentTypeDescriptor.java @@ -299,6 +299,7 @@ class SimpleArgumentTypeDescriptor extends ArgumentTypeDescriptor { public Object parse(ParsingEngine parsingEngine, ArgumentSource source, Class type, ArgumentMatches matches) { if (source.isFlag()) return true; + ArgumentDefinition defaultDefinition = createDefaultArgumentDefinition(source); String value = getArgumentValue( defaultDefinition, matches ); Object result; @@ -308,6 +309,8 @@ class SimpleArgumentTypeDescriptor extends ArgumentTypeDescriptor { try { if (type.isPrimitive()) { Method valueOf = primitiveToWrapperMap.get(type).getMethod("valueOf",String.class); + if(value == null) + throw new MissingArgumentValueException(createDefaultArgumentDefinition(source)); result = valueOf.invoke(null,value.trim()); } else if (type.isEnum()) { Object[] vals = type.getEnumConstants(); diff --git a/java/test/org/broadinstitute/sting/commandline/ParsingEngineUnitTest.java b/java/test/org/broadinstitute/sting/commandline/ParsingEngineUnitTest.java index 74d881fe9..54e3b35bc 100755 --- a/java/test/org/broadinstitute/sting/commandline/ParsingEngineUnitTest.java +++ b/java/test/org/broadinstitute/sting/commandline/ParsingEngineUnitTest.java @@ -125,6 +125,20 @@ public class ParsingEngineUnitTest extends BaseTest { Assert.assertEquals(argProvider.foo, 5, "Argument is not correctly initialized"); } + @Test(expectedExceptions=MissingArgumentValueException.class) + public void primitiveArgumentNoValueTest() { + final String[] commandLine = new String[] {"--foo"}; + + parsingEngine.addArgumentSource( PrimitiveArgProvider.class ); + parsingEngine.parse( commandLine ); + parsingEngine.validate(); + + PrimitiveArgProvider argProvider = new PrimitiveArgProvider(); + parsingEngine.loadArgumentsIntoObject( argProvider ); + + Assert.assertEquals(argProvider.foo, 5, "Argument is not correctly initialized"); + } + private class PrimitiveArgProvider { @Argument(doc="simple integer") int foo;