diff --git a/src/main/java/teetime/framework/AbstractRunnableStage.java b/src/main/java/teetime/framework/AbstractRunnableStage.java index 2d4a24b2dab47abca571f1723b5d26ea8217cd75..b280d14395fc3e56ab0d2082e79dd722360fe8c0 100644 --- a/src/main/java/teetime/framework/AbstractRunnableStage.java +++ b/src/main/java/teetime/framework/AbstractRunnableStage.java @@ -50,7 +50,8 @@ abstract class AbstractRunnableStage implements Runnable { } while (!stage.shouldBeTerminated()); } catch (TerminateException e) { this.stage.terminate(); - throw e; + stage.owningContext.getRuntimeService().onTerminate(); + throw e; // FIXME: Still needed? } finally { afterStageExecution(); } diff --git a/src/main/java/teetime/framework/AbstractService.java b/src/main/java/teetime/framework/AbstractService.java index 4ac0200dab222c9ef0ea8a45e7edcaa33e5dd57a..fe716ca116f4b3dbb2e444b8259616b494c5ee9e 100644 --- a/src/main/java/teetime/framework/AbstractService.java +++ b/src/main/java/teetime/framework/AbstractService.java @@ -12,13 +12,15 @@ package teetime.framework; */ public abstract class AbstractService<T> { - abstract void initialize(); + abstract void onInitialize(); - abstract void start(); + abstract void onStart(); - abstract void terminate(); + abstract void onExecute(); - abstract void finish(); + abstract void onTerminate(); + + abstract void onFinish(); abstract void merge(T source); diff --git a/src/main/java/teetime/framework/ConfigurationContext.java b/src/main/java/teetime/framework/ConfigurationContext.java index 26c731426eece5ed203c8ed89267aa9bd8aa7249..2f5392142c52ff3ccb706eaa603de0e851d49be9 100644 --- a/src/main/java/teetime/framework/ConfigurationContext.java +++ b/src/main/java/teetime/framework/ConfigurationContext.java @@ -98,7 +98,7 @@ final class ConfigurationContext { } final void initializeServices() { - runtimeService.initialize(); + runtimeService.onInitialize(); } private void mergeContexts(final ConfigurationContext child) { diff --git a/src/main/java/teetime/framework/Execution.java b/src/main/java/teetime/framework/Execution.java index f77dc3375e8a02354ca22bce1f1330bfa1c4d312..f309d4966ffd5f52c77757ff5438643ee5692370 100644 --- a/src/main/java/teetime/framework/Execution.java +++ b/src/main/java/teetime/framework/Execution.java @@ -113,14 +113,12 @@ public final class Execution<T extends Configuration> { * @since 2.0 */ public void waitForTermination() { - getConfiguration().getContext().getRuntimeService().waitForTermination(); + getConfiguration().getContext().getRuntimeService().onFinish(); } // TODO: implement private void abortEventually() { - for (Stage stage : configuration.getContext().getThreadableStages().keySet()) { - stage.terminate(); - } + getConfiguration().getContext().getRuntimeService().onTerminate(); waitForTermination(); } @@ -144,7 +142,7 @@ public final class Execution<T extends Configuration> { * @since 2.0 */ public void executeNonBlocking() { - configuration.getContext().getRuntimeService().executeNonBlocking(); + configuration.getContext().getRuntimeService().onExecute(); } /** diff --git a/src/main/java/teetime/framework/ThreadService.java b/src/main/java/teetime/framework/ThreadService.java index e87d9f082211b1aeb6faecfb9d445c734470ad53..46e2315dfe52e0d03e97b467626c50d446d94f5a 100644 --- a/src/main/java/teetime/framework/ThreadService.java +++ b/src/main/java/teetime/framework/ThreadService.java @@ -52,7 +52,7 @@ class ThreadService extends AbstractService<ThreadService> { private final List<RunnableProducerStage> producerRunnables = new LinkedList<RunnableProducerStage>(); @Override - void initialize() { + void onInitialize() { IExceptionListenerFactory factory; try { factory = ((Configuration) compositeStage).getFactory(); @@ -72,7 +72,7 @@ class ThreadService extends AbstractService<ThreadService> { initializeIntraStages(intraStages, thread, newListener); } - start(); + onStart(); } private void initializeIntraStages(final Set<Stage> intraStages, final Thread thread, final AbstractExceptionListener newListener) { @@ -135,7 +135,8 @@ class ThreadService extends AbstractService<ThreadService> { } } - void waitForTermination() { + @Override + void onFinish() { try { runnableCounter.waitFor(0); @@ -169,12 +170,13 @@ class ThreadService extends AbstractService<ThreadService> { } } - void executeNonBlocking() { + @Override + void onExecute() { sendStartingSignal(); } @Override - void start() { + void onStart() { startThreads(this.consumerThreads); startThreads(this.finiteProducerThreads); startThreads(this.infiniteProducerThreads); @@ -215,15 +217,10 @@ class ThreadService extends AbstractService<ThreadService> { } @Override - void terminate() { - // TODO Auto-generated method stub - - } - - @Override - void finish() { - // TODO Auto-generated method stub - + void onTerminate() { + for (Stage stage : threadableStages.keySet()) { + stage.terminate(); + } } } diff --git a/src/main/java/teetime/framework/exceptionHandling/AbstractExceptionListener.java b/src/main/java/teetime/framework/exceptionHandling/AbstractExceptionListener.java index 2fa976b1e3117d97c06bd303483f99d6a3d64192..c34480fa78fa3f8643af4d52e01804a825272683 100644 --- a/src/main/java/teetime/framework/exceptionHandling/AbstractExceptionListener.java +++ b/src/main/java/teetime/framework/exceptionHandling/AbstractExceptionListener.java @@ -48,7 +48,7 @@ public abstract class AbstractExceptionListener { * @param throwingStage * the stage, which has thrown the exception. * @return - * true, if the thread should be terminated, false otherwise + * true, if the thread should be terminated, false otherwise */ public abstract FurtherExecution onStageException(Exception e, Stage throwingStage);