From b5d2c03e1521c89266984551719a2e4a70c0853f Mon Sep 17 00:00:00 2001
From: Nelson Tavares de Sousa <stu103017@mail.uni-kiel.de>
Date: Tue, 5 May 2015 16:52:43 +0200
Subject: [PATCH] moved initializing

---
 src/main/java/teetime/framework/Analysis.java  | 18 ++++++++----------
 .../framework/RunnableProducerStage.java       |  3 ---
 2 files changed, 8 insertions(+), 13 deletions(-)

diff --git a/src/main/java/teetime/framework/Analysis.java b/src/main/java/teetime/framework/Analysis.java
index a0c78ef9..f1ca4827 100644
--- a/src/main/java/teetime/framework/Analysis.java
+++ b/src/main/java/teetime/framework/Analysis.java
@@ -28,6 +28,7 @@ import org.slf4j.LoggerFactory;
 import teetime.framework.exceptionHandling.AbstractExceptionListener;
 import teetime.framework.exceptionHandling.IExceptionListenerFactory;
 import teetime.framework.exceptionHandling.IgnoringExceptionListenerFactory;
+import teetime.framework.signal.InitializingSignal;
 import teetime.framework.signal.ValidatingSignal;
 import teetime.framework.validation.AnalysisNotValidException;
 import teetime.util.Pair;
@@ -142,22 +143,24 @@ public final class Analysis<T extends AnalysisConfiguration> implements Uncaught
 				final RunnableProducerStage runnable = new RunnableProducerStage(stage);
 				thread = createThread(runnable, stage.getId());
 				this.finiteProducerThreads.add(thread);
+				InitializingSignal initializingSignal = new InitializingSignal();
+				stage.onSignal(initializingSignal, null);
 				break;
 			}
 			case BY_INTERRUPT: {
 				final RunnableProducerStage runnable = new RunnableProducerStage(stage);
 				thread = createThread(runnable, stage.getId());
+				InitializingSignal initializingSignal = new InitializingSignal();
+				stage.onSignal(initializingSignal, null);
 				this.infiniteProducerThreads.add(thread);
 				break;
 			}
 			default:
 				throw new IllegalStateException("Unhandled termination strategy: " + terminationStrategy);
 			}
-
-			// FIXME: remove, if this solves the #151 bug
-			// final Set<Stage> intraStages = traverseIntraStages(stage);
-			// final AbstractExceptionListener newListener = factory.createInstance();
-			// initializeIntraStages(intraStages, thread, newListener);
+			final Set<Stage> intraStages = traverseIntraStages(stage);
+			final AbstractExceptionListener newListener = factory.createInstance();
+			initializeIntraStages(intraStages, thread, newListener);
 		}
 
 	}
@@ -173,11 +176,6 @@ public final class Analysis<T extends AnalysisConfiguration> implements Uncaught
 		for (Stage intraStage : intraStages) {
 			intraStage.setOwningThread(thread);
 			intraStage.setExceptionHandler(newListener);
-			try {
-				intraStage.onInitializing();
-			} catch (Exception e) { // NOPMD(generic framework catch)
-				throw new IllegalStateException("The following exception occurs within initializing the analysis:", e);
-			}
 		}
 	}
 
diff --git a/src/main/java/teetime/framework/RunnableProducerStage.java b/src/main/java/teetime/framework/RunnableProducerStage.java
index a9f2c9a4..2b7b556a 100644
--- a/src/main/java/teetime/framework/RunnableProducerStage.java
+++ b/src/main/java/teetime/framework/RunnableProducerStage.java
@@ -15,7 +15,6 @@
  */
 package teetime.framework;
 
-import teetime.framework.signal.InitializingSignal;
 import teetime.framework.signal.StartingSignal;
 import teetime.framework.signal.TerminatingSignal;
 
@@ -27,8 +26,6 @@ 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);
 	}
-- 
GitLab