From f998bce462607c8929ed207d0a0af36fead00861 Mon Sep 17 00:00:00 2001
From: Nelson Tavares de Sousa <ntd@informatik.uni-kiel.de>
Date: Fri, 30 Jan 2015 14:19:53 +0100
Subject: [PATCH] true kill the thread from now on; Added implementations for
 different listeners

---
 src/main/java/teetime/framework/RunnableStage.java  |  2 +-
 .../exceptionHandling/IgnoringStageListener.java    |  3 +--
 .../exceptionHandling/LoggingStageListener.java     | 13 +++++++++++++
 .../exceptionHandling/StageExceptionListener.java   |  2 +-
 .../exceptionHandling/TerminatingStageListener.java | 13 +++++++++++++
 5 files changed, 29 insertions(+), 4 deletions(-)
 create mode 100644 src/main/java/teetime/framework/exceptionHandling/LoggingStageListener.java
 create mode 100644 src/main/java/teetime/framework/exceptionHandling/TerminatingStageListener.java

diff --git a/src/main/java/teetime/framework/RunnableStage.java b/src/main/java/teetime/framework/RunnableStage.java
index 3acf6db5..4489bc2d 100644
--- a/src/main/java/teetime/framework/RunnableStage.java
+++ b/src/main/java/teetime/framework/RunnableStage.java
@@ -30,7 +30,7 @@ abstract class RunnableStage implements Runnable {
 				try {
 					executeStage();
 				} catch (StageException e) {
-					if (!this.listener.onStageException(e, e.getThrowingStage())) {
+					if (this.listener.onStageException(e, e.getThrowingStage())) {
 						this.stage.terminate();
 					}
 				}
diff --git a/src/main/java/teetime/framework/exceptionHandling/IgnoringStageListener.java b/src/main/java/teetime/framework/exceptionHandling/IgnoringStageListener.java
index c8541006..4aa1feda 100644
--- a/src/main/java/teetime/framework/exceptionHandling/IgnoringStageListener.java
+++ b/src/main/java/teetime/framework/exceptionHandling/IgnoringStageListener.java
@@ -6,11 +6,10 @@ public class IgnoringStageListener extends StageExceptionListener {
 
 	public IgnoringStageListener() {
 		super();
-		// TODO Auto-generated constructor stub
 	}
 
 	@Override
 	public boolean onStageException(final Exception e, final Stage throwingStage) {
-		return true;
+		return false;
 	}
 }
diff --git a/src/main/java/teetime/framework/exceptionHandling/LoggingStageListener.java b/src/main/java/teetime/framework/exceptionHandling/LoggingStageListener.java
new file mode 100644
index 00000000..9b1adaa9
--- /dev/null
+++ b/src/main/java/teetime/framework/exceptionHandling/LoggingStageListener.java
@@ -0,0 +1,13 @@
+package teetime.framework.exceptionHandling;
+
+import teetime.framework.Stage;
+
+public class LoggingStageListener extends StageExceptionListener {
+
+	@Override
+	public boolean onStageException(final Exception e, final Stage throwingStage) {
+		logger.warn("Exception arised from" + throwingStage.getId(), e);
+		return false;
+	}
+
+}
diff --git a/src/main/java/teetime/framework/exceptionHandling/StageExceptionListener.java b/src/main/java/teetime/framework/exceptionHandling/StageExceptionListener.java
index 81e0fd78..671d9a37 100644
--- a/src/main/java/teetime/framework/exceptionHandling/StageExceptionListener.java
+++ b/src/main/java/teetime/framework/exceptionHandling/StageExceptionListener.java
@@ -28,7 +28,7 @@ public abstract class StageExceptionListener {
 	 * @param throwingStage
 	 *            the stage, which has thrown the exception.
 	 * @return
-	 *         true, if the thread can continue with execution or false, if thread should be terminated
+	 *         true, if the thread should be terminated, false otherwise
 	 */
 	public abstract boolean onStageException(Exception e, Stage throwingStage);
 
diff --git a/src/main/java/teetime/framework/exceptionHandling/TerminatingStageListener.java b/src/main/java/teetime/framework/exceptionHandling/TerminatingStageListener.java
new file mode 100644
index 00000000..a174fe88
--- /dev/null
+++ b/src/main/java/teetime/framework/exceptionHandling/TerminatingStageListener.java
@@ -0,0 +1,13 @@
+package teetime.framework.exceptionHandling;
+
+import teetime.framework.Stage;
+
+public class TerminatingStageListener extends StageExceptionListener {
+
+	@Override
+	public boolean onStageException(final Exception e, final Stage throwingStage) {
+		logger.warn("Exception arised from" + throwingStage.getId(), e);
+		return true;
+	}
+
+}
-- 
GitLab