8172808: Handle sun.security.util.Resources bundle in ResourcesMgr in the same way as AuthResources
Reviewed-by: mullan
--- a/jdk/src/java.base/share/classes/sun/security/util/LocalizedMessage.java Wed Jan 25 15:53:17 2017 +0100
+++ b/jdk/src/java.base/share/classes/sun/security/util/LocalizedMessage.java Wed Jan 25 10:53:01 2017 -0800
@@ -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
--- a/jdk/src/java.base/share/classes/sun/security/util/ResourcesMgr.java Wed Jan 25 15:53:17 2017 +0100
+++ b/jdk/src/java.base/share/classes/sun/security/util/ResourcesMgr.java Wed Jan 25 10:53:01 2017 -0800
@@ -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 @@
*/
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);
+ }
+
+ 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(AUTH_RESOURCES, ResourceBundle::getBundle)
- .getString(s);
+ return bundles.computeIfAbsent(bundleName, ResourceBundle::getBundle);
}
}
--- a/jdk/test/sun/security/util/Resources/customSysClassLoader/CustomClassLoader.java Wed Jan 25 15:53:17 2017 +0100
+++ b/jdk/test/sun/security/util/Resources/customSysClassLoader/CustomClassLoader.java Wed Jan 25 10:53:01 2017 -0800
@@ -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