org.eclipse.persistence.exceptions.i18n.ExceptionMessageGenerator Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of eclipselink Show documentation
Show all versions of eclipselink Show documentation
EclipseLink build based upon Git transaction 346465e
/*******************************************************************************
* Copyright (c) 1998, 2013 Oracle and/or its affiliates. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* Oracle - initial API and implementation from Oracle TopLink
******************************************************************************/
package org.eclipse.persistence.exceptions.i18n;
import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle;
import java.util.Vector;
import org.eclipse.persistence.internal.helper.ConversionManager;
import org.eclipse.persistence.internal.helper.Helper;
/**
* INTERNAL:
* Utility class to generate exception messages using ResourceBundles.
*
* Creation date: (12/7/00 10:30:38 AM)
* @author: Rick Barkhouse
*/
public class ExceptionMessageGenerator {
/**
* Return the loader for loading the resource bundles.
*/
public static ClassLoader getLoader() {
ClassLoader loader = ExceptionMessageGenerator.class.getClassLoader();
if (loader == null) {
loader = ConversionManager.getDefaultManager().getLoader();
}
return loader;
}
/**
* Return the message for the given exception class and error number.
*/
public static String buildMessage(Class exceptionClass, int errorNumber, Object[] arguments) {
final String CR = System.getProperty("line.separator");
String shortClassName = Helper.getShortClassName(exceptionClass);
String message = "";
ResourceBundle bundle = null;
// JDK 1.1 MessageFormat can't handle null arguments
for (int i = 0; i < arguments.length; i++) {
if (arguments[i] == null) {
arguments[i] = "null";
}
}
bundle = ResourceBundle.getBundle("org.eclipse.persistence.exceptions.i18n." + shortClassName + "Resource", Locale.getDefault(), getLoader());
try {
message = bundle.getString(String.valueOf(errorNumber));
} catch (java.util.MissingResourceException mre) {
// Found bundle, but couldn't find exception translation.
// Get the current language's NoExceptionTranslationForThisLocale message.
bundle = ResourceBundle.getBundle("org.eclipse.persistence.exceptions.i18n.ExceptionResource", Locale.getDefault(), getLoader());
String noTranslationMessage = bundle.getString("NoExceptionTranslationForThisLocale");
Object[] args = { CR };
return format(message, arguments) + format(noTranslationMessage, args);
}
return format(message, arguments);
}
/**
* Return the formatted message for the given exception class and error number.
*/
//Bug#4619864 Catch any exception during formatting and try to throw that exception. One possibility is toString() to an argument
protected static String format(String message, Object[] arguments) {
try {
return MessageFormat.format(message, arguments);
} catch (Exception ex) {
ResourceBundle bundle = null;
bundle = ResourceBundle.getBundle("org.eclipse.persistence.exceptions.i18n.ExceptionResource", Locale.getDefault(), getLoader());
String errorMessage = bundle.getString("ErrorFormattingMessage");
Vector vec = new Vector();
if (arguments != null) {
for (int index = 0; index < arguments.length; index++) {
try {
vec.add(arguments[index].toString());
} catch (Exception ex2) {
vec.add(ex2);
}
}
}
return MessageFormat.format(errorMessage, new Object[] {message, vec});
}
}
/**
* Get one of the generic headers used for the exception's toString().
*
* E.g., "EXCEPTION DESCRIPTION: ", "ERROR CODE: ", etc.
*/
public static String getHeader(String headerLabel) {
ResourceBundle bundle = null;
try {
bundle = ResourceBundle.getBundle("org.eclipse.persistence.exceptions.i18n.ExceptionResource", Locale.getDefault(), getLoader());
return bundle.getString(headerLabel);
} catch (java.util.MissingResourceException mre) {
return "[" + headerLabel + "]";
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy