package org.societies.webapp.controller; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.faces.application.FacesMessage; import javax.faces.context.FacesContext; import java.io.Serializable; public abstract class BasePageController implements Serializable { protected final Logger log = LoggerFactory.getLogger(getClass()); // NB: NOT static protected void addGlobalMessage(String summary, String detail, FacesMessage.Severity severity) { addFacesMessage(null, summary, detail, severity); } protected void addFacesMessage(String component, String summary, String detail, FacesMessage.Severity severity) { try { if (component == null) component = ""; FacesContext facesContext = FacesContext.getCurrentInstance(); if (facesContext == null) { log.warn(String.format("facesContext is null - Couldn't deliver message '%s' to component '%s'", summary + " : " + detail, component)); return; } FacesMessage message = new FacesMessage(severity, summary, detail); facesContext.addMessage(component, message); String logMsg = "MESSAGE:" + severity.toString() + (component.length() > 0 ? ":" + component : ":GLOBAL") + " [" + summary + "] " + detail; if (severity == FacesMessage.SEVERITY_ERROR) log.error(logMsg); else if (severity == FacesMessage.SEVERITY_WARN) log.warn(logMsg); else log.debug(logMsg); } catch (Exception ex) { // This method gets called from so many places, that it's worth catching any possible exception // Generally speaking, missing a message to a user is not a problem as the messages are usually non critical log.error("Error sending faces message to component " + component, ex); } } }