From 92df3cbe77988373484026fcb6d3d906284f50e2 Mon Sep 17 00:00:00 2001
From: Nelson Tavares de Sousa <stu103017@mail.uni-kiel.de>
Date: Fri, 24 Jul 2015 16:46:29 +0200
Subject: [PATCH] minor refactoring

---
 .../framework/ConfigurationContext.java       | 31 +++++++++----------
 .../java/teetime/framework/ThreadService.java |  1 -
 2 files changed, 15 insertions(+), 17 deletions(-)

diff --git a/src/main/java/teetime/framework/ConfigurationContext.java b/src/main/java/teetime/framework/ConfigurationContext.java
index 2f539214..a0b66853 100644
--- a/src/main/java/teetime/framework/ConfigurationContext.java
+++ b/src/main/java/teetime/framework/ConfigurationContext.java
@@ -15,9 +15,9 @@
  */
 package teetime.framework;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.util.HashSet;
 import java.util.Map;
+import java.util.Set;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -36,18 +36,16 @@ final class ConfigurationContext {
 
 	private static final Logger LOGGER = LoggerFactory.getLogger(ConfigurationContext.class);
 
-	private final List<ConfigurationContext> childs = new ArrayList<ConfigurationContext>(); // parent-child-tree
-	private final AbstractCompositeStage compositeStage;
+	private final Set<ConfigurationContext> childs = new HashSet<ConfigurationContext>(); // parent-child-tree
 
-	private ThreadService runtimeService;
+	private ThreadService threadService;
 
 	ConfigurationContext(final AbstractCompositeStage compositeStage) {
-		this.compositeStage = compositeStage;
-		this.runtimeService = new ThreadService(compositeStage);
+		this.threadService = new ThreadService(compositeStage);
 	}
 
 	Map<Stage, String> getThreadableStages() {
-		return runtimeService.getThreadableStages();
+		return threadService.getThreadableStages();
 	}
 
 	/**
@@ -55,7 +53,7 @@ final class ConfigurationContext {
 	 */
 	final void addThreadableStage(final Stage stage, final String threadName) {
 		childFunction(stage);
-		runtimeService.addThreadableStage(stage, threadName);
+		threadService.addThreadableStage(stage, threadName);
 	}
 
 	/**
@@ -63,7 +61,7 @@ final class ConfigurationContext {
 	 */
 	final <T> void connectPorts(final OutputPort<? extends T> sourcePort, final InputPort<T> targetPort, final int capacity) {
 		if (sourcePort.getOwningStage().getInputPorts().size() == 0) {
-			if (!runtimeService.getThreadableStages().containsKey(sourcePort.getOwningStage())) {
+			if (!threadService.getThreadableStages().containsKey(sourcePort.getOwningStage())) {
 				addThreadableStage(sourcePort.getOwningStage(), sourcePort.getOwningStage().getId());
 			}
 		}
@@ -80,8 +78,6 @@ final class ConfigurationContext {
 	final void childFunction(final Stage stage) {
 		if (!stage.owningContext.equals(EMPTY_CONTEXT)) {
 			if (stage.owningContext != this) { // Performance
-				// this.runtimeService.getThreadableStages().putAll(stage.owningContext.getRuntimeService().getThreadableStages());
-				// stage.owningContext.getRuntimeService().setThreadableStages(this.getRuntimeService().getThreadableStages());
 				childs.add(stage.owningContext);
 			}
 		} else {
@@ -98,19 +94,22 @@ final class ConfigurationContext {
 	}
 
 	final void initializeServices() {
-		runtimeService.onInitialize();
+		threadService.onInitialize();
 	}
 
 	private void mergeContexts(final ConfigurationContext child) {
-		runtimeService.merge(child.getRuntimeService());
+		threadService.merge(child.getRuntimeService());
+
+		// Finally copy parent services
+		child.threadService = this.threadService;
 	}
 
 	public ThreadService getRuntimeService() {
-		return runtimeService;
+		return threadService;
 	}
 
 	public void setRuntimeService(final ThreadService runtimeService) {
-		this.runtimeService = runtimeService;
+		this.threadService = runtimeService;
 	}
 
 }
diff --git a/src/main/java/teetime/framework/ThreadService.java b/src/main/java/teetime/framework/ThreadService.java
index c89df66e..ab879294 100644
--- a/src/main/java/teetime/framework/ThreadService.java
+++ b/src/main/java/teetime/framework/ThreadService.java
@@ -216,7 +216,6 @@ class ThreadService extends AbstractService<ThreadService> {
 	@Override
 	void merge(final ThreadService source) {
 		this.getThreadableStages().putAll(source.getThreadableStages());
-		source.setThreadableStages(this.getThreadableStages());
 	}
 
 	SignalingCounter getRunnableCounter() {
-- 
GitLab