package book.jeepatterns.interceptor; import java.io.Serializable; import javax.enterprise.event.Event; import javax.inject.Inject; import javax.interceptor.AroundInvoke; import javax.interceptor.Interceptor; import javax.interceptor.InvocationContext; import book.jeepatterns.model.TestRevisionTO; @Statistical @Interceptor public class Statisticalnterceptor implements Serializable { @Inject Event<String> event; @AroundInvoke public Object statisticMethod (InvocationContext invocationContext) throws Exception{ System.out.println("Statistical method : " + invocationContext.getMethod().getName() + " " + invocationContext.getMethod().getDeclaringClass() ); // get the enrollment: TestRevisionTO testRevisionTO = (TestRevisionTO)invocationContext.getParameters()[0]; System.out.println("Enrolment : " + testRevisionTO.getEnrollment()); // event.fireAsync (testRevisionTO.getEnrollment());// fire an async statistical event. This is new in JEE8. event.fire (testRevisionTO.getEnrollment()); Object o = invocationContext.proceed(); return o; } }