Commit 9092a77d42575e127b57325d726e41140be3a6f3

Authored by Cleverson Sacramento
1 parent 60643ca5
Exists in master

Tentativa de correção de uma falha de NullPointerException que ocorre no

Apache OpenWebBeans
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/interceptor/ExceptionHandlerInterceptor.java
@@ -69,11 +69,11 @@ public class ExceptionHandlerInterceptor implements Serializable { @@ -69,11 +69,11 @@ public class ExceptionHandlerInterceptor implements Serializable {
69 69
70 private final Map<Class<?>, Map<Class<?>, Method>> cache = new HashMap<Class<?>, Map<Class<?>, Method>>(); 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 getLogger().info(getBundle().getString("handling-exception", cause.getClass().getCanonicalName())); 73 getLogger().info(getBundle().getString("handling-exception", cause.getClass().getCanonicalName()));
74 74
75 boolean handled = false; 75 boolean handled = false;
76 - Class<?> type = getType(ic); 76 + Class<?> type = getType(target);
77 77
78 if (!isLoaded(type)) { 78 if (!isLoaded(type)) {
79 loadHandlers(type); 79 loadHandlers(type);
@@ -81,22 +81,22 @@ public class ExceptionHandlerInterceptor implements Serializable { @@ -81,22 +81,22 @@ public class ExceptionHandlerInterceptor implements Serializable {
81 81
82 Method handler = getMethod(type, cause); 82 Method handler = getMethod(type, cause);
83 if (handler != null) { 83 if (handler != null) {
84 - invoke(handler, ic.getTarget(), cause); 84 + invoke(handler, target, cause);
85 handled = true; 85 handled = true;
86 } 86 }
87 87
88 return handled; 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 CoreBootstrap bootstrap = Beans.getReference(CoreBootstrap.class); 93 CoreBootstrap bootstrap = Beans.getReference(CoreBootstrap.class);
94 94
95 if (!bootstrap.isAnnotatedType(type)) { 95 if (!bootstrap.isAnnotatedType(type)) {
96 - type = type.getSuperclass();  
97 getLogger().debug( 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 return type; 102 return type;
@@ -183,13 +183,15 @@ public class ExceptionHandlerInterceptor implements Serializable { @@ -183,13 +183,15 @@ public class ExceptionHandlerInterceptor implements Serializable {
183 183
184 @AroundInvoke 184 @AroundInvoke
185 public Object manage(final InvocationContext ic) throws Exception { 185 public Object manage(final InvocationContext ic) throws Exception {
  186 + Object target = null;
186 Object result = null; 187 Object result = null;
187 188
188 try { 189 try {
  190 + target = ic.getTarget();
189 result = ic.proceed(); 191 result = ic.proceed();
190 192
191 } catch (Exception cause) { 193 } catch (Exception cause) {
192 - if (!handleException(cause, ic)) { 194 + if (!handleException(cause, target)) {
193 throw cause; 195 throw cause;
194 } 196 }
195 } 197 }