method.invoke(object, getEventArguments(event, argEnv));
} catch (IllegalArgumentException e) {
String loc = (method.getDeclaringClass().getSimpleName() + "."
+ method.getName() + ": ");
throw new ObserverException(loc + e.toString(), e.getCause());
} catch (RuntimeException e) {
throw e;
} catch (InvocationTargetException e) {
Throwable exn = e.getCause();
if (exn instanceof RuntimeException)
throw (RuntimeException) exn;
String loc = (method.getDeclaringClass().getSimpleName() + "."
+ method.getName() + ": ");
throw new ObserverException(loc + exn.toString(), exn.getCause());
} catch (Exception e) {
String loc = (method.getDeclaringClass().getSimpleName() + "."
+ method.getName() + ": ");
throw new ObserverException(loc + e.toString(), e.getCause());
} finally {
if (argEnv != null)
argEnv.release();
if (env != null)