From fc3ae73708730784d80c14fd471a79b97951aa11 Mon Sep 17 00:00:00 2001 From: Radek Felcman Date: Thu, 13 Jun 2024 11:01:53 +0200 Subject: [PATCH] LoggingLocalization performance improvement - backport from master (#2171) Signed-off-by: Radek Felcman (cherry picked from commit f7bc1d24d04a686406001ebc0cc8afd200e18fba) --- .../junit/localization/LocalizationTest.java | 5 ++++- .../localization/EclipseLinkLocalization.java | 22 +++++++++++++------ 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/foundation/eclipselink.core.test/src/test/java/org/eclipse/persistence/testing/tests/junit/localization/LocalizationTest.java b/foundation/eclipselink.core.test/src/test/java/org/eclipse/persistence/testing/tests/junit/localization/LocalizationTest.java index 7d9a4e61a9d..a3041d0dcb6 100644 --- a/foundation/eclipselink.core.test/src/test/java/org/eclipse/persistence/testing/tests/junit/localization/LocalizationTest.java +++ b/foundation/eclipselink.core.test/src/test/java/org/eclipse/persistence/testing/tests/junit/localization/LocalizationTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2024 Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2020 IBM Corporation. All rights reserved. * * This program and the accompanying materials are made available under the @@ -17,6 +17,7 @@ import org.junit.Assert; import org.junit.Test; +import org.eclipse.persistence.internal.localization.EclipseLinkLocalization; import org.eclipse.persistence.internal.localization.LoggingLocalization; public class LocalizationTest { @@ -27,5 +28,7 @@ public void test() { "EclipseLink, version: EXAMPLE", LoggingLocalization.buildMessage("topLink_version", new Object[] { "EXAMPLE" })); Assert.assertEquals("LoggingLocalization.buildMessage could not find the correct translation.", "message_not_exist (There is no English translation for this message.)", LoggingLocalization.buildMessage("message_not_exist")); + Assert.assertEquals("EclipseLinkLocalization.buildMessage could not find the correct translation.", + "somekey1 (There is no English translation for this message.)", EclipseLinkLocalization.buildMessage("AAAAUnknownClass", "somekey1", null, true)); } } diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/localization/EclipseLinkLocalization.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/localization/EclipseLinkLocalization.java index 637c4c2dd87..be5a9d19378 100644 --- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/localization/EclipseLinkLocalization.java +++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/localization/EclipseLinkLocalization.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2024 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 v. 2.0 which is available at @@ -29,6 +29,9 @@ */ public abstract class EclipseLinkLocalization { + // Get the current language's NoTranslationForThisLocale message. + private static final String NO_TRANSLATION_MESSAGE = ResourceBundle.getBundle("org.eclipse.persistence.internal.localization.i18n.EclipseLinkLocalizationResource", Locale.getDefault()).getString("NoTranslationForThisLocale"); + /** * Return the message for the given exception class and error number. */ @@ -60,13 +63,18 @@ public static String buildMessage(String localizationClassName, String key, Obje } catch (java.util.MissingResourceException mre) { if (translate) { // Found bundle, but couldn't find translation. - // Get the current language's NoTranslationForThisLocale message. - bundle = ResourceBundle.getBundle("org.eclipse.persistence.internal.localization.i18n.EclipseLinkLocalizationResource", Locale.getDefault()); - String noTranslationMessage = bundle.getString("NoTranslationForThisLocale"); - return MessageFormat.format(message, arguments) + noTranslationMessage; - } + // Use the current language's NoTranslationForThisLocale message. + if (arguments == null) { + return message + NO_TRANSLATION_MESSAGE; + } else { + return MessageFormat.format(message, arguments) + NO_TRANSLATION_MESSAGE; + } } + } + if (arguments == null) { + return message; + } else { + return MessageFormat.format(message, arguments); } - return MessageFormat.format(message, arguments); } }