From 843c3511b6abbe91779d01c7c04b842ee29c8f2c Mon Sep 17 00:00:00 2001
From: Nelson Tavares de Sousa <ntd@informatik.uni-kiel.de>
Date: Fri, 6 Feb 2015 12:16:52 +0100
Subject: [PATCH] instead of passing a instance -> pass a StageExceptionHandler
 Class (type check possible)

---
 src/main/java/teetime/framework/Analysis.java        | 12 ++++++------
 .../java/teetime/framework/ExceptionHandling.java    |  4 ++--
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/main/java/teetime/framework/Analysis.java b/src/main/java/teetime/framework/Analysis.java
index 84a8d6f4..22d83a56 100644
--- a/src/main/java/teetime/framework/Analysis.java
+++ b/src/main/java/teetime/framework/Analysis.java
@@ -28,7 +28,7 @@ public class Analysis implements UncaughtExceptionHandler {
 
 	private final AnalysisConfiguration configuration;
 
-	private final StageExceptionHandler listener;
+	private final Class<? extends teetime.framework.exceptionHandling.StageExceptionHandler> listener;
 
 	private boolean executionInterrupted = false;
 
@@ -47,11 +47,11 @@ public class Analysis implements UncaughtExceptionHandler {
 	 *            to be used for the analysis
 	 */
 	public Analysis(final AnalysisConfiguration configuration) {
-		this(configuration, false, new IgnoringStageListener());
+		this(configuration, false, IgnoringStageListener.class);
 	}
 
 	public Analysis(final AnalysisConfiguration configuration, final boolean validationEnabled) {
-		this(configuration, validationEnabled, new IgnoringStageListener());
+		this(configuration, validationEnabled, IgnoringStageListener.class);
 	}
 
 	/**
@@ -62,11 +62,11 @@ public class Analysis implements UncaughtExceptionHandler {
 	 * @param listener
 	 *            specific listener for the exception handling
 	 */
-	public Analysis(final AnalysisConfiguration configuration, final StageExceptionHandler listener) {
+	public Analysis(final AnalysisConfiguration configuration, final Class<? extends StageExceptionHandler> listener) {
 		this(configuration, false, listener);
 	}
 
-	public Analysis(final AnalysisConfiguration configuration, final boolean validationEnabled, final StageExceptionHandler listener) {
+	public Analysis(final AnalysisConfiguration configuration, final boolean validationEnabled, final Class<? extends StageExceptionHandler> listener) {
 		this.configuration = configuration;
 		this.listener = listener;
 		if (validationEnabled) {
@@ -106,7 +106,7 @@ public class Analysis implements UncaughtExceptionHandler {
 		for (Stage stage : threadableStageJobs) {
 			StageExceptionHandler newListener;
 			try {
-				newListener = listener.getClass().newInstance();
+				newListener = listener.newInstance();
 			} catch (InstantiationException e) {
 				throw new IllegalStateException(e);
 			} catch (IllegalAccessException e) {
diff --git a/src/test/java/teetime/framework/ExceptionHandling.java b/src/test/java/teetime/framework/ExceptionHandling.java
index a0e81a17..4029d695 100644
--- a/src/test/java/teetime/framework/ExceptionHandling.java
+++ b/src/test/java/teetime/framework/ExceptionHandling.java
@@ -10,12 +10,12 @@ import teetime.framework.exceptionHandling.TestListener;
 
 public class ExceptionHandling {
 
-	TestListener listener;
+	Class<TestListener> listener;
 	Analysis analysis;
 
 	@Before
 	public void newInstances() {
-		listener = new TestListener();
+		listener = TestListener.class;
 		analysis = new Analysis(new ExceptionTestConfiguration(), listener);
 	}
 
-- 
GitLab