package org.jboss.test.timer.ejb;
import java.util.Date;
import javax.ejb.EJBException;
import javax.ejb.EntityBean;
import javax.ejb.EntityContext;
import javax.ejb.TimedObject;
import javax.ejb.Timer;
import javax.ejb.TimerHandle;
import javax.ejb.TimerService;
import org.jboss.logging.Logger;
public class TimerEntityBean
implements EntityBean, TimedObject
{
private EntityContext mContext;
private Timer sTimer;
private int sCounter;
private Logger mLog = Logger.getLogger(this.getClass().getName());
public void startSingleTimer(long pPeriod)
{
mLog.info("TimerEntityBean.startSingleTimer(), try to get a Timer Service from the Entity Context");
TimerService lService = mContext.getTimerService();
mLog.info("TimerEntityBean.startSingleTimer(), create a timer if not already done");
if (sTimer == null)
{
sTimer = lService.createTimer(new Date(new Date().getTime() + pPeriod), "TimerEntityBean");
sCounter = 0;
}
else
{
throw new EJBException("Timer is already set");
}
}
public void startTimer(long pPeriod)
{
mLog.info("TimerEntityBean.startTimer(), try to get a Timer Service from the Entity Context");
TimerService lService = mContext.getTimerService();
mLog.info("TimerEntityBean.startTimer(), create a timer if not already done");
if (sTimer == null)
{
sTimer = lService.createTimer(new Date(new Date().getTime() + pPeriod), pPeriod, "TimerEntityBean");
sCounter = 0;
}
else
{
throw new EJBException("Timer is already set");
}
}
public void stopTimer()
{
try
{
if (sTimer != null)
{
sTimer.cancel();
}
else
{
throw new EJBException("Timer is not available");
}
}
finally
{
sTimer = null;
}
}
public int getTimeoutCount()
{
mLog.info("TimerEntityBean.getTimeoutCount(): " + sCounter);
return sCounter;
}
public Date getNextTimeout()
{
if (sTimer != null)
{
return sTimer.getNextTimeout();
}
else
{
return null;
}
}
public long getTimeRemaining()
{
if (sTimer != null)
{
return sTimer.getTimeRemaining();
}
else
{
return -1L;
}
}
public Object getInfo()
{
if (sTimer != null)
{
return (Object) sTimer.getInfo();
}
else
{
return null;
}
}
public TimerHandle getTimerHandle()
{
if (sTimer != null)
{
return sTimer.getHandle();
}
else
{
return null;
}
}
public void ejbTimeout(Timer pTimer)
{
mLog.debug("ejbTimeout(), timer: " + pTimer);
sCounter++;
}
public String toString()
{
return "TimerEntityBean [ " + " ]";
}
public Integer ejbCreate(Integer pk)
{
mLog.info("ejbCreate(" + pk + ")");
return pk;
}
public void ejbPostCreate(Integer pk)
{
mLog.info("ejbPostCreate(" + pk + ")");
}
public Integer ejbFindByPrimaryKey(Integer pk)
{
mLog.info("ejbFindByPrimaryKey(" + pk + ")");
return pk;
}
public void ejbActivate()
{
mLog.info("ejbActivate");
}
public void ejbLoad()
{
mLog.info("ejbLoad");
}
public void ejbPassivate()
{
mLog.info("ejbPassivate");
}
public void ejbRemove()
{
mLog.info("ejbRemove");
}
public void ejbStore()
{
mLog.info("ejbStore");
}
public void setEntityContext(EntityContext ctx)
{
mLog.info("setEntityContext");
this.mContext = ctx;
}
public void unsetEntityContext()
{
mLog.info("unsetEntityContext");
}
}