package org.jboss.seam.security.external.saml.idp;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
import javax.enterprise.context.SessionScoped;
import org.jboss.seam.security.external.saml.api.SamlIdpSession;
import org.jboss.seam.security.external.saml.api.SamlPrincipal;
/**
* @author Marcel Kolsteren
*/
@SessionScoped
public class SamlIdpSessions implements Serializable {
private static final long serialVersionUID = 6297278286428111620L;
private Set<SamlIdpSessionImpl> sessions = new HashSet<SamlIdpSessionImpl>();
public SamlIdpSession addSession(SamlPrincipal principal) {
String sessionIndex;
int i = 0;
do {
sessionIndex = Integer.toString(i);
}
while (getSession(principal, sessionIndex) != null);
SamlIdpSessionImpl session = new SamlIdpSessionImpl();
session.setPrincipal(principal);
session.setSessionIndex(sessionIndex);
sessions.add(session);
return session;
}
public SamlIdpSession getSession(SamlPrincipal principal, String sessionIndex) {
for (SamlIdpSessionImpl session : sessions) {
if (session.getPrincipal().equals(principal) && session.getSessionIndex().equals(sessionIndex)) {
return session;
}
}
return null;
}
public void removeSession(SamlIdpSessionImpl session) {
sessions.remove(session);
}
public Set<SamlIdpSessionImpl> getSessions() {
return sessions;
}
}