package org.springmodules.feedxt.web.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.ApplicationEventPublisherAware;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
import org.springmodules.feedxt.event.LogoutEvent;
import org.springmodules.feedxt.web.controller.support.UserHolder;
/**
* @author Sergio Bossa
*/
public class LogOutController extends AbstractController implements ApplicationEventPublisherAware {
private UserHolder userHolder;
private String logOutView;
private ApplicationEventPublisher applicationEventPublisher;
public void setUserHolder(UserHolder userHolder) {
this.userHolder = userHolder;
}
public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
this.applicationEventPublisher = applicationEventPublisher;
}
protected ModelAndView handleRequestInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
this.applicationEventPublisher.publishEvent(new LogoutEvent(this, httpServletRequest.getSession(), this.userHolder.getUser()));
this.userHolder.setUser(null);
httpServletRequest.getSession().invalidate();
return new ModelAndView(this.logOutView);
}
public void setLogOutView(String logOutView) {
this.logOutView = logOutView;
}
}