Skip to content
Snippets Groups Projects
Commit b81b0638 authored by Nelson Tavares de Sousa's avatar Nelson Tavares de Sousa
Browse files

clean-up of the CompositeStage. All unneeded methods are now empty.

parent 876348e8
No related branches found
No related tags found
No related merge requests found
...@@ -15,17 +15,12 @@ ...@@ -15,17 +15,12 @@
*/ */
package teetime.framework; package teetime.framework;
import java.util.ArrayList; import java.util.LinkedList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set;
import teetime.framework.pipe.IPipeFactory;
import teetime.framework.pipe.SingleElementPipeFactory;
import teetime.framework.signal.ISignal; import teetime.framework.signal.ISignal;
import teetime.framework.validation.InvalidPortConnection; import teetime.framework.validation.InvalidPortConnection;
import teetime.util.Connection;
/** /**
* Represents a minimal stage that composes several other stages. * Represents a minimal stage that composes several other stages.
...@@ -39,114 +34,82 @@ import teetime.framework.validation.InvalidPortConnection; ...@@ -39,114 +34,82 @@ import teetime.framework.validation.InvalidPortConnection;
@Deprecated @Deprecated
public abstract class AbstractCompositeStage extends Stage { public abstract class AbstractCompositeStage extends Stage {
private static final IPipeFactory INTRA_PIPE_FACTORY = new SingleElementPipeFactory(); private final List<Connection> connections = new LinkedList<Connection>();
private final Set<Stage> containingStages = new HashSet<Stage>();
private final Set<Stage> lastStages = new HashSet<Stage>();
protected abstract Stage getFirstStage(); protected abstract Stage getFirstStage();
protected final Collection<? extends Stage> getLastStages() { protected <T> void connectPorts(final OutputPort<? extends T> out, final InputPort<T> in) {
return lastStages; connections.add(new Connection(out, in));
} }
@Override public List<Connection> getConnections() {
protected final void executeStage() { return connections;
getFirstStage().executeStage();
} }
@Override @Override
protected final void onSignal(final ISignal signal, final InputPort<?> inputPort) { public final void validateOutputPorts(final List<InvalidPortConnection> invalidPortConnections) {
getFirstStage().onSignal(signal, inputPort); throw new IllegalStateException("This method must never be called");
} }
@Override @Override
protected final TerminationStrategy getTerminationStrategy() { protected final void executeStage() {
return getFirstStage().getTerminationStrategy(); throw new IllegalStateException("This method must never be called");
} }
@Override @Override
protected final void terminate() { protected final void onSignal(final ISignal signal, final InputPort<?> inputPort) {
getFirstStage().terminate(); throw new IllegalStateException("This method must never be called");
} }
@Override @Override
protected final boolean shouldBeTerminated() { protected final TerminationStrategy getTerminationStrategy() {
return getFirstStage().shouldBeTerminated(); throw new IllegalStateException("This method must never be called");
} }
@Override @Override
protected final InputPort<?>[] getInputPorts() { protected final void terminate() {
return getFirstStage().getInputPorts(); throw new IllegalStateException("This method must never be called");
} }
@Override @Override
protected OutputPort<?>[] getOutputPorts() { protected final boolean shouldBeTerminated() {
List<OutputPort<?>> outputPorts = new ArrayList<OutputPort<?>>(); throw new IllegalStateException("This method must never be called");
for (final Stage s : getLastStages()) {
outputPorts.addAll(Arrays.asList(s.getOutputPorts()));
}
return outputPorts.toArray(new OutputPort[0]);
} }
@Override @Override
public final StageState getCurrentState() { public final StageState getCurrentState() {
return getFirstStage().getCurrentState(); throw new IllegalStateException("This method must never be called");
} }
@Override @Override
public final void validateOutputPorts(final List<InvalidPortConnection> invalidPortConnections) { protected final InputPort<?>[] getInputPorts() {
for (final Stage s : getLastStages()) { throw new IllegalStateException("This method must never be called");
s.validateOutputPorts(invalidPortConnections);
}
} }
@Override @Override
final void setOwningThread(final Thread owningThread) { protected final OutputPort<?>[] getOutputPorts() {
getFirstStage().setOwningThread(owningThread); throw new IllegalStateException("This method must never be called");
super.setOwningThread(owningThread);
}
protected <T> void connectPorts(final OutputPort<? extends T> out, final InputPort<T> in) {
INTRA_PIPE_FACTORY.create(out, in);
containingStages.add(out.getOwningStage());
containingStages.add(in.getOwningStage());
} }
@Override @Override
public final Thread getOwningThread() { public final void onValidating(final List<InvalidPortConnection> invalidPortConnections) {
return getFirstStage().getOwningThread(); throw new IllegalStateException("This method must never be called");
} }
@Override @Override
public final void onInitializing() throws Exception { public final void onInitializing() throws Exception {
getFirstStage().onInitializing(); throw new IllegalStateException("This method must never be called");
}
@Override
public final void onValidating(final List<InvalidPortConnection> invalidPortConnections) {
getFirstStage().onValidating(invalidPortConnections);
} }
@Override @Override
public final void onStarting() throws Exception { public final void onStarting() throws Exception {
for (Stage stage : containingStages) { throw new IllegalStateException("This method must never be called");
if (stage.getOutputPorts().length == 0) {
lastStages.add(stage);
break;
}
for (OutputPort<?> outputPort : stage.getOutputPorts()) {
if (!containingStages.contains(outputPort.getPipe().getTargetPort().getOwningStage())) {
lastStages.add(stage);
}
}
}
getFirstStage().onStarting();
} }
@Override @Override
public final void onTerminating() throws Exception { public final void onTerminating() throws Exception {
getFirstStage().onTerminating(); throw new IllegalStateException("This method must never be called");
} }
} }
...@@ -63,6 +63,7 @@ public abstract class AnalysisConfiguration { ...@@ -63,6 +63,7 @@ public abstract class AnalysisConfiguration {
protected void addThreadableStage(final Stage stage) { protected void addThreadableStage(final Stage stage) {
if (stage instanceof AbstractCompositeStage) { if (stage instanceof AbstractCompositeStage) {
this.threadableStageJobs.add(((AbstractCompositeStage) stage).getFirstStage()); this.threadableStageJobs.add(((AbstractCompositeStage) stage).getFirstStage());
this.connections.addAll(((AbstractCompositeStage) stage).getConnections());
} else { } else {
this.threadableStageJobs.add(stage); this.threadableStageJobs.add(stage);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment