Commit dc0905e31e3c0ddae697364b758aea4390ff7d66

Authored by fcsacin
1 parent 0bc5e8a3
Exists in master

Alteracao do getMethod

impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/interceptor/ExceptionHandlerInterceptor.java
@@ -84,7 +84,7 @@ public class ExceptionHandlerInterceptor implements Serializable { @@ -84,7 +84,7 @@ public class ExceptionHandlerInterceptor implements Serializable {
84 loadHandlers(type); 84 loadHandlers(type);
85 } 85 }
86 86
87 - Method handler = getMethod(type, cause); 87 + Method handler = getMethod(type, cause.getClass());
88 if (handler != null) { 88 if (handler != null) {
89 invoke(handler, ic.getTarget(), cause); 89 invoke(handler, ic.getTarget(), cause);
90 handled = true; 90 handled = true;
@@ -103,21 +103,7 @@ public class ExceptionHandlerInterceptor implements Serializable { @@ -103,21 +103,7 @@ public class ExceptionHandlerInterceptor implements Serializable {
103 } 103 }
104 104
105 return type; 105 return type;
106 - }  
107 -  
108 - /**  
109 - * If there is an handler in the current class for the expected exception, then this method will be returned; Else  
110 - * returns null;  
111 - *  
112 - * @param type  
113 - * @param cause  
114 - * @return  
115 - */  
116 - private final Method getMethod(final Class<?> type, final Exception cause) {  
117 - Method handler = null;  
118 - handler = getMethod(type, cause.getClass());  
119 - return handler;  
120 - } 106 + }
121 107
122 108
123 /** 109 /**
impl/core/src/test/java/br/gov/frameworkdemoiselle/internal/interceptor/ExceptionHandlerInterceptorTest.java
@@ -319,7 +319,7 @@ public class ExceptionHandlerInterceptorTest { @@ -319,7 +319,7 @@ public class ExceptionHandlerInterceptorTest {
319 public void manageWithClassThatContainsParentExceptionHandleMethod() throws Exception { 319 public void manageWithClassThatContainsParentExceptionHandleMethod() throws Exception {
320 ClassWithMethodsAnnotatedWithExceptionHandler classWithException = new ClassWithMethodsAnnotatedWithExceptionHandler(); 320 ClassWithMethodsAnnotatedWithExceptionHandler classWithException = new ClassWithMethodsAnnotatedWithExceptionHandler();
321 expect(this.context.getTarget()).andReturn(classWithException).anyTimes(); 321 expect(this.context.getTarget()).andReturn(classWithException).anyTimes();
322 - expect(this.context.proceed()).andThrow(new TestException("TEST EXCEPTION")); 322 + expect(this.context.proceed()).andThrow(new TestException(""));
323 expect(CoreBootstrap.isAnnotatedType(ClassWithMethodsAnnotatedWithExceptionHandler.class)).andReturn(true); 323 expect(CoreBootstrap.isAnnotatedType(ClassWithMethodsAnnotatedWithExceptionHandler.class)).andReturn(true);
324 replayAll(this.context, CoreBootstrap.class); 324 replayAll(this.context, CoreBootstrap.class);
325 325
@@ -327,5 +327,41 @@ public class ExceptionHandlerInterceptorTest { @@ -327,5 +327,41 @@ public class ExceptionHandlerInterceptorTest {
327 assertEquals(1, classWithException.times); 327 assertEquals(1, classWithException.times);
328 verifyAll(); 328 verifyAll();
329 } 329 }
  330 +
  331 + @Test
  332 + public void manageWithClassThatDoesNotContainsParentExceptionHandleMethod() throws Exception {
  333 + ClassWithoutMethodsAnnotatedWithExceptionHandler classWithException = new ClassWithoutMethodsAnnotatedWithExceptionHandler();
  334 + expect(this.context.getTarget()).andReturn(classWithException).anyTimes();
  335 + expect(this.context.proceed()).andThrow(new TestException(""));
  336 + expect(CoreBootstrap.isAnnotatedType(ClassWithoutMethodsAnnotatedWithExceptionHandler.class)).andReturn(true);
  337 + replayAll(this.context, CoreBootstrap.class);
  338 +
  339 + try {
  340 + this.interceptor.manage(this.context);
  341 + fail();
  342 + } catch (TestException e) {
  343 + assertTrue(true);
  344 + }
  345 +
  346 + verifyAll();
  347 + }
  348 +
  349 + @Test
  350 + public void manageWithClassThatContainsOnlySubExceptionHandleMethod() throws Exception {
  351 + ClassWithExceptionHandlerMethodThatRethrowException classWithException = new ClassWithExceptionHandlerMethodThatRethrowException();
  352 + expect(this.context.getTarget()).andReturn(classWithException).anyTimes();
  353 + expect(this.context.proceed()).andThrow(new DemoiselleException(""));
  354 + expect(CoreBootstrap.isAnnotatedType(ClassWithExceptionHandlerMethodThatRethrowException.class)).andReturn(true);
  355 + replayAll(this.context, CoreBootstrap.class);
  356 +
  357 + try {
  358 + this.interceptor.manage(this.context);
  359 + fail();
  360 + } catch (DemoiselleException e) {
  361 + assertTrue(true);
  362 + }
  363 +
  364 + verifyAll();
  365 + }
330 366
331 } 367 }