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