package cms.util; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.slim3.util.RequestLocator; public final class Messages { public static final String FLASH_SESSION_KEY = "flash-session-key"; public static final String FLASH_REQUEST_KEY = "flash-request-key"; public static void setSessionMessage(String message) { setSessionMessage(message, Message.SUCCESS); } public static void setSessionMessage(String message, String type) { HttpSession session = getRequest().getSession(); List<Message> messages = (List<Message>)session.getAttribute(FLASH_SESSION_KEY); if (messages == null) { messages = new ArrayList<Message>(); } messages.add(new Message(message, type)); session.setAttribute(FLASH_SESSION_KEY, messages); } public static void setRequestMessage(String message) { setRequestMessage(message, Message.SUCCESS); } public static void setRequestMessage(String message, String type) { HttpServletRequest request = getRequest(); List<Message> messages = (List<Message>) request.getAttribute(FLASH_REQUEST_KEY); if (messages == null) { messages = new ArrayList<Message>(); } messages.add(new Message(message, type)); request.setAttribute(FLASH_REQUEST_KEY, messages); } public static List<Message> getRequestMessages() { return (List<Message>) getRequest().getAttribute(FLASH_REQUEST_KEY); } public static List<Message> getSessiontMessages() { return (List<Message>) getRequest().getSession().getAttribute(FLASH_SESSION_KEY); } public static List<Message> getAllMessages() { List<Message> messages = new ArrayList<Message>(); List<Message> requestMessages = getRequestMessages(); if (requestMessages != null) { messages.addAll(requestMessages); } List<Message> sessionMessages = getSessiontMessages(); if (sessionMessages != null) { messages.addAll(sessionMessages); } return messages; } protected static HttpServletRequest getRequest() throws IllegalStateException { HttpServletRequest request = RequestLocator.get(); if (request == null) { throw new IllegalStateException("JSP should be called via FrontController."); } return request; } }