Added an invokeMethod hook to CommandsManager, that wraps method invocation and can be overridden

Dieser Commit ist enthalten in:
TomyLobo 2011-08-08 10:45:19 +02:00
Ursprung 96eb94155c
Commit 2c155c241b

Datei anzeigen

@ -398,19 +398,23 @@ public abstract class CommandsManager<T> {
Object instance = instances.get(method); Object instance = instances.get(method);
try { invokeMethod(parent, args, player, method, instance, methodArgs, argsCount);
method.invoke(instance, methodArgs); }
} catch (IllegalArgumentException e) { }
logger.log(Level.SEVERE, "Failed to execute command", e);
} catch (IllegalAccessException e) { public void invokeMethod(Method parent, String[] args, T player, Method method, Object instance, Object[] methodArgs, int level) throws CommandException {
logger.log(Level.SEVERE, "Failed to execute command", e); try {
} catch (InvocationTargetException e) { method.invoke(instance, methodArgs);
if (e.getCause() instanceof CommandException) { } catch (IllegalArgumentException e) {
throw (CommandException) e.getCause(); logger.log(Level.SEVERE, "Failed to execute command", e);
} } catch (IllegalAccessException e) {
logger.log(Level.SEVERE, "Failed to execute command", e);
throw new WrappedCommandException(e.getCause()); } catch (InvocationTargetException e) {
if (e.getCause() instanceof CommandException) {
throw (CommandException) e.getCause();
} }
throw new WrappedCommandException(e.getCause());
} }
} }