From 469105fcdfc6ba99ec9f046ffdf3dc25e53de260 Mon Sep 17 00:00:00 2001
From: Nelson Tavares de Sousa <stu103017@mail.uni-kiel.de>
Date: Tue, 25 Aug 2015 16:24:20 +0200
Subject: [PATCH] added a check, if any config instance is executed multiple
 times

---
 src/main/java/teetime/framework/Configuration.java | 13 +++++++++++--
 src/main/java/teetime/framework/Execution.java     |  8 ++++++--
 2 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/src/main/java/teetime/framework/Configuration.java b/src/main/java/teetime/framework/Configuration.java
index 2c10587f..fb6270a0 100644
--- a/src/main/java/teetime/framework/Configuration.java
+++ b/src/main/java/teetime/framework/Configuration.java
@@ -31,6 +31,7 @@ public abstract class Configuration extends AbstractCompositeStage {
 	private final IExceptionListenerFactory<?> factory;
 	private final ConfigurationContext context;
 
+	private boolean initialized;
 	private boolean executed;
 	private Stage startStage;
 
@@ -43,11 +44,19 @@ public abstract class Configuration extends AbstractCompositeStage {
 		this.context = new ConfigurationContext(this);
 	}
 
-	boolean isExecuted() {
+	boolean isInitialized() {
+		return initialized;
+	}
+
+	void setInitialized(final boolean executed) {
+		this.initialized = executed;
+	}
+
+	public boolean isExecuted() {
 		return executed;
 	}
 
-	void setExecuted(final boolean executed) {
+	public void setExecuted(final boolean executed) {
 		this.executed = executed;
 	}
 
diff --git a/src/main/java/teetime/framework/Execution.java b/src/main/java/teetime/framework/Execution.java
index e801ab6b..782f0ea2 100644
--- a/src/main/java/teetime/framework/Execution.java
+++ b/src/main/java/teetime/framework/Execution.java
@@ -62,10 +62,10 @@ public final class Execution<T extends Configuration> {
 	public Execution(final T configuration, final boolean validationEnabled) {
 		this.configuration = configuration;
 		this.configurationContext = configuration.getContext();
-		if (configuration.isExecuted()) {
+		if (configuration.isInitialized()) {
 			throw new IllegalStateException("Configuration was already executed");
 		}
-		configuration.setExecuted(true);
+		configuration.setInitialized(true);
 		if (validationEnabled) {
 			validateStages();
 		}
@@ -133,6 +133,10 @@ public final class Execution<T extends Configuration> {
 	 * @since 2.0
 	 */
 	public void executeNonBlocking() {
+		if (configuration.isExecuted()) {
+			throw new IllegalStateException("Any configuration instance may only be executed once.");
+		}
+		configuration.setExecuted(true);
 		configurationContext.executeConfiguration();
 	}
 
-- 
GitLab