diff --git a/src/main/java/teetime/framework/CompositeStage.java b/src/main/java/teetime/framework/CompositeStage.java index deb3aa14a92bec8358fb7912ded3542a530a0ca1..003019cbca9243aeca6dff6e0583ce42ed8438d8 100644 --- a/src/main/java/teetime/framework/CompositeStage.java +++ b/src/main/java/teetime/framework/CompositeStage.java @@ -16,47 +16,43 @@ import teetime.framework.validation.InvalidPortConnection; @SuppressWarnings("PMD.AbstractNaming") public abstract class CompositeStage extends Stage { - private final Stage firstStage; - private final Collection<Stage> lastStages; + protected abstract Stage getFirstStage(); - protected CompositeStage(final Stage firstStage, final Collection<Stage> lastStages) { - this.firstStage = firstStage; - this.lastStages = lastStages; - } + protected abstract Collection<? extends Stage> getLastStages(); @Override protected void executeWithPorts() { - firstStage.executeWithPorts(); + getFirstStage().executeWithPorts(); } @Override protected void onSignal(final ISignal signal, final InputPort<?> inputPort) { - firstStage.onSignal(signal, inputPort); + getFirstStage().onSignal(signal, inputPort); } @Override protected TerminationStrategy getTerminationStrategy() { - return firstStage.getTerminationStrategy(); + return getFirstStage().getTerminationStrategy(); } @Override protected void terminate() { - firstStage.terminate(); + getFirstStage().terminate(); } @Override protected boolean shouldBeTerminated() { - return firstStage.shouldBeTerminated(); + return getFirstStage().shouldBeTerminated(); } @Override protected InputPort<?>[] getInputPorts() { - return firstStage.getInputPorts(); + return getFirstStage().getInputPorts(); } @Override public void validateOutputPorts(final List<InvalidPortConnection> invalidPortConnections) { - for (final Stage s : lastStages) { + for (final Stage s : getLastStages()) { s.validateOutputPorts(invalidPortConnections); } } @@ -64,7 +60,7 @@ public abstract class CompositeStage extends Stage { @Override protected boolean isStarted() { boolean isStarted = true; - for (final Stage s : lastStages) { + for (final Stage s : getLastStages()) { isStarted = isStarted && s.isStarted(); } return isStarted;