diff --git a/src/main/java/teetime/framework/ConfigurationContext.java b/src/main/java/teetime/framework/ConfigurationContext.java index 236f4c3808d5dce6801b62cc7b62ffdfad291b76..7d2edf220f0d4f7f985252942a58491be5f8253c 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; } + } }