From e04c1c2a1848a156f279ab913347a51fba3781d1 Mon Sep 17 00:00:00 2001 From: Wesley Wolfe Date: Sat, 25 Aug 2012 17:48:53 -0500 Subject: Provide better verbose for registering listeners. Addresses BUKKIT-2391 --- src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java index cf54ba84..c82f731c 100644 --- a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java +++ b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java @@ -21,7 +21,6 @@ import java.util.logging.Level; import java.util.regex.Pattern; import org.apache.commons.lang.Validate; -import org.bukkit.Bukkit; import org.bukkit.Server; import org.bukkit.Warning; import org.bukkit.Warning.WarningState; @@ -272,22 +271,26 @@ public class JavaPluginLoader implements PluginLoader { } public Map, Set> createRegisteredListeners(Listener listener, final Plugin plugin) { + Validate.notNull(plugin, "Plugin can not be null"); + Validate.notNull(listener, "Listener can not be null"); + boolean useTimings = server.getPluginManager().useTimings(); Map, Set> ret = new HashMap, Set>(); Method[] methods; try { methods = listener.getClass().getDeclaredMethods(); } catch (NoClassDefFoundError e) { - Bukkit.getServer().getLogger().severe("Plugin " + plugin.getDescription().getName() + " is attempting to register event " + e.getMessage() + ", which does not exist. Ignoring events registered in " + listener.getClass()); + plugin.getLogger().severe("Plugin " + plugin.getDescription().getFullName() + " has failed to register events for " + listener.getClass() + " because " + e.getMessage() + " does not exist."); return ret; } + for (int i = 0; i < methods.length; i++) { final Method method = methods[i]; final EventHandler eh = method.getAnnotation(EventHandler.class); if (eh == null) continue; final Class checkClass = method.getParameterTypes()[0]; if (!Event.class.isAssignableFrom(checkClass) || method.getParameterTypes().length != 1) { - plugin.getServer().getLogger().severe("Wrong method arguments used for event type registered"); + plugin.getLogger().severe(plugin.getDescription().getFullName() + " attempted to register an invalid EventHandler method signature \"" + method.toGenericString() + "\" in " + listener.getClass()); continue; } final Class eventClass = checkClass.asSubclass(Event.class); -- cgit v1.2.3