package sharpen.core.framework; public abstract class CommandLineParser { protected final String[] _args; protected int _current; public CommandLineParser(String[] args) { if (null == args) illegalArgument("args cannot be null"); _args = args; } protected void processOption(String arg) { illegalArgument(arg); } protected void processArgument(String arg) { illegalArgument(arg); } protected void processResponseFile(String arg) { illegalArgument(arg); } protected void validate() { } protected static void illegalArgument(String message) { throw new IllegalArgumentException(message); } protected void parse() { for (; _current<_args.length; ++_current) { parseArgument(_args[_current]); } validate(); } private void parseArgument(String arg) { if (arg.startsWith("@")) { processResponseFile(arg); } else if (arg.startsWith("-")) { processOption(arg); } else { processArgument(arg); } } protected boolean areEqual(String arg, String value) { return arg.equals(value); } protected String consumeNext() { return _args[++_current]; } }