From 6e3dfe8b51a7bf676a1d4c99bb1a628ffdad7b06 Mon Sep 17 00:00:00 2001
From: Nils Christian Ehmke <nie@informatik.uni-kiel.de>
Date: Tue, 3 Feb 2015 15:12:28 +0100
Subject: [PATCH] Composite Stages

---
 .../teetime/framework/CompositeStage.java     | 24 ++++++++-----------
 1 file changed, 10 insertions(+), 14 deletions(-)

diff --git a/src/main/java/teetime/framework/CompositeStage.java b/src/main/java/teetime/framework/CompositeStage.java
index deb3aa14..003019cb 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;
-- 
GitLab