From dc70f3698edc6e029969291031353426b78ce8b1 Mon Sep 17 00:00:00 2001 From: "Jaan Sepp, Anton Keks" Date: Wed, 4 Jan 2017 12:00:16 +0200 Subject: [PATCH] unwrap InvocationTargetException properly for cleaner stack traces --- .../java/play/template2/GTJavaExtensionsInvoker.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/play/template2/GTJavaExtensionsInvoker.java b/src/main/java/play/template2/GTJavaExtensionsInvoker.java index 70e56fd..ebb3c37 100644 --- a/src/main/java/play/template2/GTJavaExtensionsInvoker.java +++ b/src/main/java/play/template2/GTJavaExtensionsInvoker.java @@ -43,7 +43,7 @@ public abstract class GTJavaExtensionsInvoker { static interface WrappedMethod { public Object invoke(Object o, Object[] args) throws Exception; } - + static class WrappedJavaMethod implements WrappedMethod { private final Method m; @@ -53,7 +53,13 @@ static class WrappedJavaMethod implements WrappedMethod { @Override public Object invoke(Object o, Object[] args) throws Exception { - return m.invoke(o, args); + try { + return m.invoke(o, args); + } catch (InvocationTargetException wrapped) { + Throwable e = wrapped.getTargetException(); + if (e instanceof Error) throw (Error) e; + throw (Exception) e; + } } }