001: /*
002: * Copyright 2007 Dan Shellman
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 org.iscreen.mvel;
017:
018: import java.util.Locale;
019:
020: import org.mvel.Interpreter;
021:
022: import org.iscreen.FailureMessage;
023:
024: /**
025: *
026: * @author Shellman, Dan
027: */
028: public class MvelMessage implements FailureMessage {
029: protected String template;
030: protected Object contextBean;
031:
032: /**
033: * Default constructor.
034: */
035: public MvelMessage(String theTemplate) {
036: if (theTemplate == null) {
037: template = "";
038: } else {
039: template = theTemplate;
040: }
041: } //end MvelMessage()
042:
043: /**
044: * For sub-classes to over-ride how this works.
045: */
046: protected MvelMessage() {
047: } //end MvelMessage()
048:
049: /**
050: * Generates a message based upon the template of this message and the
051: * OGNL root passed in to the setOgnlRoot() method. If the OGNL root object
052: * is null, then this method will return the template unchanged.
053: *
054: * @return Returns the message, which is constructed based upon the OGNL
055: * root and the template.
056: */
057: public String getMessage() {
058: if (contextBean == null) {
059: return getTemplate(Locale.getDefault());
060: }
061:
062: return Interpreter.evalToString(
063: getTemplate(Locale.getDefault()), contextBean);
064: } //end getMessage()
065:
066: /**
067: * Generates a message based upon the template of this message and the
068: * OGNL root passed in. If the OGNL root is null, then the OGNL root
069: * passed in to the setOgnlRoot() method is used. If that's null,
070: * then the template is returned unchanged.
071: *
072: * @param context The OGNL root to use for generating the message.
073: *
074: * @return Returns the message, which is constructed based upon the OGNL
075: * root passed in and the template.
076: */
077: public String getMessage(Object context, Locale locale) {
078: if (context == null) {
079: context = contextBean;
080: }
081:
082: if (context == null) {
083: return getTemplate(locale);
084: }
085:
086: return Interpreter.evalToString(getTemplate(locale), context);
087: } //end getMessage()
088:
089: /**
090: * Returns the OGNL root previously set using the setOgnlRoot() method.
091: *
092: * @return Returns the OGNL root for this message.
093: */
094: public Object getContextBean() {
095: return contextBean;
096: } //end getContextBean()
097:
098: /**
099: * Returns the template previously set during construction.
100: *
101: * @param locale The locale to use.
102: *
103: * @return Returns the template.
104: */
105: public String getTemplate(Locale locale) {
106: return template;
107: } //end getTemplate()
108: } //end MvelMessage
|