001/**
002 * Copyright 2005-2015 The Kuali Foundation
003 *
004 * Licensed under the Educational Community 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.opensource.org/licenses/ecl2.php
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 */
016package org.kuali.rice.krad.uif.util;
017
018import java.util.Collection;
019import java.util.Collections;
020
021import org.kuali.rice.krad.messages.Message;
022import org.kuali.rice.krad.messages.MessageProvider;
023import org.kuali.rice.krad.messages.MessageService;
024import org.kuali.rice.krad.messages.MessageServiceImpl;
025import org.kuali.rice.krad.messages.providers.ResourceMessageProvider;
026
027/**
028 * Provides mock messages for UIF unit tests.
029 * 
030 * @author Kuali Rice Team (rice.collab@kuali.org)
031 */
032public class MockMessageService implements MessageService {
033
034    private MessageService delegate;
035
036    private MessageService getDelegate() {
037        if (delegate != null) {
038            return delegate;
039        }
040
041        ResourceMessageProvider provider = new ResourceMessageProvider();
042        
043        MessageServiceImpl messageServiceDelegate = new MessageServiceImpl();
044        messageServiceDelegate.setMessageProviders(Collections.<MessageProvider> singletonList(provider));
045        delegate = messageServiceDelegate;
046        return delegate;
047    }
048    
049    /**
050     * @see org.kuali.rice.krad.messages.MessageService#getMessage(java.lang.String,
051     *      java.lang.String, java.lang.String)
052     */
053    @Override
054    public Message getMessage(String namespace, String component, String key) {
055        Message rv = getDelegate().getMessage(namespace, component, key);
056        if (rv != null) {
057            return rv;
058        }
059        
060        rv = new Message();
061        rv.setNamespaceCode(namespace);
062        rv.setComponentCode(component);
063        rv.setKey(key);
064        rv.setText(getMessageText(namespace, component, key));
065        return rv;
066    }
067
068    /**
069     * @see org.kuali.rice.krad.messages.MessageService#getMessage(java.lang.String,
070     *      java.lang.String, java.lang.String, java.lang.String)
071     */
072    @Override
073    public Message getMessage(String namespace, String component, String key, String locale) {
074        Message rv = getDelegate().getMessage(namespace, component, key, locale);
075        if (rv != null) {
076            return rv;
077        }
078
079        rv = new Message();
080        rv.setNamespaceCode(namespace);
081        rv.setComponentCode(component);
082        rv.setKey(key);
083        rv.setLocale(locale);
084        rv.setText(namespace + ":" + component + ":" + key + ":" + locale);
085        return rv;
086    }
087
088    /**
089     * @see org.kuali.rice.krad.messages.MessageService#getMessageText(java.lang.String,
090     *      java.lang.String, java.lang.String)
091     */
092    @Override
093    public String getMessageText(String namespace, String component, String key) {
094        String rv = getDelegate().getMessageText(namespace, component, key);
095        if (rv != null) {
096            return rv;
097        }
098
099        return namespace + ":" + component + ":" + key;
100    }
101
102    /**
103     * @see org.kuali.rice.krad.messages.MessageService#getMessageText(java.lang.String,
104     *      java.lang.String, java.lang.String, java.lang.String)
105     */
106    @Override
107    public String getMessageText(String namespace, String component, String key, String locale) {
108        String rv = getDelegate().getMessageText(namespace, component, key, locale);
109        if (rv != null) {
110            return rv;
111        }
112
113        return namespace + ":" + component + ":" + key + ":" + locale;
114    }
115
116    /**
117     * @see org.kuali.rice.krad.messages.MessageService#getMessageText(java.lang.String)
118     */
119    @Override
120    public String getMessageText(String key) {
121        String rv = getDelegate().getMessageText(key);
122        if (rv != null) {
123            return rv;
124        }
125
126        return key;
127    }
128
129    /**
130     * @see org.kuali.rice.krad.messages.MessageService#getMessageText(java.lang.String,
131     *      java.lang.String)
132     */
133    @Override
134    public String getMessageText(String key, String locale) {
135        String rv = getDelegate().getMessageText(key, locale);
136        if (rv != null) {
137            return rv;
138        }
139
140        return key + ":" + locale;
141    }
142
143    /**
144     * @see org.kuali.rice.krad.messages.MessageService#getAllMessagesForComponent(java.lang.String,
145     *      java.lang.String)
146     */
147    @Override
148    public Collection<Message> getAllMessagesForComponent(String namespace, String component) {
149        Collection<Message> rv = getDelegate().getAllMessagesForComponent(namespace, component);
150        if (rv != null) {
151            return rv;
152        }
153
154        Message rm = new Message();
155        rm.setNamespaceCode(namespace);
156        rm.setComponentCode(component);
157        rm.setText(namespace + ":" + component);
158        return Collections.singletonList(rm);
159    }
160
161    /**
162     * @see org.kuali.rice.krad.messages.MessageService#getAllMessagesForComponent(java.lang.String,
163     *      java.lang.String, java.lang.String)
164     */
165    @Override
166    public Collection<Message> getAllMessagesForComponent(String namespace, String component, String locale) {
167        Collection<Message> rv = getDelegate().getAllMessagesForComponent(namespace, component, locale);
168        if (rv != null) {
169            return rv;
170        }
171
172        Message rm = new Message();
173        rm.setNamespaceCode(namespace);
174        rm.setComponentCode(component);
175        rm.setLocale(locale);
176        rm.setText(namespace + ":" + component + ":" + locale);
177        return Collections.singletonList(rm);
178    }
179
180}