From 2ec4223d265ebf5aad0b6525f5fc4853b8d54bca Mon Sep 17 00:00:00 2001
From: Christian Wulf <chw@informatik.uni-kiel.de>
Date: Wed, 24 Jun 2015 13:28:17 +0200
Subject: [PATCH] refactored WordCounter

---
 .../teetime/stage/string/WordCounter.java     | 19 +++++--------------
 .../java/teetime/framework/TraversorTest.java |  3 +--
 2 files changed, 6 insertions(+), 16 deletions(-)

diff --git a/src/main/java/teetime/stage/string/WordCounter.java b/src/main/java/teetime/stage/string/WordCounter.java
index 08e10ed9..1508c15e 100644
--- a/src/main/java/teetime/stage/string/WordCounter.java
+++ b/src/main/java/teetime/stage/string/WordCounter.java
@@ -15,13 +15,10 @@
  */
 package teetime.stage.string;
 
-import java.util.ArrayList;
-
 import teetime.framework.AbstractCompositeStage;
 import teetime.framework.ConfigurationContext;
 import teetime.framework.InputPort;
 import teetime.framework.OutputPort;
-import teetime.framework.Stage;
 import teetime.stage.MappingCounter;
 import teetime.stage.util.CountingMap;
 
@@ -36,24 +33,18 @@ import teetime.stage.util.CountingMap;
  */
 public final class WordCounter extends AbstractCompositeStage {
 
-	// This fields are needed for the methods to work.
-	private final Tokenizer tokenizer = new Tokenizer(" ");
-	private final MappingCounter<String> mapCounter = new MappingCounter<String>();
-	private final ArrayList<Stage> lastStages = new ArrayList<Stage>();
+	private final Tokenizer tokenizer;
+	private final MappingCounter<String> mapCounter;
 
-	// The connection of the different stages is realized within the construction of a instance of this class.
 	public WordCounter(final ConfigurationContext context) {
 		super(context);
-		this.lastStages.add(this.mapCounter);
+
+		this.tokenizer = new Tokenizer(" ");
 		final ToLowerCase toLowerCase = new ToLowerCase();
+		this.mapCounter = new MappingCounter<String>();
 
 		connectPorts(this.tokenizer.getOutputPort(), toLowerCase.getInputPort());
 		connectPorts(toLowerCase.getOutputPort(), this.mapCounter.getInputPort());
-		// connectStages(wordcharacterFilter.getOutputPort(), this.mapCounter.getInputPort());
-	}
-
-	public Stage getFirstStage() {
-		return this.tokenizer;
 	}
 
 	public InputPort<String> getInputPort() {
diff --git a/src/test/java/teetime/framework/TraversorTest.java b/src/test/java/teetime/framework/TraversorTest.java
index 0b312dcd..dcbb167a 100644
--- a/src/test/java/teetime/framework/TraversorTest.java
+++ b/src/test/java/teetime/framework/TraversorTest.java
@@ -83,8 +83,7 @@ public class TraversorTest {
 				connectPorts(distributor.getNewOutputPort(), wc.getInputPort());
 				connectPorts(wc.getOutputPort(), merger.getNewInputPort());
 				// Add WordCounter as a threadable stage, so it runs in its own thread
-				addThreadableStage(wc.getFirstStage());
-
+				addThreadableStage(wc.getInputPort().getOwningStage());
 			}
 
 			// Connect the stages of the last part
-- 
GitLab