From 416fb942088c2918e2f0ff16d0840bcf1ff92c4b Mon Sep 17 00:00:00 2001 From: Nelson Tavares de Sousa <stu103017@mail.uni-kiel.de> Date: Thu, 18 Jun 2015 17:20:24 +0200 Subject: [PATCH] stages without InputPorts are now automatically added to the threadableStages list --- .../teetime/framework/AnalysisContext.java | 3 ++ .../java/teetime/framework/AnalysisTest.java | 29 +++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/src/main/java/teetime/framework/AnalysisContext.java b/src/main/java/teetime/framework/AnalysisContext.java index 67348213..5c763367 100644 --- a/src/main/java/teetime/framework/AnalysisContext.java +++ b/src/main/java/teetime/framework/AnalysisContext.java @@ -192,6 +192,9 @@ public abstract class AnalysisContext extends Network { */ @Override protected final <T> void connectPorts(final OutputPort<? extends T> sourcePort, final InputPort<T> targetPort, final int capacity) { + if (sourcePort.getOwningStage().getInputPorts().length == 0) { + addThreadableStage(sourcePort.getOwningStage()); + } new InstantiationPipe(sourcePort, targetPort, capacity); } diff --git a/src/test/java/teetime/framework/AnalysisTest.java b/src/test/java/teetime/framework/AnalysisTest.java index fd15835d..a77c101a 100644 --- a/src/test/java/teetime/framework/AnalysisTest.java +++ b/src/test/java/teetime/framework/AnalysisTest.java @@ -150,4 +150,33 @@ public class AnalysisTest { } } + @Test + public void automaticallyAddHeadStages() { + AutomaticallyConfig context = new AutomaticallyConfig(); + new Analysis<AnalysisContext>(context).executeBlocking(); + assertTrue(context.executed); + } + + private class AutomaticallyConfig extends AnalysisContext { + + public boolean executed; + + public AutomaticallyConfig() { + AutomaticallyAddedStage aas = new AutomaticallyAddedStage(); + Sink<Object> sink = new Sink<Object>(); + connectPorts(aas.getOutputPort(), sink.getInputPort()); + } + + private class AutomaticallyAddedStage extends AbstractProducerStage<Object> { + + @Override + protected void execute() { + executed = true; + terminate(); + } + + } + + } + } -- GitLab