From f48162f23aef692aea8d51e696bc06c3411374ee Mon Sep 17 00:00:00 2001 From: Nelson Tavares de Sousa <stu103017@mail.uni-kiel.de> Date: Thu, 2 Jul 2015 13:24:14 +0200 Subject: [PATCH] avoids problems with nested stages --- .../framework/ConfigurationContext.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main/java/teetime/framework/ConfigurationContext.java b/src/main/java/teetime/framework/ConfigurationContext.java index 236f4c38..7d2edf22 100644 --- a/src/main/java/teetime/framework/ConfigurationContext.java +++ b/src/main/java/teetime/framework/ConfigurationContext.java @@ -33,7 +33,7 @@ public class ConfigurationContext { private static final Logger LOGGER = LoggerFactory.getLogger(ConfigurationContext.class); - private final Map<Stage, String> threadableStages = new HashMap<Stage, String>(); + private Map<Stage, String> threadableStages = new HashMap<Stage, String>(); ConfigurationContext() {} @@ -63,21 +63,21 @@ public class ConfigurationContext { LOGGER.warn("Overwriting existing pipe while connecting stages " + sourcePort.getOwningStage().getId() + " and " + targetPort.getOwningStage().getId() + "."); } - mergeContexts(sourcePort.getOwningStage(), targetPort.getOwningStage()); + mergeContexts(sourcePort.getOwningStage()); + mergeContexts(targetPort.getOwningStage()); new InstantiationPipe(sourcePort, targetPort, capacity); } - final void mergeContexts(final Stage sourceStage, final Stage targetStage) { - if (!sourceStage.owningContext.equals(EmptyContext.getInstance())) { - this.threadableStages.putAll(sourceStage.owningContext.threadableStages); - } else { - sourceStage.owningContext = this; - } - if (!targetStage.owningContext.equals(EmptyContext.getInstance())) { - this.threadableStages.putAll(targetStage.owningContext.threadableStages); + final void mergeContexts(final Stage stage) { + if (!stage.owningContext.equals(EmptyContext.getInstance())) { + if (stage.owningContext != this) { // Performance + this.threadableStages.putAll(stage.owningContext.threadableStages); + stage.owningContext.threadableStages = this.threadableStages; + } } else { - targetStage.owningContext = this; + stage.owningContext = this; } + } } -- GitLab