diff options
author | snowleo <schneeleo@gmail.com> | 2011-10-12 03:14:07 +0200 |
---|---|---|
committer | snowleo <schneeleo@gmail.com> | 2011-10-12 03:14:26 +0200 |
commit | 860d446d28776ec842fa53e8e08538d4e093d6e9 (patch) | |
tree | 0c4598eae4eb8c59fd36e8312eab1b27a8018794 /EssentialsUpdate/src/f00f/net/irc/martyr/GenericAutoService.java | |
parent | 9ec398b39b0f48392a9d635041b392c7dba2ca0c (diff) | |
download | Essentials-860d446d28776ec842fa53e8e08538d4e093d6e9.tar Essentials-860d446d28776ec842fa53e8e08538d4e093d6e9.tar.gz Essentials-860d446d28776ec842fa53e8e08538d4e093d6e9.tar.lz Essentials-860d446d28776ec842fa53e8e08538d4e093d6e9.tar.xz Essentials-860d446d28776ec842fa53e8e08538d4e093d6e9.zip |
EssentialsUpdate WIP
Diffstat (limited to 'EssentialsUpdate/src/f00f/net/irc/martyr/GenericAutoService.java')
-rw-r--r-- | EssentialsUpdate/src/f00f/net/irc/martyr/GenericAutoService.java | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/EssentialsUpdate/src/f00f/net/irc/martyr/GenericAutoService.java b/EssentialsUpdate/src/f00f/net/irc/martyr/GenericAutoService.java new file mode 100644 index 000000000..0b3546231 --- /dev/null +++ b/EssentialsUpdate/src/f00f/net/irc/martyr/GenericAutoService.java @@ -0,0 +1,54 @@ +package f00f.net.irc.martyr; + +import java.util.Observable; + +/** + * Provides a framework for an auto service. Does enable by default. + * Splits the 'update' method into two, 'updateState' and 'updateCommand'. + * Also provides thread safety on all methods. + */ +public abstract class GenericAutoService extends GenericCommandAutoService +{ + +protected GenericAutoService( IRCConnection connection ) +{ + super( connection ); +} + +public synchronized void enable() +{ + if( enabled ) + return; + + connection.addStateObserver( this ); + + super.enable(); +} + +public synchronized void disable() +{ + if( !enabled ) + return; + + connection.removeStateObserver( this ); + + super.disable(); +} + +public synchronized void update( Observable observer, Object updated ) +{ + if( !enabled ) + throw new IllegalStateException("This observer is not enabled." ); + if( updated instanceof State ) + updateState( (State)updated ); + else + super.update( observer, updated ); +} + +protected abstract void updateState( State state ); + +} + + + + |