package org.jboss.as.test.integration.ejb.timerservice.mgmt; import java.io.Serializable; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import javax.annotation.Resource; import javax.ejb.Timeout; import javax.ejb.Timer; import javax.ejb.TimerService; import org.jboss.logging.Logger; public abstract class AbstractTimerBean implements SimpleFace { protected final Logger logger = Logger.getLogger(getClass()); protected static int timerTicks = 0; protected static int delay = 5000; protected static Serializable info; protected static boolean persistent; protected static CountDownLatch latch; @Resource protected TimerService timerService; @Override public void clean() { for (Timer t : this.timerService.getTimers()) { t.cancel(); } timerTicks = 0; } @Override public int getTimerTicks() { return timerTicks; } @Override public int getTimerCount() { return this.timerService.getTimers().size(); } @Override public void waitOnTimeout() throws InterruptedException { latch = new CountDownLatch(1); latch.await(delay * 2, TimeUnit.MILLISECONDS); } @Timeout public void booom(Timer t) { new Exception().printStackTrace(); timerTicks++; if (latch != null) latch.countDown(); } @Override public void setPersistent(boolean persistent) { AbstractTimerBean.persistent = persistent; } @Override public void setInfo(Serializable info) { AbstractTimerBean.info = info; } @Override public void setDelay(int delay) { AbstractTimerBean.delay = delay; } @Override public String getComparableTimerDetail() { return null; } }