diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/nls/NLS.java b/org.eclipse.jgit/src/org/eclipse/jgit/nls/NLS.java index 3c0d839df..89a87af9e 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/nls/NLS.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/nls/NLS.java @@ -74,12 +74,7 @@ public class NLS { */ public static final Locale ROOT_LOCALE = new Locale("", "", ""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - private static final InheritableThreadLocal local = new InheritableThreadLocal() { - @Override - protected NLS initialValue() { - return new NLS(Locale.getDefault()); - } - }; + private static final InheritableThreadLocal local = new InheritableThreadLocal<>(); /** * Sets the locale for the calling thread. @@ -99,10 +94,19 @@ public class NLS { /** * Sets the JVM default locale as the locale for the calling thread. *

- * Semantically this is equivalent to NLS.setLocale(Locale.getDefault()). + * Semantically this is equivalent to + * NLS.setLocale(Locale.getDefault()). */ public static void useJVMDefaultLocale() { - local.set(new NLS(Locale.getDefault())); + useJVMDefaultInternal(); + } + + // TODO(ms): change signature of public useJVMDefaultLocale() in 5.0 to get + // rid of this internal method + private static NLS useJVMDefaultInternal() { + NLS b = new NLS(Locale.getDefault()); + local.set(b); + return b; } /** @@ -122,7 +126,11 @@ public class NLS { * {@link org.eclipse.jgit.errors.TranslationStringMissingException} */ public static T getBundleFor(Class type) { - return local.get().get(type); + NLS b = local.get(); + if (b == null) { + b = useJVMDefaultInternal(); + } + return b.get(type); } final private Locale locale;