[commands] SelectCommand: Fix leakage and multiple composition bug (#5571)

This commit is contained in:
Ryan Blue
2023-08-30 16:21:17 -04:00
committed by GitHub
parent 171375f440
commit cf19102c4a
2 changed files with 13 additions and 8 deletions

View File

@@ -27,6 +27,9 @@ public class SelectCommand extends Command {
private boolean m_runsWhenDisabled = true;
private InterruptionBehavior m_interruptBehavior = InterruptionBehavior.kCancelIncoming;
private final Command m_defaultCommand =
new PrintCommand("SelectCommand selector value does not correspond to any command!");
/**
* Creates a new SelectCommand.
*
@@ -37,6 +40,7 @@ public class SelectCommand extends Command {
m_commands = requireNonNullParam(commands, "commands", "SelectCommand");
m_selector = requireNonNullParam(selector, "selector", "SelectCommand");
CommandScheduler.getInstance().registerComposedCommands(m_defaultCommand);
CommandScheduler.getInstance()
.registerComposedCommands(commands.values().toArray(new Command[] {}));
@@ -51,12 +55,7 @@ public class SelectCommand extends Command {
@Override
public void initialize() {
if (!m_commands.containsKey(m_selector.get())) {
m_selectedCommand =
new PrintCommand("SelectCommand selector value does not correspond to any command!");
} else {
m_selectedCommand = m_commands.get(m_selector.get());
}
m_selectedCommand = m_commands.getOrDefault(m_selector.get(), m_defaultCommand);
m_selectedCommand.initialize();
}