/* * RHQ Management Platform * Copyright (C) 2005-2008 Red Hat, Inc. * All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.rhq.enterprise.gui.navigation; import java.util.MissingResourceException; import java.util.ResourceBundle; import org.apache.struts.util.MessageResources; /** * Based on @see net.sf.navigator.displayer.ListMenuDisplayer * * @author <a href="ccrouch@jboss.com">Charles Crouch</a> */ public class ListMenuDisplayer extends net.sf.navigator.displayer.ListMenuDisplayer { private static final String STRUTS_MESSAGE_KEY_NOT_FOUND_PREFIX = "???"; private static final String STRUTS_MESSAGE_KEY_NOT_FOUND_SUFFIX = "???"; /** * Get the title key from the bundle (if it exists). This method is public to expose it to Velocity. Override this * method from MessageResourcesMenuDisplayer, until bug 1259076 is fixed: * http://sourceforge.net/tracker/index.php?func=detail&aid=1259076&group_id=48726&atid=453974 * * @param key the key */ public String getMessage(String key) { String message = null; if ((messages != null) && (messages instanceof ResourceBundle)) { if (log.isDebugEnabled()) { log.debug("Looking up string '" + key + "' in ResourceBundle"); } ResourceBundle bundle = (ResourceBundle) messages; try { message = bundle.getString(key); } catch (MissingResourceException mre) { message = null; } } else if (messages != null) { // if (log.isDebugEnabled()) { // log.debug("Looking up message '" + key + "' in Struts' MessageResources"); // } // this is here to prevent a non-struts webapp from throwing a NoClassDefFoundError if ("org.apache.struts.util.PropertyMessageResources".equals(messages.getClass().getName())) { MessageResources resources = (MessageResources) messages; try { if (locale != null) { //Method method = clazz.getMethod("getMessage", new Class[] {Locale.class, String.class}); message = resources.getMessage(locale, key); } else { message = resources.getMessage(key); } } catch (Throwable t) { message = null; } if ((message != null) && message.startsWith(STRUTS_MESSAGE_KEY_NOT_FOUND_PREFIX) && message.endsWith(STRUTS_MESSAGE_KEY_NOT_FOUND_SUFFIX)) { message = null; } } } else { message = key; } if (message == null) { message = key; } return message; } }