From 90194686ba8481ac648ea1f1219333419de3aeca Mon Sep 17 00:00:00 2001 From: Nelson Tavares de Sousa <stu103017@mail.uni-kiel.de> Date: Fri, 24 Jul 2015 16:34:44 +0200 Subject: [PATCH] Config terminates itself on Exception, Renamed and adopted abstract service methods --- .../framework/AbstractRunnableStage.java | 3 ++- .../teetime/framework/AbstractService.java | 10 +++++--- .../framework/ConfigurationContext.java | 2 +- .../java/teetime/framework/Execution.java | 8 +++--- .../java/teetime/framework/ThreadService.java | 25 ++++++++----------- .../AbstractExceptionListener.java | 2 +- 6 files changed, 24 insertions(+), 26 deletions(-) diff --git a/src/main/java/teetime/framework/AbstractRunnableStage.java b/src/main/java/teetime/framework/AbstractRunnableStage.java index 2d4a24b2..b280d143 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 4ac0200d..fe716ca1 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 26c73142..2f539214 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 f77dc337..f309d496 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 e87d9f08..46e2315d 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 2fa976b1..c34480fa 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); -- GitLab