diff options
author | zml2008 <zach@zachsthings.com> | 2011-11-12 20:22:30 -0800 |
---|---|---|
committer | EvilSeph <evilseph@gmail.com> | 2012-02-26 12:15:36 -0500 |
commit | 56d628be91398c3c3d33da15d0a2fb258a313e7c (patch) | |
tree | 4c742d3947c5491f5c0dc2c41cae3f199d9cd182 /src | |
parent | eb8632fca7bca1e36a4ed3cc2b2647b2dddbe925 (diff) | |
download | bukkit-56d628be91398c3c3d33da15d0a2fb258a313e7c.tar bukkit-56d628be91398c3c3d33da15d0a2fb258a313e7c.tar.gz bukkit-56d628be91398c3c3d33da15d0a2fb258a313e7c.tar.lz bukkit-56d628be91398c3c3d33da15d0a2fb258a313e7c.tar.xz bukkit-56d628be91398c3c3d33da15d0a2fb258a313e7c.zip |
Added service register and unregister events. Addresses BUKKIT-816
Diffstat (limited to 'src')
4 files changed, 84 insertions, 4 deletions
diff --git a/src/main/java/org/bukkit/event/server/ServiceEvent.java b/src/main/java/org/bukkit/event/server/ServiceEvent.java new file mode 100644 index 00000000..311e153b --- /dev/null +++ b/src/main/java/org/bukkit/event/server/ServiceEvent.java @@ -0,0 +1,18 @@ +package org.bukkit.event.server; + +import org.bukkit.plugin.RegisteredServiceProvider; + +/** + * An event relating to a registered service. This is called in a {@link org.bukkit.plugin.ServicesManager} + */ +public abstract class ServiceEvent extends ServerEvent { + private final RegisteredServiceProvider<?> provider; + + public ServiceEvent(final RegisteredServiceProvider<?> provider) { + this.provider = provider; + } + + public RegisteredServiceProvider<?> getProvider() { + return provider; + } +}
\ No newline at end of file diff --git a/src/main/java/org/bukkit/event/server/ServiceRegisterEvent.java b/src/main/java/org/bukkit/event/server/ServiceRegisterEvent.java new file mode 100644 index 00000000..89c852d5 --- /dev/null +++ b/src/main/java/org/bukkit/event/server/ServiceRegisterEvent.java @@ -0,0 +1,23 @@ +package org.bukkit.event.server; + +import org.bukkit.event.HandlerList; +import org.bukkit.plugin.RegisteredServiceProvider; + +/** + * This event is called when a service is registered. + */ +public class ServiceRegisterEvent extends ServiceEvent { + private static final HandlerList handlers = new HandlerList(); + + public ServiceRegisterEvent(RegisteredServiceProvider<?> registeredProvider) { + super(registeredProvider); + } + + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } +} diff --git a/src/main/java/org/bukkit/event/server/ServiceUnregisterEvent.java b/src/main/java/org/bukkit/event/server/ServiceUnregisterEvent.java new file mode 100644 index 00000000..608f5576 --- /dev/null +++ b/src/main/java/org/bukkit/event/server/ServiceUnregisterEvent.java @@ -0,0 +1,23 @@ +package org.bukkit.event.server; + +import org.bukkit.event.HandlerList; +import org.bukkit.plugin.RegisteredServiceProvider; + +/** + * This event is called when a service is unregistered. + */ +public class ServiceUnregisterEvent extends ServiceEvent { + private static final HandlerList handlers = new HandlerList(); + + public ServiceUnregisterEvent(RegisteredServiceProvider<?> serviceProvider) { + super(serviceProvider); + } + + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } +} diff --git a/src/main/java/org/bukkit/plugin/SimpleServicesManager.java b/src/main/java/org/bukkit/plugin/SimpleServicesManager.java index c0f0a54c..94600518 100644 --- a/src/main/java/org/bukkit/plugin/SimpleServicesManager.java +++ b/src/main/java/org/bukkit/plugin/SimpleServicesManager.java @@ -1,5 +1,9 @@ package org.bukkit.plugin; +import org.bukkit.Bukkit; +import org.bukkit.event.server.ServiceRegisterEvent; +import org.bukkit.event.server.ServiceUnregisterEvent; + import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -37,12 +41,15 @@ public class SimpleServicesManager implements ServicesManager { registered = new ArrayList<RegisteredServiceProvider<?>>(); providers.put(service, registered); } + RegisteredServiceProvider<T> registeredProvider = new RegisteredServiceProvider<T>(service, provider, priority, plugin); - registered.add(new RegisteredServiceProvider<T>(service, provider, priority, plugin)); + registered.add(registeredProvider); // Make sure that providers are in the right order in order // for priorities to work correctly Collections.sort(registered); + + Bukkit.getServer().getPluginManager().callEvent(new ServiceRegisterEvent(registeredProvider)); } } @@ -64,8 +71,11 @@ public class SimpleServicesManager implements ServicesManager { // Removed entries that are from this plugin while (it2.hasNext()) { - if (it2.next().getPlugin() == plugin) { + RegisteredServiceProvider<?> registered = it2.next(); + + if (registered.getPlugin() == plugin) { it2.remove(); + Bukkit.getServer().getPluginManager().callEvent(new ServiceUnregisterEvent(registered)); } } } catch (NoSuchElementException e) { // Why does Java suck @@ -105,8 +115,11 @@ public class SimpleServicesManager implements ServicesManager { // Removed entries that are from this plugin while (it2.hasNext()) { - if (it2.next().getProvider() == provider) { + RegisteredServiceProvider<?> registered = it2.next(); + + if (registered.getProvider() == provider) { it2.remove(); + Bukkit.getServer().getPluginManager().callEvent(new ServiceUnregisterEvent(registered)); } } } catch (NoSuchElementException e) { // Why does Java suck @@ -139,8 +152,11 @@ public class SimpleServicesManager implements ServicesManager { // Removed entries that are from this plugin while (it2.hasNext()) { - if (it2.next().getProvider() == provider) { + RegisteredServiceProvider<?> registered = it2.next(); + + if (registered.getProvider() == provider) { it2.remove(); + Bukkit.getServer().getPluginManager().callEvent(new ServiceUnregisterEvent(registered)); } } } catch (NoSuchElementException e) { // Why does Java suck |