package com.tddinaction.ejb3.entitybeans.ejb2x;
import java.rmi.RemoteException;
import javax.annotation.Resource;
import javax.ejb.CreateException;
import javax.ejb.EJBException;
import javax.ejb.EntityBean;
import javax.ejb.EntityContext;
import javax.ejb.RemoveException;
import javax.ejb.TimedObject;
import javax.ejb.Timer;
import javax.ejb.TimerService;
public abstract class EJB2UserBean implements EntityBean, TimedObject {
private static final long EXPIRATION_PERIOD = 5000L;
private EntityContext ctx;
public abstract void setId(Integer id);
public abstract Integer getId();
public abstract void setUsername(String username);
public abstract String getUsername();
public abstract void setPassword(String password);
public abstract String getPassword();
public abstract void setPasswordExpired(boolean expired);
public abstract boolean getPasswordExpired();
public void setEntityContext(EntityContext ctx)
throws EJBException, RemoteException {
this.ctx = ctx;
}
public Integer ejbCreate(String user, String pass)
throws CreateException {
setId((int) (System.currentTimeMillis() % Integer.MAX_VALUE));
setUsername(user);
setPassword(pass);
setPasswordExpired(false);
return null;
}
public void ejbPostCreate(String username, String password)
throws CreateException {
getTimerService().createTimer(EXPIRATION_PERIOD,
"password expired");
}
@Resource
javax.ejb.TimerService timerService;
private TimerService getTimerService() {
// EJB3-style:
// return timerService;
// EJB2-style:
return ctx.getTimerService();
}
public void ejbTimeout(Timer timer) {
setPasswordExpired(true);
}
public void unsetEntityContext() throws EJBException,
RemoteException {
}
public void ejbRemove() throws RemoveException, EJBException,
RemoteException {
}
public void ejbActivate() throws EJBException, RemoteException {
}
public void ejbPassivate() throws EJBException, RemoteException {
}
public void ejbLoad() throws EJBException, RemoteException {
}
public void ejbStore() throws EJBException, RemoteException {
}
}