1 /* 2 * reserved comment block 3 * DO NOT REMOVE OR ALTER! 4 */ 5 /* 6 * Licensed to the Apache Software Foundation (ASF) under one or more 7 * contributor license agreements. See the NOTICE file distributed with 8 * this work for additional information regarding copyright ownership. 9 * The ASF licenses this file to You under the Apache License, Version 2.0 10 * (the "License"); you may not use this file except in compliance with 11 * the License. You may obtain a copy of the License at 12 * 13 * http://www.apache.org/licenses/LICENSE-2.0 14 * 15 * Unless required by applicable law or agreed to in writing, software 16 * distributed under the License is distributed on an "AS IS" BASIS, 17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 * See the License for the specific language governing permissions and 19 * limitations under the License. 20 */ 21 22 package com.sun.org.apache.xerces.internal.xpointer; 23 24 import java.util.Locale; 25 import java.util.MissingResourceException; 26 import java.util.ResourceBundle; 27 import java.util.PropertyResourceBundle; 28 import com.sun.org.apache.xerces.internal.util.MessageFormatter; 29 import com.sun.org.apache.xerces.internal.utils.SecuritySupport; 30 31 /** 32 * XPointerMessageFormatter provides error messages for the XPointer Framework 33 * and element() Scheme Recommendations. 34 * 35 * @xerces.internal 36 * 37 * @version $Id: XPointerMessageFormatter.java,v 1.5 2010-11-01 04:40:26 joehw Exp $ 38 */ 39 final class XPointerMessageFormatter implements MessageFormatter { 40 41 public static final String XPOINTER_DOMAIN = "http://www.w3.org/TR/XPTR"; 42 43 // private objects to cache the locale and resource bundle 44 private Locale fLocale = null; 45 46 private ResourceBundle fResourceBundle = null; 47 48 /** 49 * Formats a message with the specified arguments using the given locale 50 * information. 51 * 52 * @param locale 53 * The locale of the message. 54 * @param key 55 * The message key. 56 * @param arguments 57 * The message replacement text arguments. The order of the 58 * arguments must match that of the placeholders in the actual 59 * message. 60 * 61 * @return Returns the formatted message. 62 * 63 * @throws MissingResourceException 64 * Thrown if the message with the specified key cannot be found. 65 */ 66 public String formatMessage(Locale locale, String key, Object[] arguments) 67 throws MissingResourceException { 68 69 if (fResourceBundle == null || locale != fLocale) { 70 if (locale != null) { 71 fResourceBundle = SecuritySupport.getResourceBundle( 72 "com.sun.org.apache.xerces.internal.impl.msg.XPointerMessages", locale); 73 // memorize the most-recent locale 74 fLocale = locale; 75 } 76 if (fResourceBundle == null) 77 fResourceBundle = SecuritySupport.getResourceBundle( 78 "com.sun.org.apache.xerces.internal.impl.msg.XPointerMessages"); 79 } 80 81 String msg = fResourceBundle.getString(key); 82 if (arguments != null) { 83 try { 84 msg = java.text.MessageFormat.format(msg, arguments); 85 } catch (Exception e) { 86 msg = fResourceBundle.getString("FormatFailed"); 87 msg += " " + fResourceBundle.getString(key); 88 } 89 } 90 91 if (msg == null) { 92 msg = fResourceBundle.getString("BadMessageKey"); 93 throw new MissingResourceException(msg, 94 "com.sun.org.apache.xerces.internal.impl.msg.XPointerMessages", key); 95 } 96 97 return msg; 98 } 99 }