001/* 002 * This library is part of OpenCms - 003 * the Open Source Content Management System 004 * 005 * Copyright (c) Alkacon Software GmbH & Co. KG (http://www.alkacon.com) 006 * 007 * This library is free software; you can redistribute it and/or 008 * modify it under the terms of the GNU Lesser General Public 009 * License as published by the Free Software Foundation; either 010 * version 2.1 of the License, or (at your option) any later version. 011 * 012 * This library is distributed in the hope that it will be useful, 013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 015 * Lesser General Public License for more details. 016 * 017 * For further information about Alkacon Software, please see the 018 * company website: http://www.alkacon.com 019 * 020 * For further information about OpenCms, please see the 021 * project website: http://www.opencms.org 022 * 023 * You should have received a copy of the GNU Lesser General Public 024 * License along with this library; if not, write to the Free Software 025 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 026 */ 027 028package org.opencms.loader; 029 030import org.opencms.i18n.I_CmsMessageContainer; 031import org.opencms.json.JSONObject; 032 033import java.util.Locale; 034 035/** 036 * Simple JSON-based message container.<p> 037 * 038 * This message container will accept an Object which may either be a simple string (in which case 039 * this string will always be returned as the message), or a JSONObject which has locale strings as 040 * keys and the corresponding message strings as values. 041 */ 042public class CmsJsonMessageContainer implements I_CmsMessageContainer { 043 044 /** The JSON value for this message container. */ 045 private Object m_jsonValue; 046 047 /** 048 * Creates a new instance.<p> 049 * 050 * @param jsonValue the JSON value containing the message(s).<p> 051 */ 052 public CmsJsonMessageContainer(Object jsonValue) { 053 054 m_jsonValue = jsonValue; 055 056 } 057 058 /** 059 * @see org.opencms.i18n.I_CmsMessageContainer#key(java.util.Locale) 060 */ 061 public String key(Locale locale) { 062 063 if (m_jsonValue instanceof String) { 064 return (String)m_jsonValue; 065 } else if (m_jsonValue instanceof JSONObject) { 066 JSONObject localeMap = (JSONObject)m_jsonValue; 067 for (String key : new String[] { 068 locale.toString(), 069 "en", 070 localeMap.keySet().size() > 0 ? (localeMap.keySet().iterator().next()) : ""}) { 071 if (localeMap.has(key)) { 072 return "" + localeMap.optString(key); 073 } 074 } 075 } 076 return "??? not found ???"; 077 } 078}