import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
-import org.springframework.context.ApplicationEvent;
-import org.springframework.context.ApplicationListener;
-import edu.internet2.middleware.shibboleth.common.session.LoginEvent;
-import edu.internet2.middleware.shibboleth.common.session.LogoutEvent;
import edu.internet2.middleware.shibboleth.common.session.SessionManager;
-import edu.internet2.middleware.shibboleth.common.util.EventingMapBasedStorageService.AddEntryEvent;
-import edu.internet2.middleware.shibboleth.common.util.EventingMapBasedStorageService.RemoveEntryEvent;
import edu.internet2.middleware.shibboleth.idp.session.Session;
/** Manager of IdP sessions. */
-public class SessionManagerImpl implements SessionManager<Session>, ApplicationContextAware, ApplicationListener {
+public class SessionManagerImpl implements SessionManager<Session> {
/** Class logger. */
private final Logger log = LoggerFactory.getLogger(SessionManagerImpl.class);
- /** Spring context used to publish login and logout events. */
- private ApplicationContext appCtx;
-
/** Number of random bits within a session ID. */
private final int sessionIDSize = 32;
MDC.put("idpSessionId", sessionID);
log.trace("Created session {}", sessionID);
- appCtx.publishEvent(new LoginEvent(session));
return session;
}
}
/** {@inheritDoc} */
- public void onApplicationEvent(ApplicationEvent event) {
- if (event instanceof AddEntryEvent) {
- AddEntryEvent addEvent = (AddEntryEvent) event;
- if (addEvent.getValue() instanceof SessionManagerEntry) {
- SessionManagerEntry sessionEntry = (SessionManagerEntry) addEvent.getValue();
- appCtx.publishEvent(new LoginEvent(sessionEntry.getSession()));
- }
- }
-
- if (event instanceof RemoveEntryEvent) {
- RemoveEntryEvent removeEvent = (RemoveEntryEvent) event;
- if (removeEvent.getValue() instanceof SessionManagerEntry) {
- SessionManagerEntry sessionEntry = (SessionManagerEntry) removeEvent.getValue();
- appCtx.publishEvent(new LogoutEvent(sessionEntry.getSession()));
- }
- }
- }
-
- /** {@inheritDoc} */
public void removeSessionIndex(String index) {
SessionManagerEntry sessionEntry = sessionStore.remove(partition, index);
if (sessionEntry != null) {
sessionEntry.getSessionIndexes().remove(index);
}
}
-
- /** {@inheritDoc} */
- public void setApplicationContext(ApplicationContext applicationContext) {
- ApplicationContext rootContext = applicationContext;
- while (rootContext.getParent() != null) {
- rootContext = rootContext.getParent();
- }
- appCtx = rootContext;
- }
}
\ No newline at end of file