private CommandLineParser populate(ShellContext shellContext, String line,
final Map<String, InputComponent<?, ?>> inputs)
throws Exception
{
inputs.putAll(getController().getInputs());
CommandLineParser parser = commandLineUtil.generateParser(getController(), shellContext, inputs);
CommandLine cmdLine = parser.parse(line, true);
Map<String, InputComponent<?, ?>> populatedInputs = commandLineUtil.populateUIInputs(cmdLine, inputs);
if (getController().isValid())
{
if (getController().canMoveToNextStep())
{
// The bug is here. we are immediately moving to the next step and removing all inputs that are not populated.
// this really needs to know if we have defaulted to next step or actually moved there willingly
// it should not remove old choices until a new choice has been made
getController().next().initialize();
inputs.keySet().retainAll(populatedInputs.keySet());
parser = populate(shellContext, line, inputs);
}
}
return parser;
}