package org.swellrt.beta.client.js;
import org.swellrt.beta.client.SessionManager;
import org.waveprotocol.wave.client.account.ServerAccountData;
import com.google.gwt.user.client.Cookies;
public class SessionManagerJs implements SessionManager {
private static final String SESSION_COOKIE_NAME = "WSESSIONID";
private static final String TRANSIENT_SESSION_COOKIE_NAME = "TSESSIONID";
private final ServerAccountData emptyAccountData = new ServerAccountData() {
@Override
public String getId() {
return null;
}
@Override
public String getEmail() {
return null;
}
@Override
public String getLocale() {
return "en";
}
@Override
public String getAvatarUrl() {
return null;
}
@Override
public String getName() {
return null;
}
@Override
public String getSessionId() {
return null;
}
@Override
public String getDomain() {
return null;
}
@Override
public String getTransientSessionId() {
return null;
}
};
private ServerAccountData accountData = emptyAccountData;
public static SessionManagerJs create() {
SessionManagerJs sm = new SessionManagerJs();
sm.init();
return sm;
}
private SessionManagerJs() {
}
protected void init() {
}
@Override
public String getSessionId() {
return accountData.getSessionId();
}
@Override
public String getTransientSessionId() {
return accountData.getTransientSessionId();
}
@Override
public void setSession(ServerAccountData profile) {
this.accountData = profile;
}
@Override
public void removeSession() {
Cookies.removeCookie(SESSION_COOKIE_NAME);
Cookies.removeCookie(TRANSIENT_SESSION_COOKIE_NAME);
this.accountData = emptyAccountData;
}
@Override
public boolean isSession() {
return (this.accountData != emptyAccountData);
}
@Override
public String getWaveDomain() {
return this.accountData.getDomain();
}
@Override
public String getUserId() {
return this.accountData.getId();
}
}