summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorzml2008 <zach@zachsthings.com>2011-11-12 20:22:30 -0800
committerEvilSeph <evilseph@gmail.com>2012-02-26 12:15:36 -0500
commit56d628be91398c3c3d33da15d0a2fb258a313e7c (patch)
tree4c742d3947c5491f5c0dc2c41cae3f199d9cd182 /src
parenteb8632fca7bca1e36a4ed3cc2b2647b2dddbe925 (diff)
downloadbukkit-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')
-rw-r--r--src/main/java/org/bukkit/event/server/ServiceEvent.java18
-rw-r--r--src/main/java/org/bukkit/event/server/ServiceRegisterEvent.java23
-rw-r--r--src/main/java/org/bukkit/event/server/ServiceUnregisterEvent.java23
-rw-r--r--src/main/java/org/bukkit/plugin/SimpleServicesManager.java24
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