diff options
author | snowleo <schneeleo@gmail.com> | 2011-10-26 17:42:39 +0200 |
---|---|---|
committer | snowleo <schneeleo@gmail.com> | 2011-10-26 17:42:39 +0200 |
commit | 91b6a19250c3c8c180a38daa8dd40fa1581e00d9 (patch) | |
tree | 918f4894c11dea640f1f6f5d004fff8be3f08b5c /EssentialsUpdate/src/com/earth2me/essentials/update/states | |
parent | d8a40db32c91b4bb6748bdcddb1b1e62e5299006 (diff) | |
download | Essentials-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/com/earth2me/essentials/update/states')
-rw-r--r-- | EssentialsUpdate/src/com/earth2me/essentials/update/states/AbstractState.java | 17 |
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); } |