diff --git a/src/main/java/teetime/framework/ConfigurationContext.java b/src/main/java/teetime/framework/ConfigurationContext.java index 496be3073971103bfbe6f51ad4c9cdf85164a6c0..d63418239f4bcb835338229fcb5a90011547c05b 100644 --- a/src/main/java/teetime/framework/ConfigurationContext.java +++ b/src/main/java/teetime/framework/ConfigurationContext.java @@ -18,6 +18,9 @@ package teetime.framework; import java.util.HashSet; import java.util.Set; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import teetime.framework.pipe.IPipe; import teetime.framework.pipe.IPipeFactory; import teetime.framework.pipe.InstantiationPipe; @@ -31,6 +34,8 @@ import teetime.framework.pipe.PipeFactoryRegistry.ThreadCommunication; */ public abstract class ConfigurationContext extends Configuration { + private static final Logger LOGGER = LoggerFactory.getLogger(ConfigurationContext.class); + private final Set<Stage> threadableStages = new HashSet<Stage>(); @SuppressWarnings("deprecation") @@ -61,7 +66,9 @@ public abstract class ConfigurationContext extends Configuration { */ @Override protected final void addThreadableStage(final Stage stage) { - this.threadableStages.add(stage); + if (this.threadableStages.add(stage)) { + LOGGER.warn("Stage " + stage.getId() + " was already marked as threadable stage."); + } } /** @@ -192,9 +199,12 @@ public abstract class ConfigurationContext extends Configuration { */ @Override protected final <T> void connectPorts(final OutputPort<? extends T> sourcePort, final InputPort<T> targetPort, final int capacity) { - if (sourcePort.getOwningStage().getInputPorts().length == 0) { + if (sourcePort.getOwningStage().getInputPorts().length == 0 && !threadableStages.contains(sourcePort.getOwningStage())) { addThreadableStage(sourcePort.getOwningStage()); } + if (sourcePort.pipe != null) { + LOGGER.warn("Overwritting existing pipe connecting stages " + sourcePort.getOwningStage().getId() + " and " + targetPort.getOwningStage().getId() + "."); + } new InstantiationPipe(sourcePort, targetPort, capacity); } diff --git a/src/test/java/teetime/framework/exceptionHandling/ExceptionTestConfiguration.java b/src/test/java/teetime/framework/exceptionHandling/ExceptionTestConfiguration.java index 15b5023bf46e7336a52fd71ebf2ffe1af7ae966b..bf9d3c7ae4cf98147fced1df41db3e3e1503d7d8 100644 --- a/src/test/java/teetime/framework/exceptionHandling/ExceptionTestConfiguration.java +++ b/src/test/java/teetime/framework/exceptionHandling/ExceptionTestConfiguration.java @@ -31,8 +31,7 @@ public class ExceptionTestConfiguration extends ConfigurationContext { connectPorts(first.getOutputPort(), second.getInputPort()); // this.addThreadableStage(new ExceptionTestStage()); - this.addThreadableStage(first); this.addThreadableStage(second); - this.addThreadableStage(third); + // this.addThreadableStage(third); } }