From 904dc6fa98354446d1c5f41f0372b6e28a3aa744 Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Thu, 26 Jan 2012 18:36:22 +0400 Subject: [PATCH] getMessage is not that costly when invoked via e.g. JavaErrorMessages.message(xxx); --- platform/util/src/com/intellij/AbstractBundle.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/platform/util/src/com/intellij/AbstractBundle.java b/platform/util/src/com/intellij/AbstractBundle.java index 9230d95e1776..0629b8f0c2f6 100644 --- a/platform/util/src/com/intellij/AbstractBundle.java +++ b/platform/util/src/com/intellij/AbstractBundle.java @@ -21,6 +21,7 @@ import com.intellij.util.containers.FactoryMap; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; +import java.lang.ref.Reference; import java.lang.ref.SoftReference; import java.util.Locale; import java.util.ResourceBundle; @@ -43,6 +44,7 @@ import java.util.ResourceBundle; * @since 8/1/11 2:37 PM */ public abstract class AbstractBundle { + private Reference myBundle; @NonNls private final String myPathToBundle; protected AbstractBundle(@NonNls @NotNull String pathToBundle) { @@ -54,7 +56,13 @@ public abstract class AbstractBundle { } private ResourceBundle getBundle() { - return getResourceBundle(myPathToBundle, getClass().getClassLoader()); + ResourceBundle bundle = null; + if (myBundle != null) bundle = myBundle.get(); + if (bundle == null) { + bundle = getResourceBundle(myPathToBundle, getClass().getClassLoader()); + myBundle = new SoftReference(bundle); + } + return bundle; } @SuppressWarnings("MismatchedQueryAndUpdateOfCollection")