On Thu, 2002-10-24 at 10:17, John Keyes wrote: > > Is this a bug? Or am I using this incorrectly? > > I have an option with short and long values. Given code that is > > essentially what is below, with a PosixParser I see results as follows: > > > > A command line with just "-t" prints out the results of the catch block > > (OK) > > A command line with just "-target" prints out the results of the catch > > block (OK) > > A command line with just "-t foobar.com" prints out "processing selected > > target: foobar.com" (OK) > > A command line with just "-target foobar.com" prints out "processing > > selected target: arget" (ERROR?) > > > > ======================================================================== > > ======================= > > private static final String OPTION_TARGET = "t"; > > private static final String OPTION_TARGET_LONG = "target"; > > // ... > > Option generateTarget = new Option(OPTION_TARGET, > > OPTION_TARGET_LONG, > > true, > > "Generate files for the specified > > target machine"); > > // ... > > try { > > parsedLine = parser.parse(cmdLineOpts, args); > > } catch (ParseException pe) { > > System.out.println("Invalid command: " + pe.getMessage() + > > "\n"); > > HelpFormatter hf = new HelpFormatter(); > > hf.printHelp(USAGE, cmdLineOpts); > > System.exit(-1); > > } > > > > if (parsedLine.hasOption(OPTION_TARGET)) { > > System.out.println("processing selected target: " + > > parsedLine.getOptionValue(OPTION_TARGET)); > > } > > It is a bug but it is due to well defined behaviour (so that makes > me feel a little better about myself ;). To support *special* > (well I call them special anyway) like -Dsystem.property=value we > need to be able to examine the first character of an option. If the > first character is itself defined as an Option then the remainder > of the token is used as the value, e.g. 'D' is the token, it > is an option so 'system.property=value' is the argument value for that > option. This is the behaviour that we are seeing for your example. > 't' is the token, it is an options so 'arget' is the argument value. > > I suppose a solution to this could be to have a way to specify properties > for parsers. In this case 'posix.special.option == true' for turning > on *special* options. I'll have a look into this and let you know.
Actually, another property on Option would be cleaner and easier to implement I would imagine. -John K -- To unsubscribe, e-mail: <mailto:commons-dev-unsubscribe@;jakarta.apache.org> For additional commands, e-mail: <mailto:commons-dev-help@;jakarta.apache.org>