@ Override public Object invoke ( Object proxy , Method method , Object [ ] args ) /* CSOFF: IllegalThrows */ throws Throwable /* CSON: IllegalThrows */ { final long startTime = System . currentTimeMillis ( ) ; Object result = null ; try { result = method . invoke ( target , args ) ; if ( ( result != null ) && ! method . getReturnType ( ) . equals ( Void . TYPE ) && method . getReturnType ( ) . isInterface ( ) ) { result = wrapObject ( method . getReturnType ( ) , result , reporter ) ; } } catch ( InvocationTargetException t ) { if ( t . getCause ( ) != null ) { throw t . getCause ( ) ; } } finally { final long endTime = System . currentTimeMillis ( ) ; reporter . reportTimedOperation ( targetClass , method , startTime , endTime ) ; } return result ; }
Handles method invocations on the generated proxy . Measures the time needed to execute the given method on the wrapped object .