diff --git a/src/main/java/teetime/framework/AbstractStage.java b/src/main/java/teetime/framework/AbstractStage.java index ab8d1dae94909a75c1254a40121c64392c78ad54..96b71bb44ff3d4f9e3d5964a5cdad53f233bfff8 100644 --- a/src/main/java/teetime/framework/AbstractStage.java +++ b/src/main/java/teetime/framework/AbstractStage.java @@ -58,10 +58,10 @@ public abstract class AbstractStage extends Stage { public void onSignal(final ISignal signal, final InputPort<?> inputPort) { if (!this.signalAlreadyReceived(signal, inputPort)) { signal.trigger(this); - for (OutputPort<?> outputPort : outputPorts) { outputPort.sendSignal(signal); } + } } diff --git a/src/main/java/teetime/framework/RunnableConsumerStage.java b/src/main/java/teetime/framework/RunnableConsumerStage.java index 5a8e39643208d88882ca578bd0a6475813fb1e16..ded489ebed6581caff6da9b0cc4ae39c82fb20cb 100644 --- a/src/main/java/teetime/framework/RunnableConsumerStage.java +++ b/src/main/java/teetime/framework/RunnableConsumerStage.java @@ -47,6 +47,9 @@ final class RunnableConsumerStage extends AbstractRunnableStage { for (InputPort<?> inputPort : inputPorts) { inputPort.waitForStartSignal(); } + for (InputPort<?> inputPort : inputPorts) { + inputPort.waitForStartSignal(); + } logger.trace("Starting..." + stage); } diff --git a/src/main/java/teetime/stage/MultipleInstanceOfFilter.java b/src/main/java/teetime/stage/MultipleInstanceOfFilter.java index 46a363af2fd5f6c9162a83deab064cb958a50597..42f0d22ba131b5075b6799269ce7ca1c09ca3b78 100644 --- a/src/main/java/teetime/stage/MultipleInstanceOfFilter.java +++ b/src/main/java/teetime/stage/MultipleInstanceOfFilter.java @@ -42,7 +42,6 @@ public final class MultipleInstanceOfFilter<I> extends AbstractConsumerStage<I> @SuppressWarnings("unchecked") public void onStarting() throws Exception { super.onStarting(); - // We cache the map to avoid the creating of iterators during runtime cachedOutputPortsMap = (Entry<Class<? extends I>, OutputPort<? super I>>[]) outputPortsMap.entrySet().toArray(new Entry<?, ?>[outputPortsMap.size()]); } diff --git a/src/test/java/teetime/stage/MultipleInstanceOfFilterTest.java b/src/test/java/teetime/stage/MultipleInstanceOfFilterTest.java index 3654feddc788773efc5f7fd7401b626c9b1ff3e9..6221ba7733486296626f1b55ea5fb486d2db96c6 100644 --- a/src/test/java/teetime/stage/MultipleInstanceOfFilterTest.java +++ b/src/test/java/teetime/stage/MultipleInstanceOfFilterTest.java @@ -16,7 +16,9 @@ package teetime.stage; import static org.hamcrest.Matchers.contains; +import static org.hamcrest.Matchers.empty; import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.not; import static org.junit.Assert.assertThat; import java.util.ArrayList; @@ -42,6 +44,7 @@ public class MultipleInstanceOfFilterTest { StageTester.test(filter).and().send(input).to(filter.getInputPort()).and().receive(result).from(filter.getOutputPortForType(String.class)).start(); + assertThat(result, is(not(empty()))); assertThat(result, contains("1", "2", "3")); }