001: /*
002: * Copyright 2004, 2005, 2006 Odysseus Software GmbH
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016: package de.odysseus.calyxo.control.impl;
017:
018: import javax.servlet.http.HttpServletRequest;
019:
020: import de.odysseus.calyxo.base.Messages;
021: import de.odysseus.calyxo.control.MessageSupport;
022:
023: /**
024: * Default message support class.
025: * <p/>
026: * This class simply saves errors, warnings and infos into certain request
027: * scope attributes.
028: *
029: * @author Christoph Beck
030: */
031: public class DefaultMessageSupport extends MessageSupport {
032:
033: /**
034: * Request scope key used to save error messages.
035: */
036: private static final String ERRORS_KEY = "de.odysseus.calyxo.control.messages.errors";
037:
038: /**
039: * Request scope key used to save warning messages.
040: */
041: private static final String WARNINGS_KEY = "de.odysseus.calyxo.control.messages.warnings";
042:
043: /**
044: * Request scope key used to save info messages.
045: */
046: private static final String INFOS_KEY = "de.odysseus.calyxo.control.messages.infos";
047:
048: /**
049: * Save the specified messages into request scope.
050: * This will replace any existing messages.
051: * @param request the request we are processing
052: * @param messages the messages to be saved
053: * @param key request scope messages key
054: */
055: protected void set(HttpServletRequest request, Messages messages,
056: String key) {
057: if (messages == null || messages.isEmpty()) {
058: request.removeAttribute(key);
059: } else {
060: request.setAttribute(key, messages);
061: }
062: }
063:
064: /**
065: * Get messages from request scope.
066: * @param request the request we are processing
067: * @param create if <code>true</code>, create, save and return a new instance
068: * if the requested messages are not present
069: * @param key request scope messages key
070: * @return messages instance or <code>null</code>
071: */
072: protected Messages get(HttpServletRequest request, boolean create,
073: String key) {
074: Messages messages = (Messages) request.getAttribute(key);
075: if (messages == null && create) {
076: request.setAttribute(key, messages = new Messages());
077: }
078: return messages;
079: }
080:
081: /**
082: * Delegate to {@link #set(HttpServletRequest, Messages, String)}.
083: * @see de.odysseus.calyxo.control.MessageSupport#setErrors(javax.servlet.http.HttpServletRequest, de.odysseus.calyxo.base.Messages)
084: */
085: public void setErrors(HttpServletRequest request, Messages messages) {
086: set(request, messages, ERRORS_KEY);
087: }
088:
089: /**
090: * Delegate to {@link #get(HttpServletRequest, boolean, String)}.
091: * @see de.odysseus.calyxo.control.MessageSupport#getErrors(javax.servlet.http.HttpServletRequest, boolean)
092: */
093: public Messages getErrors(HttpServletRequest request, boolean create) {
094: return get(request, create, ERRORS_KEY);
095: }
096:
097: /**
098: * Delegate to {@link #set(HttpServletRequest, Messages, String)}.
099: * @see de.odysseus.calyxo.control.MessageSupport#setWarnings(javax.servlet.http.HttpServletRequest, de.odysseus.calyxo.base.Messages)
100: */
101: public void setWarnings(HttpServletRequest request,
102: Messages messages) {
103: set(request, messages, WARNINGS_KEY);
104: }
105:
106: /**
107: * Delegate to {@link #get(HttpServletRequest, boolean, String)}.
108: * @see de.odysseus.calyxo.control.MessageSupport#getWarnings(javax.servlet.http.HttpServletRequest, boolean)
109: */
110: public Messages getWarnings(HttpServletRequest request,
111: boolean create) {
112: return get(request, create, WARNINGS_KEY);
113: }
114:
115: /**
116: * Delegate to {@link #set(HttpServletRequest, Messages, String)}.
117: * @see de.odysseus.calyxo.control.MessageSupport#setInfos(javax.servlet.http.HttpServletRequest, de.odysseus.calyxo.base.Messages)
118: */
119: public void setInfos(HttpServletRequest request, Messages messages) {
120: set(request, messages, INFOS_KEY);
121: }
122:
123: /**
124: * Delegate to {@link #get(HttpServletRequest, boolean, String)}.
125: * @see de.odysseus.calyxo.control.MessageSupport#getInfos(javax.servlet.http.HttpServletRequest, boolean)
126: */
127: public Messages getInfos(HttpServletRequest request, boolean create) {
128: return get(request, create, INFOS_KEY);
129: }
130: }
|