summaryrefslogtreecommitdiffstats
path: root/EssentialsUpdate/src
diff options
context:
space:
mode:
authorsnowleo <schneeleo@gmail.com>2011-10-26 17:42:39 +0200
committersnowleo <schneeleo@gmail.com>2011-10-26 17:42:39 +0200
commit91b6a19250c3c8c180a38daa8dd40fa1581e00d9 (patch)
tree918f4894c11dea640f1f6f5d004fff8be3f08b5c /EssentialsUpdate/src
parentd8a40db32c91b4bb6748bdcddb1b1e62e5299006 (diff)
downloadEssentials-91b6a19250c3c8c180a38daa8dd40fa1581e00d9.tar
Essentials-91b6a19250c3c8c180a38daa8dd40fa1581e00d9.tar.gz
Essentials-91b6a19250c3c8c180a38daa8dd40fa1581e00d9.tar.lz
Essentials-91b6a19250c3c8c180a38daa8dd40fa1581e00d9.tar.xz
Essentials-91b6a19250c3c8c180a38daa8dd40fa1581e00d9.zip
Allow states to be automatically added to the state map.
They have to have a Constructor that accept the StateMap as argument, otherwise a RuntimeException is thrown.
Diffstat (limited to 'EssentialsUpdate/src')
-rw-r--r--EssentialsUpdate/src/com/earth2me/essentials/update/states/AbstractState.java17
1 files changed, 17 insertions, 0 deletions
diff --git a/EssentialsUpdate/src/com/earth2me/essentials/update/states/AbstractState.java b/EssentialsUpdate/src/com/earth2me/essentials/update/states/AbstractState.java
index 22fadc0de..5f2ff42ea 100644
--- a/EssentialsUpdate/src/com/earth2me/essentials/update/states/AbstractState.java
+++ b/EssentialsUpdate/src/com/earth2me/essentials/update/states/AbstractState.java
@@ -16,6 +16,23 @@ public abstract class AbstractState
public AbstractState getState(final Class<? extends AbstractState> stateClass)
{
+ if (!stateMap.containsKey(stateClass))
+ {
+ try
+ {
+ final AbstractState state = stateClass.getConstructor(StateMap.class).newInstance(stateMap);
+ stateMap.put(stateClass, state);
+ }
+ catch (Exception ex)
+ {
+ /*
+ * This should never happen.
+ * All states that are added to the map automatically,
+ * have to have a Constructor that accepts the StateMap.
+ */
+ throw new RuntimeException(ex);
+ }
+ }
return stateMap.get(stateClass);
}