8172808: Handle sun.security.util.Resources bundle in ResourcesMgr in the same way as AuthResources
Reviewed-by: mullan
This commit is contained in:
parent
0476aeb0c7
commit
68fe02afb2
@ -4,7 +4,9 @@
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -34,37 +34,24 @@ import jdk.internal.misc.VM;
|
||||
*/
|
||||
public class ResourcesMgr {
|
||||
// intended for java.security, javax.security and sun.security resources
|
||||
private final static String RESOURCES = "sun.security.util.Resources";
|
||||
private final static String AUTH_RESOURCES = "sun.security.util.AuthResources";
|
||||
|
||||
private final static Map<String, ResourceBundle> bundles = new ConcurrentHashMap<>();
|
||||
|
||||
public static String getString(String s) {
|
||||
ResourceBundle bundle = bundles.get(RESOURCES);
|
||||
if (bundle == null) {
|
||||
|
||||
// only load if/when needed
|
||||
bundle = java.security.AccessController.doPrivileged(
|
||||
new java.security.PrivilegedAction<java.util.ResourceBundle>() {
|
||||
public java.util.ResourceBundle run() {
|
||||
return (java.util.ResourceBundle.getBundle
|
||||
("sun.security.util.Resources"));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return bundle.getString(s);
|
||||
return getBundle("sun.security.util.Resources").getString(s);
|
||||
}
|
||||
|
||||
public static String getAuthResourceString(String s) {
|
||||
if (VM.initLevel() == 3) {
|
||||
// cannot trigger loading of any resource bundle as
|
||||
// it depends on the system class loader fully initialized.
|
||||
throw new InternalError("system class loader is being initialized");
|
||||
return getBundle("sun.security.util.AuthResources").getString(s);
|
||||
}
|
||||
|
||||
return bundles.computeIfAbsent(AUTH_RESOURCES, ResourceBundle::getBundle)
|
||||
.getString(s);
|
||||
private static ResourceBundle getBundle(String bundleName) {
|
||||
if (!VM.isBooted()) {
|
||||
// don't expect this be called before the system is fully initialized.
|
||||
// This triggers loading of any resource bundle that should be
|
||||
// be done during initialization of system class loader.
|
||||
throw new InternalError("Expected to use ResourceBundle only after booted");
|
||||
}
|
||||
return bundles.computeIfAbsent(bundleName, ResourceBundle::getBundle);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -5,9 +5,7 @@
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
|
Loading…
x
Reference in New Issue
Block a user