diff --git a/styleguide/spotbugs-exclude.xml b/styleguide/spotbugs-exclude.xml
index 0c0156d346..58d82d1e74 100644
--- a/styleguide/spotbugs-exclude.xml
+++ b/styleguide/spotbugs-exclude.xml
@@ -64,6 +64,10 @@
+
+
+
+
diff --git a/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/ParallelCommandGroup.java b/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/ParallelCommandGroup.java
index fa6ab8db92..40a85a714c 100644
--- a/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/ParallelCommandGroup.java
+++ b/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/ParallelCommandGroup.java
@@ -19,6 +19,7 @@ public class ParallelCommandGroup extends CommandGroupBase {
// maps commands in this group to whether they are still running
private final Map m_commands = new HashMap<>();
private boolean m_runWhenDisabled = true;
+ private InterruptionBehavior m_interruptBehavior = InterruptionBehavior.kCancelIncoming;
/**
* Creates a new ParallelCommandGroup. The given commands will be executed simultaneously. The
@@ -50,6 +51,9 @@ public class ParallelCommandGroup extends CommandGroupBase {
m_commands.put(command, false);
m_requirements.addAll(command.getRequirements());
m_runWhenDisabled &= command.runsWhenDisabled();
+ if (command.getInterruptionBehavior() == InterruptionBehavior.kCancelSelf) {
+ m_interruptBehavior = InterruptionBehavior.kCancelSelf;
+ }
}
}
@@ -95,4 +99,9 @@ public class ParallelCommandGroup extends CommandGroupBase {
public boolean runsWhenDisabled() {
return m_runWhenDisabled;
}
+
+ @Override
+ public InterruptionBehavior getInterruptionBehavior() {
+ return m_interruptBehavior;
+ }
}
diff --git a/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/ParallelDeadlineGroup.java b/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/ParallelDeadlineGroup.java
index f0e192958e..e3ac8fd85f 100644
--- a/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/ParallelDeadlineGroup.java
+++ b/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/ParallelDeadlineGroup.java
@@ -22,6 +22,7 @@ public class ParallelDeadlineGroup extends CommandGroupBase {
private boolean m_runWhenDisabled = true;
private boolean m_finished = true;
private Command m_deadline;
+ private InterruptionBehavior m_interruptBehavior = InterruptionBehavior.kCancelIncoming;
/**
* Creates a new ParallelDeadlineGroup. The given commands (including the deadline) will be
@@ -72,6 +73,9 @@ public class ParallelDeadlineGroup extends CommandGroupBase {
m_commands.put(command, false);
m_requirements.addAll(command.getRequirements());
m_runWhenDisabled &= command.runsWhenDisabled();
+ if (command.getInterruptionBehavior() == InterruptionBehavior.kCancelSelf) {
+ m_interruptBehavior = InterruptionBehavior.kCancelSelf;
+ }
}
}
@@ -119,4 +123,9 @@ public class ParallelDeadlineGroup extends CommandGroupBase {
public boolean runsWhenDisabled() {
return m_runWhenDisabled;
}
+
+ @Override
+ public InterruptionBehavior getInterruptionBehavior() {
+ return m_interruptBehavior;
+ }
}
diff --git a/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/ParallelRaceGroup.java b/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/ParallelRaceGroup.java
index edbb83d6de..43172af6df 100644
--- a/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/ParallelRaceGroup.java
+++ b/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/ParallelRaceGroup.java
@@ -20,6 +20,7 @@ public class ParallelRaceGroup extends CommandGroupBase {
private final Set m_commands = new HashSet<>();
private boolean m_runWhenDisabled = true;
private boolean m_finished = true;
+ private InterruptionBehavior m_interruptBehavior = InterruptionBehavior.kCancelIncoming;
/**
* Creates a new ParallelCommandRace. The given commands will be executed simultaneously, and will
@@ -51,6 +52,9 @@ public class ParallelRaceGroup extends CommandGroupBase {
m_commands.add(command);
m_requirements.addAll(command.getRequirements());
m_runWhenDisabled &= command.runsWhenDisabled();
+ if (command.getInterruptionBehavior() == InterruptionBehavior.kCancelSelf) {
+ m_interruptBehavior = InterruptionBehavior.kCancelSelf;
+ }
}
}
@@ -88,4 +92,9 @@ public class ParallelRaceGroup extends CommandGroupBase {
public boolean runsWhenDisabled() {
return m_runWhenDisabled;
}
+
+ @Override
+ public InterruptionBehavior getInterruptionBehavior() {
+ return m_interruptBehavior;
+ }
}
diff --git a/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/SelectCommand.java b/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/SelectCommand.java
index e7748160cd..3cf9f261fb 100644
--- a/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/SelectCommand.java
+++ b/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/SelectCommand.java
@@ -31,6 +31,8 @@ public class SelectCommand extends CommandBase {
private final Supplier