From b8dd46cf38fe10108aed0f8318870143160665fa Mon Sep 17 00:00:00 2001 From: Nelson Tavares de Sousa <stu103017@mail.uni-kiel.de> Date: Wed, 10 Jun 2015 15:53:17 +0200 Subject: [PATCH] the CompositeStage now extends AnalysisConfiguration --- .../framework/AbstractCompositeStage.java | 84 +------------------ .../framework/AnalysisConfiguration.java | 19 +++-- 2 files changed, 12 insertions(+), 91 deletions(-) diff --git a/src/main/java/teetime/framework/AbstractCompositeStage.java b/src/main/java/teetime/framework/AbstractCompositeStage.java index 4a62b36f..3532a8b4 100644 --- a/src/main/java/teetime/framework/AbstractCompositeStage.java +++ b/src/main/java/teetime/framework/AbstractCompositeStage.java @@ -15,12 +15,6 @@ */ package teetime.framework; -import java.util.LinkedList; -import java.util.List; - -import teetime.framework.signal.ISignal; -import teetime.framework.validation.InvalidPortConnection; -import teetime.util.Connection; /** * Represents a minimal stage that composes several other stages. @@ -32,84 +26,8 @@ import teetime.util.Connection; * */ @Deprecated -public abstract class AbstractCompositeStage extends Stage { - - private final List<Connection> connections = new LinkedList<Connection>(); +public abstract class AbstractCompositeStage extends AnalysisConfiguration { protected abstract Stage getFirstStage(); - protected <T> void connectPorts(final OutputPort<? extends T> out, final InputPort<T> in) { - connections.add(new Connection(out, in)); - } - - public List<Connection> getConnections() { - return connections; - } - - @Override - public final void validateOutputPorts(final List<InvalidPortConnection> invalidPortConnections) { - throw new IllegalStateException("This method must never be called"); - - } - - @Override - protected final void executeStage() { - throw new IllegalStateException("This method must never be called"); - } - - @Override - protected final void onSignal(final ISignal signal, final InputPort<?> inputPort) { - throw new IllegalStateException("This method must never be called"); - } - - @Override - protected final TerminationStrategy getTerminationStrategy() { - throw new IllegalStateException("This method must never be called"); - } - - @Override - protected final void terminate() { - throw new IllegalStateException("This method must never be called"); - } - - @Override - protected final boolean shouldBeTerminated() { - throw new IllegalStateException("This method must never be called"); - } - - @Override - public final StageState getCurrentState() { - throw new IllegalStateException("This method must never be called"); - } - - @Override - protected final InputPort<?>[] getInputPorts() { - throw new IllegalStateException("This method must never be called"); - } - - @Override - protected final OutputPort<?>[] getOutputPorts() { - throw new IllegalStateException("This method must never be called"); - } - - @Override - public final void onValidating(final List<InvalidPortConnection> invalidPortConnections) { - throw new IllegalStateException("This method must never be called"); - } - - @Override - public final void onInitializing() throws Exception { - throw new IllegalStateException("This method must never be called"); - } - - @Override - public final void onStarting() throws Exception { - throw new IllegalStateException("This method must never be called"); - } - - @Override - public final void onTerminating() throws Exception { - throw new IllegalStateException("This method must never be called"); - } - } diff --git a/src/main/java/teetime/framework/AnalysisConfiguration.java b/src/main/java/teetime/framework/AnalysisConfiguration.java index 24f9bd19..c32f2a29 100644 --- a/src/main/java/teetime/framework/AnalysisConfiguration.java +++ b/src/main/java/teetime/framework/AnalysisConfiguration.java @@ -32,7 +32,7 @@ import teetime.util.Connection; public abstract class AnalysisConfiguration { private final List<Stage> threadableStageJobs = new LinkedList<Stage>(); - private final List<Connection> connections = new LinkedList<Connection>(); + private final List<Connection<?>> connections = new LinkedList<Connection<?>>(); @SuppressWarnings("deprecation") private static final PipeFactoryRegistry PIPE_FACTORY_REGISTRY = PipeFactoryRegistry.INSTANCE; @@ -61,11 +61,14 @@ public abstract class AnalysisConfiguration { * A arbitrary stage, which will be added to the configuration and executed in a thread. */ protected void addThreadableStage(final Stage stage) { - if (stage instanceof AbstractCompositeStage) { - this.threadableStageJobs.add(((AbstractCompositeStage) stage).getFirstStage()); - this.connections.addAll(((AbstractCompositeStage) stage).getConnections()); - } else { - this.threadableStageJobs.add(stage); + this.threadableStageJobs.add(stage); + } + + protected void addThreadableStage(final AbstractCompositeStage stage) { + this.threadableStageJobs.add(stage.getFirstStage()); + this.connections.addAll(stage.getConnections()); + for (Stage threadableStage : stage.getThreadableStageJobs()) { + this.addThreadableStage(threadableStage); } } @@ -169,7 +172,7 @@ public abstract class AnalysisConfiguration { * the pipe is set to this capacity, if the value is greater than 0. If it is 0, than the pipe is unbounded, thus growing of the pipe is enabled. */ protected <T> void connectPorts(final OutputPort<? extends T> sourcePort, final InputPort<T> targetPort, final int capacity) { - connections.add(new Connection(sourcePort, targetPort, capacity)); + connections.add(new Connection<T>(sourcePort, targetPort, capacity)); } /** @@ -177,7 +180,7 @@ public abstract class AnalysisConfiguration { * * @return a list of pairs of Out- and InputPorts, which are connected */ - protected List<Connection> getConnections() { + protected List<Connection<?>> getConnections() { return connections; } -- GitLab