From cb02279a4c81d89991451e2c34267f2e620fd380 Mon Sep 17 00:00:00 2001 From: Nelson Tavares de Sousa <stu103017@mail.uni-kiel.de> Date: Tue, 5 May 2015 15:59:04 +0200 Subject: [PATCH] Added InitializingSignal and adopted the framework --- src/main/java/teetime/framework/Analysis.java | 7 +-- .../framework/RunnableProducerStage.java | 3 ++ .../framework/signal/InitializingSignal.java | 47 +++++++++++++++++++ src/site/markdown/wiki | 2 +- 4 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 src/main/java/teetime/framework/signal/InitializingSignal.java diff --git a/src/main/java/teetime/framework/Analysis.java b/src/main/java/teetime/framework/Analysis.java index 20b9a4fe..a0c78ef9 100644 --- a/src/main/java/teetime/framework/Analysis.java +++ b/src/main/java/teetime/framework/Analysis.java @@ -154,9 +154,10 @@ public final class Analysis<T extends AnalysisConfiguration> implements Uncaught throw new IllegalStateException("Unhandled termination strategy: " + terminationStrategy); } - final Set<Stage> intraStages = traverseIntraStages(stage); - final AbstractExceptionListener newListener = factory.createInstance(); - initializeIntraStages(intraStages, thread, newListener); + // FIXME: remove, if this solves the #151 bug + // final Set<Stage> intraStages = traverseIntraStages(stage); + // final AbstractExceptionListener newListener = factory.createInstance(); + // initializeIntraStages(intraStages, thread, newListener); } } diff --git a/src/main/java/teetime/framework/RunnableProducerStage.java b/src/main/java/teetime/framework/RunnableProducerStage.java index 2b7b556a..a9f2c9a4 100644 --- a/src/main/java/teetime/framework/RunnableProducerStage.java +++ b/src/main/java/teetime/framework/RunnableProducerStage.java @@ -15,6 +15,7 @@ */ package teetime.framework; +import teetime.framework.signal.InitializingSignal; import teetime.framework.signal.StartingSignal; import teetime.framework.signal.TerminatingSignal; @@ -26,6 +27,8 @@ public final class RunnableProducerStage extends AbstractRunnableStage { @Override protected void beforeStageExecution(final Stage stage) { + InitializingSignal initializingSignal = new InitializingSignal(); + stage.onSignal(initializingSignal, null); final StartingSignal startingSignal = new StartingSignal(); stage.onSignal(startingSignal, null); } diff --git a/src/main/java/teetime/framework/signal/InitializingSignal.java b/src/main/java/teetime/framework/signal/InitializingSignal.java new file mode 100644 index 00000000..bb631edc --- /dev/null +++ b/src/main/java/teetime/framework/signal/InitializingSignal.java @@ -0,0 +1,47 @@ +/** + * Copyright (C) 2015 Christian Wulf, Nelson Tavares de Sousa (http://teetime.sourceforge.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package teetime.framework.signal; + +import java.util.LinkedList; +import java.util.List; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import teetime.framework.Stage; + +public final class InitializingSignal implements ISignal { + + private static final Logger LOGGER = LoggerFactory.getLogger(StartingSignal.class); + private final List<Exception> catchedExceptions = new LinkedList<Exception>(); + + public InitializingSignal() {} + + @Override + public void trigger(final Stage stage) { + try { + stage.onInitializing(); + } catch (Exception e) { // NOCS (Stages can throw any arbitrary Exception) + this.catchedExceptions.add(e); + LOGGER.error("Exception while sending the start signal", e); + } + } + + public List<Exception> getCatchedExceptions() { + return this.catchedExceptions; + } + +} diff --git a/src/site/markdown/wiki b/src/site/markdown/wiki index 0e447457..bb53dfd7 160000 --- a/src/site/markdown/wiki +++ b/src/site/markdown/wiki @@ -1 +1 @@ -Subproject commit 0e4474577e1f49bc96e734c286b2d9e0363895e8 +Subproject commit bb53dfd7de974a433a7b96b0b65f4aacb8da3df3 -- GitLab