Skip to content
Snippets Groups Projects
Commit 62db013f authored by Christian Wulf's avatar Christian Wulf
Browse files

Merge branch 'calledSuperOnSignal' into 'master'

Forced super calls

fixes #51

See merge request !60
parents 240a6d84 d12c6d81
No related branches found
No related tags found
No related merge requests found
...@@ -31,6 +31,8 @@ import teetime.framework.exceptionHandling.AbstractExceptionListener.FurtherExec ...@@ -31,6 +31,8 @@ import teetime.framework.exceptionHandling.AbstractExceptionListener.FurtherExec
import teetime.framework.exceptionHandling.TerminateException; import teetime.framework.exceptionHandling.TerminateException;
import teetime.framework.pipe.IPipe; import teetime.framework.pipe.IPipe;
import teetime.framework.signal.ISignal; import teetime.framework.signal.ISignal;
import teetime.framework.signal.StartingSignal;
import teetime.framework.signal.TerminatingSignal;
import teetime.framework.validation.InvalidPortConnection; import teetime.framework.validation.InvalidPortConnection;
import teetime.util.framework.port.PortList; import teetime.util.framework.port.PortList;
import teetime.util.framework.port.PortRemovedListener; import teetime.util.framework.port.PortRemovedListener;
...@@ -180,6 +182,10 @@ public abstract class AbstractStage { ...@@ -180,6 +182,10 @@ public abstract class AbstractStage {
private final PortList<InputPort<?>> inputPorts = new PortList<InputPort<?>>(); private final PortList<InputPort<?>> inputPorts = new PortList<InputPort<?>>();
private final PortList<OutputPort<?>> outputPorts = new PortList<OutputPort<?>>(); private final PortList<OutputPort<?>> outputPorts = new PortList<OutputPort<?>>();
private boolean calledOnTerminating = false;
private boolean calledOnStarting = false;
private volatile StageState currentState = StageState.CREATED; private volatile StageState currentState = StageState.CREATED;
protected List<InputPort<?>> getInputPorts() { protected List<InputPort<?>> getInputPorts() {
...@@ -216,6 +222,16 @@ public abstract class AbstractStage { ...@@ -216,6 +222,16 @@ public abstract class AbstractStage {
if (signal.mayBeTriggered(signalReceivedInputPorts, getInputPorts())) { if (signal.mayBeTriggered(signalReceivedInputPorts, getInputPorts())) {
try { try {
signal.trigger(this); signal.trigger(this);
if (signal instanceof StartingSignal) {
if (!calledOnStarting) {
throw new SuperNotCalledException("The super method onStarting was not called in " + this.getId());
}
}
if (signal instanceof TerminatingSignal) {
if (!calledOnTerminating) {
throw new SuperNotCalledException("The super method onTerminating was not called in " + this.getId());
}
}
} catch (Exception e) { } catch (Exception e) {
this.getOwningContext().abortConfigurationRun(); this.getOwningContext().abortConfigurationRun();
} }
...@@ -248,7 +264,7 @@ public abstract class AbstractStage { ...@@ -248,7 +264,7 @@ public abstract class AbstractStage {
return signalAlreadyReceived; return signalAlreadyReceived;
} }
private void changeState(final StageState newState) { void changeState(final StageState newState) {
currentState = newState; currentState = newState;
if (logger.isTraceEnabled()) { if (logger.isTraceEnabled()) {
logger.trace(newState.toString()); logger.trace(newState.toString());
...@@ -270,11 +286,13 @@ public abstract class AbstractStage { ...@@ -270,11 +286,13 @@ public abstract class AbstractStage {
@SuppressWarnings("PMD.SignatureDeclareThrowsException") @SuppressWarnings("PMD.SignatureDeclareThrowsException")
public void onStarting() throws Exception { public void onStarting() throws Exception {
changeState(StageState.STARTED); changeState(StageState.STARTED);
calledOnStarting = true;
} }
@SuppressWarnings("PMD.SignatureDeclareThrowsException") @SuppressWarnings("PMD.SignatureDeclareThrowsException")
public void onTerminating() throws Exception { public void onTerminating() throws Exception {
changeState(StageState.TERMINATED); changeState(StageState.TERMINATED);
calledOnTerminating = true;
} }
/** /**
......
package teetime.framework;
public class SuperNotCalledException extends RuntimeException {
/**
*
*/
private static final long serialVersionUID = 1328934037128066070L;
SuperNotCalledException(final String string) {
super(string);
}
}
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