package org.jboss.as.ejb3.component.singleton; import org.jboss.as.ee.component.deployers.StartupCountdown; import org.jboss.invocation.Interceptor; import org.jboss.invocation.InterceptorContext; /** * Interceptor decreasing value of passed CountDownLatch per invocation. * Is used on @Startup @Singletons' @PostConstruct methods to signal post-construct successfuly done. * @author Fedor Gavrilov */ public class StartupCountDownInterceptor implements Interceptor { private final StartupCountdown countdown; StartupCountDownInterceptor(final StartupCountdown countdown) { this.countdown = countdown; } @Override public Object processInvocation(final InterceptorContext context) throws Exception { final StartupCountdown.Frame frame = countdown.enter(); try { return context.proceed(); } finally { StartupCountdown.restore(frame); countdown.countDown(); } } }