From 1f6379a3c5ad6be1abb87307495ead1bcdb3e342 Mon Sep 17 00:00:00 2001
From: Nelson Tavares de Sousa <ntd@informatik.uni-kiel.de>
Date: Wed, 28 Jan 2015 11:23:33 +0100
Subject: [PATCH] moved related classes to own package; first prototype

---
 .../java/teetime/framework/AbstractConsumerStage.java     | 7 ++++++-
 .../java/teetime/framework/AbstractProducerStage.java     | 8 +++++++-
 src/main/java/teetime/framework/RunnableStage.java        | 8 +++++++-
 .../framework/{ => exceptionHandling}/StageException.java | 6 ++++--
 .../{ => exceptionHandling}/StageExceptionListener.java   | 4 +++-
 5 files changed, 27 insertions(+), 6 deletions(-)
 rename src/main/java/teetime/framework/{ => exceptionHandling}/StageException.java (84%)
 rename src/main/java/teetime/framework/{ => exceptionHandling}/StageExceptionListener.java (90%)

diff --git a/src/main/java/teetime/framework/AbstractConsumerStage.java b/src/main/java/teetime/framework/AbstractConsumerStage.java
index 1cc3bdb0..88605f5c 100644
--- a/src/main/java/teetime/framework/AbstractConsumerStage.java
+++ b/src/main/java/teetime/framework/AbstractConsumerStage.java
@@ -1,5 +1,6 @@
 package teetime.framework;
 
+import teetime.framework.exceptionHandling.StageException;
 import teetime.framework.idle.IdleStrategy;
 import teetime.framework.idle.YieldStrategy;
 
@@ -20,7 +21,11 @@ public abstract class AbstractConsumerStage<I> extends AbstractStage {
 			returnNoElement();
 		}
 
-		this.execute(element);
+		try {
+			this.execute(element);
+		} catch (Exception e) {
+			throw new StageException(e, this);
+		}
 	}
 
 	protected abstract void execute(I element);
diff --git a/src/main/java/teetime/framework/AbstractProducerStage.java b/src/main/java/teetime/framework/AbstractProducerStage.java
index e34f6705..2e22460f 100644
--- a/src/main/java/teetime/framework/AbstractProducerStage.java
+++ b/src/main/java/teetime/framework/AbstractProducerStage.java
@@ -1,5 +1,7 @@
 package teetime.framework;
 
+import teetime.framework.exceptionHandling.StageException;
+
 /**
  * The <code>ProducerStage</code> produces at least one element at each execution.<br>
  *
@@ -19,7 +21,11 @@ public abstract class AbstractProducerStage<O> extends AbstractStage {
 
 	@Override
 	public void executeWithPorts() {
-		this.execute();
+		try {
+			this.execute();
+		} catch (Exception e) {
+			throw new StageException(e, this);
+		}
 	}
 
 	@Override
diff --git a/src/main/java/teetime/framework/RunnableStage.java b/src/main/java/teetime/framework/RunnableStage.java
index b79b8d2d..ed98055c 100644
--- a/src/main/java/teetime/framework/RunnableStage.java
+++ b/src/main/java/teetime/framework/RunnableStage.java
@@ -3,6 +3,8 @@ package teetime.framework;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import teetime.framework.exceptionHandling.StageException;
+
 abstract class RunnableStage implements Runnable {
 
 	protected final Stage stage;
@@ -22,7 +24,11 @@ abstract class RunnableStage implements Runnable {
 			beforeStageExecution();
 
 			do {
-				executeStage();
+				try {
+					executeStage();
+				} catch (StageException e) {
+					// TODO: handle exception
+				}
 			} while (!this.stage.shouldBeTerminated());
 
 			afterStageExecution();
diff --git a/src/main/java/teetime/framework/StageException.java b/src/main/java/teetime/framework/exceptionHandling/StageException.java
similarity index 84%
rename from src/main/java/teetime/framework/StageException.java
rename to src/main/java/teetime/framework/exceptionHandling/StageException.java
index 3f6c2b25..9c8ac69a 100644
--- a/src/main/java/teetime/framework/StageException.java
+++ b/src/main/java/teetime/framework/exceptionHandling/StageException.java
@@ -1,10 +1,12 @@
-package teetime.framework;
+package teetime.framework.exceptionHandling;
+
+import teetime.framework.Stage;
 
 /**
  * Represents an Exception, which is thrown by stages, if uncatched exceptions are thrown.
  *
  */
-public class StageException extends Exception {
+public class StageException extends RuntimeException {
 
 	/**
 	 * Generated UID
diff --git a/src/main/java/teetime/framework/StageExceptionListener.java b/src/main/java/teetime/framework/exceptionHandling/StageExceptionListener.java
similarity index 90%
rename from src/main/java/teetime/framework/StageExceptionListener.java
rename to src/main/java/teetime/framework/exceptionHandling/StageExceptionListener.java
index 5d43088d..f5ebc5d3 100644
--- a/src/main/java/teetime/framework/StageExceptionListener.java
+++ b/src/main/java/teetime/framework/exceptionHandling/StageExceptionListener.java
@@ -1,4 +1,6 @@
-package teetime.framework;
+package teetime.framework.exceptionHandling;
+
+import teetime.framework.Stage;
 
 /**
  * Represent a minimalistic StageExceptionListener. Listener which extend from this one, must a least implement this functionality.
-- 
GitLab