diff --git a/src/main/java/teetime/framework/Configuration.java b/src/main/java/teetime/framework/Configuration.java index 2c10587fe47bc1ae8b4f5051fbc9b6e09ae441b8..fb6270a0cbc397aa90a1d7a7a20cbfe8a484502d 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 e801ab6bdaa3570d8b19de73bb773dd74c65b834..782f0ea2a189d2b167d7108e1d7616f99cb75017 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(); }