package fi.otavanopisto.muikku.jsf;
import java.util.List;
import java.util.Map;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import fi.otavanopisto.muikku.utils.FacesUtils;
public class PostRedirectMessagesSupport implements javax.faces.event.PhaseListener {
private static final long serialVersionUID = -4074833216740931951L;
@Override
public void afterPhase(PhaseEvent event) {
}
@Override
public void beforePhase(PhaseEvent event) {
if (PhaseId.RENDER_RESPONSE.equals(event.getPhaseId())) {
FacesContext facesContext = event.getFacesContext();
if (!facesContext.getResponseComplete()) {
Map<String, Object> sessionMap = facesContext.getExternalContext().getSessionMap();
@SuppressWarnings("unchecked")
List<FacesMessage> messages = (List<FacesMessage>) sessionMap.get(FacesUtils.POST_REDIRECT_SESSION_KEY);
if (messages != null) {
for (FacesMessage message : messages) {
facesContext.addMessage(null, message);
}
sessionMap.remove(FacesUtils.POST_REDIRECT_SESSION_KEY);
}
}
}
}
@Override
public PhaseId getPhaseId() {
return PhaseId.ANY_PHASE;
}
}