package scrum.server;
import ilarkesto.base.Tm;
import ilarkesto.base.time.TimePeriod;
import ilarkesto.core.logging.Log;
import ilarkesto.di.Context;
import ilarkesto.gwt.server.AGwtConversation;
import ilarkesto.webapp.AWebSession;
import javax.servlet.http.HttpServletRequest;
import scrum.server.admin.User;
public class WebSession extends AWebSession {
private static final Log LOG = Log.get(WebSession.class);
private TimePeriod TIMEOUT = new TimePeriod(Tm.HOUR);
private User user;
public WebSession(Context parentContext, HttpServletRequest initialRequest) {
super(parentContext, initialRequest);
}
@Override
public GwtConversation getGwtConversation(int conversationNumber) {
return (GwtConversation) super.getGwtConversation(conversationNumber);
}
@Override
public AGwtConversation createGwtConversation() {
GwtConversation gwtConversation = new GwtConversation(this, nextGwtConversationNumber());
gwtConversation.setEmoticonDao(ScrumWebApplication.get().getEmoticonDao());
if (user != null) gwtConversation.sendUserScopeDataToClient(user);
return gwtConversation;
}
public void setUser(User user) {
LOG.info("User set:", user);
this.user = user;
getContext().setName(toString());
}
public User getUser() {
return user;
}
@Override
protected void onInvalidate() {
setUser(null);
super.onInvalidate();
}
@Override
protected TimePeriod getTimeout() {
return TIMEOUT;
}
@Override
public String toString() {
return user == null ? super.toString() : "session:" + user;
}
}