package com.softwaremill.common.debug.timing;
import javax.interceptor.AroundInvoke;
import javax.interceptor.Interceptor;
import javax.interceptor.InvocationContext;
import java.io.Serializable;
/**
* @link http://seamframework.org/Community/SeamPerformanceProblemRewardingWorkaround
* @author Tobias Hill
* @author Adam Warski
*/
@Interceptor
@Timed
public class TimingInterceptor implements Serializable {
@AroundInvoke
public Object timeCall(InvocationContext invocation) throws Exception {
long t0 = System.nanoTime();
try {
return invocation.proceed();
} finally {
long dt = System.nanoTime() - t0;
TimingResults.instance.addInvocation(invocation, dt);
}
}
}