/* |
|
* reserved comment block |
|
* DO NOT REMOVE OR ALTER! |
|
*/ |
|
/** |
|
* Licensed to the Apache Software Foundation (ASF) under one |
|
* or more contributor license agreements. See the NOTICE file |
|
* distributed with this work for additional information |
|
* regarding copyright ownership. The ASF licenses this file |
|
* to you under the Apache License, Version 2.0 (the |
|
* "License"); you may not use this file except in compliance |
|
* with the License. You may obtain a copy of the License at |
|
* |
|
* http://www.apache.org/licenses/LICENSE-2.0 |
|
* |
|
* Unless required by applicable law or agreed to in writing, |
|
* software distributed under the License is distributed on an |
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
|
* KIND, either express or implied. See the License for the |
|
* specific language governing permissions and limitations |
|
* under the License. |
|
*/ |
|
package com.sun.org.apache.xml.internal.security.utils; |
|
import java.text.MessageFormat; |
|
import java.util.Locale; |
|
import java.util.ResourceBundle; |
|
/** |
|
* The Internationalization (I18N) pack. |
|
* |
|
*/ |
|
public class I18n { |
|
/** Field NOT_INITIALIZED_MSG */ |
|
public static final String NOT_INITIALIZED_MSG = |
|
"You must initialize the xml-security library correctly before you use it. " |
|
+ "Call the static method \"com.sun.org.apache.xml.internal.security.Init.init();\" to do that " |
|
+ "before you use any functionality from that library."; |
|
/** Field resourceBundle */ |
|
private static ResourceBundle resourceBundle; |
|
/** Field alreadyInitialized */ |
|
private static boolean alreadyInitialized = false; |
|
/** |
|
* Constructor I18n |
|
* |
|
*/ |
|
private I18n() { |
|
// we don't allow instantiation |
|
} |
|
/** |
|
* Method translate |
|
* |
|
* translates a message ID into an internationalized String, see alse |
|
* {@code XMLSecurityException.getExceptionMEssage()}. The strings are |
|
* stored in the {@code ResourceBundle}, which is identified in |
|
* {@code exceptionMessagesResourceBundleBase} |
|
* |
|
* @param message |
|
* @param args is an {@code Object[]} array of strings which are inserted into |
|
* the String which is retrieved from the {@code ResouceBundle} |
|
* @return message translated |
|
*/ |
|
public static String translate(String message, Object[] args) { |
|
return getExceptionMessage(message, args); |
|
} |
|
/** |
|
* Method translate |
|
* |
|
* translates a message ID into an internationalized String, see also |
|
* {@code XMLSecurityException.getExceptionMessage()} |
|
* |
|
* @param message |
|
* @return message translated |
|
*/ |
|
public static String translate(String message) { |
|
return getExceptionMessage(message); |
|
} |
|
/** |
|
* Method getExceptionMessage |
|
* |
|
* @param msgID |
|
* @return message translated |
|
* |
|
*/ |
|
public static String getExceptionMessage(String msgID) { |
|
try { |
|
return resourceBundle.getString(msgID); |
|
} catch (Throwable t) { |
|
if (com.sun.org.apache.xml.internal.security.Init.isInitialized()) { |
|
return "No message with ID \"" + msgID |
|
+ "\" found in resource bundle \"" |
|
+ Constants.exceptionMessagesResourceBundleBase + "\""; |
|
} |
|
return I18n.NOT_INITIALIZED_MSG; |
|
} |
|
} |
|
/** |
|
* Method getExceptionMessage |
|
* |
|
* @param msgID |
|
* @param originalException |
|
* @return message translated |
|
*/ |
|
public static String getExceptionMessage(String msgID, Exception originalException) { |
|
try { |
|
Object exArgs[] = { originalException.getMessage() }; |
|
return MessageFormat.format(resourceBundle.getString(msgID), exArgs); |
|
} catch (Throwable t) { |
|
if (com.sun.org.apache.xml.internal.security.Init.isInitialized()) { |
|
return "No message with ID \"" + msgID |
|
+ "\" found in resource bundle \"" |
|
+ Constants.exceptionMessagesResourceBundleBase |
|
+ "\". Original Exception was a " |
|
+ originalException.getClass().getName() + " and message " |
|
+ originalException.getMessage(); |
|
} |
|
return I18n.NOT_INITIALIZED_MSG; |
|
} |
|
} |
|
/** |
|
* Method getExceptionMessage |
|
* |
|
* @param msgID |
|
* @param exArgs |
|
* @return message translated |
|
*/ |
|
public static String getExceptionMessage(String msgID, Object exArgs[]) { |
|
try { |
|
return MessageFormat.format(resourceBundle.getString(msgID), exArgs); |
|
} catch (Throwable t) { |
|
if (com.sun.org.apache.xml.internal.security.Init.isInitialized()) { |
|
return "No message with ID \"" + msgID |
|
+ "\" found in resource bundle \"" |
|
+ Constants.exceptionMessagesResourceBundleBase + "\""; |
|
} |
|
return I18n.NOT_INITIALIZED_MSG; |
|
} |
|
} |
|
/** |
|
* Method init |
|
* |
|
* @param languageCode |
|
* @param countryCode |
|
*/ |
|
public static synchronized void init(String languageCode, String countryCode) { |
|
if (alreadyInitialized) { |
|
return; |
|
} |
|
I18n.resourceBundle = |
|
ResourceBundle.getBundle( |
|
Constants.exceptionMessagesResourceBundleBase, |
|
new Locale(languageCode, countryCode) |
|
); |
|
alreadyInitialized = true; |
|
} |
|
/** |
|
* Method init |
|
* @param resourceBundle |
|
*/ |
|
public static synchronized void init(ResourceBundle resourceBundle) { |
|
if (alreadyInitialized) { |
|
return; |
|
} |
|
I18n.resourceBundle = resourceBundle; |
|
alreadyInitialized = true; |
|
} |
|
} |