Commit 9092a77d42575e127b57325d726e41140be3a6f3
1 parent
60643ca5
Exists in
master
Tentativa de correção de uma falha de NullPointerException que ocorre no
Apache OpenWebBeans
Showing
1 changed file
with
11 additions
and
9 deletions
Show diff stats
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/interceptor/ExceptionHandlerInterceptor.java
... | ... | @@ -69,11 +69,11 @@ public class ExceptionHandlerInterceptor implements Serializable { |
69 | 69 | |
70 | 70 | private final Map<Class<?>, Map<Class<?>, Method>> cache = new HashMap<Class<?>, Map<Class<?>, Method>>(); |
71 | 71 | |
72 | - private final boolean handleException(final Exception cause, final InvocationContext ic) throws Exception { | |
72 | + private final boolean handleException(final Exception cause, final Object target) throws Exception { | |
73 | 73 | getLogger().info(getBundle().getString("handling-exception", cause.getClass().getCanonicalName())); |
74 | 74 | |
75 | 75 | boolean handled = false; |
76 | - Class<?> type = getType(ic); | |
76 | + Class<?> type = getType(target); | |
77 | 77 | |
78 | 78 | if (!isLoaded(type)) { |
79 | 79 | loadHandlers(type); |
... | ... | @@ -81,22 +81,22 @@ public class ExceptionHandlerInterceptor implements Serializable { |
81 | 81 | |
82 | 82 | Method handler = getMethod(type, cause); |
83 | 83 | if (handler != null) { |
84 | - invoke(handler, ic.getTarget(), cause); | |
84 | + invoke(handler, target, cause); | |
85 | 85 | handled = true; |
86 | 86 | } |
87 | 87 | |
88 | 88 | return handled; |
89 | 89 | } |
90 | 90 | |
91 | - private final Class<?> getType(final InvocationContext ic) { | |
92 | - Class<?> type = ic.getTarget().getClass(); | |
91 | + private final Class<?> getType(final Object target) { | |
92 | + Class<?> type = target.getClass(); | |
93 | 93 | CoreBootstrap bootstrap = Beans.getReference(CoreBootstrap.class); |
94 | 94 | |
95 | 95 | if (!bootstrap.isAnnotatedType(type)) { |
96 | - type = type.getSuperclass(); | |
97 | 96 | getLogger().debug( |
98 | - getBundle().getString("proxy-detected", ic.getTarget().getClass(), | |
99 | - ic.getTarget().getClass().getSuperclass())); | |
97 | + getBundle().getString("proxy-detected", type, | |
98 | + type.getSuperclass())); | |
99 | + type = type.getSuperclass(); | |
100 | 100 | } |
101 | 101 | |
102 | 102 | return type; |
... | ... | @@ -183,13 +183,15 @@ public class ExceptionHandlerInterceptor implements Serializable { |
183 | 183 | |
184 | 184 | @AroundInvoke |
185 | 185 | public Object manage(final InvocationContext ic) throws Exception { |
186 | + Object target = null; | |
186 | 187 | Object result = null; |
187 | 188 | |
188 | 189 | try { |
190 | + target = ic.getTarget(); | |
189 | 191 | result = ic.proceed(); |
190 | 192 | |
191 | 193 | } catch (Exception cause) { |
192 | - if (!handleException(cause, ic)) { | |
194 | + if (!handleException(cause, target)) { | |
193 | 195 | throw cause; |
194 | 196 | } |
195 | 197 | } | ... | ... |