From 2b5207e74decb484e85ef01e4dd6d30f2d5e1d4c Mon Sep 17 00:00:00 2001 From: Claes Redestad Date: Thu, 21 Apr 2016 13:39:53 +0200 Subject: [PATCH] 8154231: Simplify access to System properties from JDK code Reviewed-by: rriggs, chegar, weijun --- .../sun/nio/fs/LinuxFileSystemProvider.java | 4 +- .../sun/nio/ch/KQueueArrayWrapper.java | 8 +-- .../sun/nio/fs/MacOSXFileSystemProvider.java | 5 +- .../java.base/share/classes/java/io/File.java | 5 +- .../classes/java/lang/ProcessBuilder.java | 13 ++-- .../classes/java/lang/StackStreamFactory.java | 12 +--- .../invoke/InnerClassLambdaMetafactory.java | 3 +- .../java/lang/invoke/MethodHandleStatics.java | 51 +++++++--------- .../java/lang/invoke/StringConcatFactory.java | 18 +++--- .../java/lang/module/ModuleFinder.java | 3 +- .../classes/java/lang/reflect/Proxy.java | 7 +-- .../net/AbstractPlainDatagramSocketImpl.java | 5 +- .../share/classes/java/net/InetAddress.java | 7 +-- .../classes/java/net/SocksSocketImpl.java | 7 +-- .../java.base/share/classes/java/net/URL.java | 9 +-- .../share/classes/java/net/URLConnection.java | 5 +- .../share/classes/java/net/URLEncoder.java | 11 +--- .../classes/java/nio/charset/Charset.java | 7 +-- .../classes/java/nio/file/TempFileHelper.java | 3 +- .../share/classes/java/util/Locale.java | 34 +++++------ .../java/util/PropertyResourceBundle.java | 5 +- .../share/classes/java/util/TimeZone.java | 6 +- .../share/classes/java/util/jar/JarFile.java | 9 ++- .../share/classes/java/util/jar/Pack200.java | 4 +- .../util/regex/PatternSyntaxException.java | 3 +- .../java/util/zip/ZipOutputStream.java | 5 +- .../javax/net/ssl/SSLSocketFactory.java | 6 +- .../java.base/share/classes/jdk/Version.java | 10 +-- .../jdk/internal/loader/URLClassPath.java | 15 ++--- .../internal/logger/LoggerFinderLoader.java | 11 ++-- .../internal/logger/SimpleConsoleLogger.java | 10 +-- .../jdk/internal/reflect/Reflection.java | 16 ++--- .../internal/reflect/ReflectionFactory.java | 61 +++++++++---------- .../classes/sun/net/ResourceManager.java | 5 +- .../share/classes/sun/net/sdp/SdpSupport.java | 4 +- .../classes/sun/net/smtp/SmtpClient.java | 8 +-- .../classes/sun/net/www/MimeLauncher.java | 4 +- .../classes/sun/net/www/http/HttpClient.java | 14 ++--- .../www/protocol/ftp/FtpURLConnection.java | 10 +-- .../protocol/http/AuthenticationHeader.java | 6 +- .../www/protocol/http/HttpURLConnection.java | 46 ++++++-------- .../net/www/protocol/https/HttpsClient.java | 12 ++-- .../jrt/JavaRuntimeURLConnection.java | 10 +-- .../sun/net/www/protocol/netdoc/Handler.java | 9 ++- .../classes/sun/nio/ch/FileChannelImpl.java | 5 +- .../share/classes/sun/nio/ch/Net.java | 21 ++----- .../share/classes/sun/nio/ch/Util.java | 11 +--- .../sun/nio/cs/StandardCharsets.java.template | 13 +--- .../share/classes/sun/nio/fs/Util.java | 5 +- .../sun/security/action/GetIntegerAction.java | 39 +++++++++++- .../security/action/GetPropertyAction.java | 60 +++++++++++++++++- .../sun/security/provider/DSAKeyFactory.java | 3 +- .../sun/security/rsa/RSAKeyFactory.java | 5 +- .../ssl/ClientKeyExchangeService.java | 5 +- .../share/classes/sun/security/ssl/Debug.java | 7 +-- .../sun/security/ssl/SSLContextImpl.java | 3 +- .../sun/security/ssl/ServerHandshaker.java | 4 +- .../security/ssl/StatusResponseManager.java | 4 +- .../classes/sun/security/util/Debug.java | 10 ++- .../util/calendar/LocalGregorianCalendar.java | 5 +- .../sun/util/calendar/ZoneInfoFile.java | 11 ++-- .../provider/LocaleProviderAdapter.java | 5 +- .../classes/sun/nio/fs/SolarisFileSystem.java | 4 +- .../sun/nio/fs/SolarisFileSystemProvider.java | 5 +- .../unix/classes/java/io/UnixFileSystem.java | 12 ++-- .../unix/classes/java/lang/ProcessImpl.java | 14 ++--- .../net/DefaultDatagramSocketImplFactory.java | 5 +- .../unix/classes/sun/net/sdp/SdpProvider.java | 7 +-- .../http/ntlm/NTLMAuthentication.java | 13 ++-- .../DefaultAsynchronousChannelProvider.java | 4 +- .../ch/UnixAsynchronousSocketChannelImpl.java | 5 +- .../sun/nio/fs/DefaultFileSystemProvider.java | 4 +- .../classes/sun/nio/fs/UnixFileSystem.java | 5 +- .../classes/java/io/WinNTFileSystem.java | 9 ++- .../net/DefaultDatagramSocketImplFactory.java | 13 ++-- .../http/ntlm/NTLMAuthentication.java | 6 +- .../sun/nio/ch/FileDispatcherImpl.java | 11 +--- .../sun/nio/fs/WindowsFileAttributes.java | 5 +- 78 files changed, 391 insertions(+), 453 deletions(-) diff --git a/jdk/src/java.base/linux/classes/sun/nio/fs/LinuxFileSystemProvider.java b/jdk/src/java.base/linux/classes/sun/nio/fs/LinuxFileSystemProvider.java index f6abaf69d7e..8a2307d2ff6 100644 --- a/jdk/src/java.base/linux/classes/sun/nio/fs/LinuxFileSystemProvider.java +++ b/jdk/src/java.base/linux/classes/sun/nio/fs/LinuxFileSystemProvider.java @@ -102,8 +102,8 @@ public class LinuxFileSystemProvider extends UnixFileSystemProvider { @Override FileTypeDetector getFileTypeDetector() { - Path userMimeTypes = Paths.get(AccessController.doPrivileged( - new GetPropertyAction("user.home")), ".mime.types"); + String userHome = GetPropertyAction.getProperty("user.home"); + Path userMimeTypes = Paths.get(userHome, ".mime.types"); Path etcMimeTypes = Paths.get("/etc/mime.types"); return chain(new GioFileTypeDetector(), diff --git a/jdk/src/java.base/macosx/classes/sun/nio/ch/KQueueArrayWrapper.java b/jdk/src/java.base/macosx/classes/sun/nio/ch/KQueueArrayWrapper.java index 2aa3fbcbaa2..7598cf9e37f 100644 --- a/jdk/src/java.base/macosx/classes/sun/nio/ch/KQueueArrayWrapper.java +++ b/jdk/src/java.base/macosx/classes/sun/nio/ch/KQueueArrayWrapper.java @@ -32,9 +32,9 @@ package sun.nio.ch; import java.io.IOException; -import java.io.FileDescriptor; import java.util.Iterator; import java.util.LinkedList; +import sun.security.action.GetPropertyAction; /* * struct kevent { // 32-bit 64-bit @@ -84,10 +84,8 @@ class KQueueArrayWrapper { static { IOUtil.load(); initStructSizes(); - String datamodel = java.security.AccessController.doPrivileged( - new sun.security.action.GetPropertyAction("sun.arch.data.model") - ); - is64bit = datamodel.equals("64"); + String datamodel = GetPropertyAction.getProperty("sun.arch.data.model"); + is64bit = "64".equals(datamodel); } KQueueArrayWrapper() { diff --git a/jdk/src/java.base/macosx/classes/sun/nio/fs/MacOSXFileSystemProvider.java b/jdk/src/java.base/macosx/classes/sun/nio/fs/MacOSXFileSystemProvider.java index 0dcee95bfc3..6b9a56a9fa7 100644 --- a/jdk/src/java.base/macosx/classes/sun/nio/fs/MacOSXFileSystemProvider.java +++ b/jdk/src/java.base/macosx/classes/sun/nio/fs/MacOSXFileSystemProvider.java @@ -28,7 +28,6 @@ package sun.nio.fs; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.spi.FileTypeDetector; -import java.security.AccessController; import sun.security.action.GetPropertyAction; /** @@ -47,8 +46,8 @@ public class MacOSXFileSystemProvider extends BsdFileSystemProvider { @Override FileTypeDetector getFileTypeDetector() { - Path userMimeTypes = Paths.get(AccessController.doPrivileged( - new GetPropertyAction("user.home")), ".mime.types"); + Path userMimeTypes = Paths.get( + GetPropertyAction.getProperty("user.home"), ".mime.types"); return chain(new MimeTypesFileTypeDetector(userMimeTypes), new UTIFileTypeDetector()); diff --git a/jdk/src/java.base/share/classes/java/io/File.java b/jdk/src/java.base/share/classes/java/io/File.java index 089171bab9e..7f23340920b 100644 --- a/jdk/src/java.base/share/classes/java/io/File.java +++ b/jdk/src/java.base/share/classes/java/io/File.java @@ -31,7 +31,6 @@ import java.net.MalformedURLException; import java.net.URISyntaxException; import java.util.List; import java.util.ArrayList; -import java.security.AccessController; import java.security.SecureRandom; import java.nio.file.Path; import java.nio.file.FileSystems; @@ -1896,8 +1895,8 @@ public class File private TempDirectory() { } // temporary directory location - private static final File tmpdir = new File(AccessController - .doPrivileged(new GetPropertyAction("java.io.tmpdir"))); + private static final File tmpdir = new File( + GetPropertyAction.getProperty("java.io.tmpdir")); static File location() { return tmpdir; } diff --git a/jdk/src/java.base/share/classes/java/lang/ProcessBuilder.java b/jdk/src/java.base/share/classes/java/lang/ProcessBuilder.java index ebd47fcfe87..638be0e9f72 100644 --- a/jdk/src/java.base/share/classes/java/lang/ProcessBuilder.java +++ b/jdk/src/java.base/share/classes/java/lang/ProcessBuilder.java @@ -30,13 +30,12 @@ import java.io.FileDescriptor; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.nio.channels.Pipe; import java.util.Arrays; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.security.AccessController; -import java.security.PrivilegedAction; +import sun.security.action.GetPropertyAction; + /** * This class is used to create operating system processes. * @@ -468,11 +467,9 @@ public final class ProcessBuilder * @since 1.7 */ public abstract static class Redirect { - private static final File NULL_FILE = AccessController.doPrivileged( - (PrivilegedAction) () -> { - return new File((System.getProperty("os.name") - .startsWith("Windows") ? "NUL" : "/dev/null")); - } + private static final File NULL_FILE = new File( + (GetPropertyAction.getProperty("os.name") + .startsWith("Windows") ? "NUL" : "/dev/null") ); /** diff --git a/jdk/src/java.base/share/classes/java/lang/StackStreamFactory.java b/jdk/src/java.base/share/classes/java/lang/StackStreamFactory.java index 8dccef351fe..73446062bea 100644 --- a/jdk/src/java.base/share/classes/java/lang/StackStreamFactory.java +++ b/jdk/src/java.base/share/classes/java/lang/StackStreamFactory.java @@ -30,8 +30,6 @@ import java.lang.StackWalker.StackFrame; import java.lang.annotation.Native; import java.lang.reflect.Method; -import java.security.AccessController; -import java.security.PrivilegedAction; import java.util.HashSet; import java.util.NoSuchElementException; import java.util.Objects; @@ -41,6 +39,7 @@ import java.util.function.Consumer; import java.util.function.Function; import java.util.stream.Stream; import java.util.stream.StreamSupport; +import sun.security.action.GetPropertyAction; import static java.lang.StackStreamFactory.WalkerState.*; @@ -990,14 +989,9 @@ final class StackStreamFactory { } private static boolean getProperty(String key, boolean value) { - String s = AccessController.doPrivileged(new PrivilegedAction<>() { - @Override - public String run() { - return System.getProperty(key); - } - }); + String s = GetPropertyAction.getProperty(key); if (s != null) { - return Boolean.valueOf(s); + return Boolean.parseBoolean(s); } return value; } diff --git a/jdk/src/java.base/share/classes/java/lang/invoke/InnerClassLambdaMetafactory.java b/jdk/src/java.base/share/classes/java/lang/invoke/InnerClassLambdaMetafactory.java index 739573507ab..a0df622f501 100644 --- a/jdk/src/java.base/share/classes/java/lang/invoke/InnerClassLambdaMetafactory.java +++ b/jdk/src/java.base/share/classes/java/lang/invoke/InnerClassLambdaMetafactory.java @@ -88,8 +88,7 @@ import static jdk.internal.org.objectweb.asm.Opcodes.*; static { final String key = "jdk.internal.lambda.dumpProxyClasses"; - String path = AccessController.doPrivileged( - new GetPropertyAction(key)); + String path = GetPropertyAction.getProperty(key); dumper = (null == path) ? null : ProxyClassesDumper.getInstance(path); } diff --git a/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandleStatics.java b/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandleStatics.java index df1cba46fa8..4fbc1d84671 100644 --- a/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandleStatics.java +++ b/jdk/src/java.base/share/classes/java/lang/invoke/MethodHandleStatics.java @@ -25,9 +25,9 @@ package java.lang.invoke; -import java.security.AccessController; -import java.security.PrivilegedAction; +import java.util.Properties; import jdk.internal.misc.Unsafe; +import sun.security.action.GetPropertyAction; /** * This class consists exclusively of static names internal to the @@ -53,32 +53,27 @@ import jdk.internal.misc.Unsafe; static final boolean VAR_HANDLE_GUARDS; static { - final Object[] values = new Object[10]; - AccessController.doPrivileged(new PrivilegedAction<>() { - public Void run() { - values[0] = Boolean.getBoolean("java.lang.invoke.MethodHandle.DEBUG_NAMES"); - values[1] = Boolean.getBoolean("java.lang.invoke.MethodHandle.DUMP_CLASS_FILES"); - values[2] = Boolean.getBoolean("java.lang.invoke.MethodHandle.TRACE_INTERPRETER"); - values[3] = Boolean.getBoolean("java.lang.invoke.MethodHandle.TRACE_METHOD_LINKAGE"); - values[4] = Integer.getInteger("java.lang.invoke.MethodHandle.COMPILE_THRESHOLD", 0); - values[5] = Integer.getInteger("java.lang.invoke.MethodHandle.DONT_INLINE_THRESHOLD", 30); - values[6] = Integer.getInteger("java.lang.invoke.MethodHandle.PROFILE_LEVEL", 0); - values[7] = Boolean.parseBoolean(System.getProperty("java.lang.invoke.MethodHandle.PROFILE_GWT", "true")); - values[8] = Integer.getInteger("java.lang.invoke.MethodHandle.CUSTOMIZE_THRESHOLD", 127); - values[9] = Boolean.parseBoolean(System.getProperty("java.lang.invoke.VarHandle.VAR_HANDLE_GUARDS", "true")); - return null; - } - }); - DEBUG_METHOD_HANDLE_NAMES = (Boolean) values[0]; - DUMP_CLASS_FILES = (Boolean) values[1]; - TRACE_INTERPRETER = (Boolean) values[2]; - TRACE_METHOD_LINKAGE = (Boolean) values[3]; - COMPILE_THRESHOLD = (Integer) values[4]; - DONT_INLINE_THRESHOLD = (Integer) values[5]; - PROFILE_LEVEL = (Integer) values[6]; - PROFILE_GWT = (Boolean) values[7]; - CUSTOMIZE_THRESHOLD = (Integer) values[8]; - VAR_HANDLE_GUARDS = (Boolean) values[9]; + Properties props = GetPropertyAction.getProperties(); + DEBUG_METHOD_HANDLE_NAMES = Boolean.parseBoolean( + props.getProperty("java.lang.invoke.MethodHandle.DEBUG_NAMES")); + DUMP_CLASS_FILES = Boolean.parseBoolean( + props.getProperty("java.lang.invoke.MethodHandle.DUMP_CLASS_FILES")); + TRACE_INTERPRETER = Boolean.parseBoolean( + props.getProperty("java.lang.invoke.MethodHandle.TRACE_INTERPRETER")); + TRACE_METHOD_LINKAGE = Boolean.parseBoolean( + props.getProperty("java.lang.invoke.MethodHandle.TRACE_METHOD_LINKAGE")); + COMPILE_THRESHOLD = Integer.parseInt( + props.getProperty("java.lang.invoke.MethodHandle.COMPILE_THRESHOLD", "0")); + DONT_INLINE_THRESHOLD = Integer.parseInt( + props.getProperty("java.lang.invoke.MethodHandle.DONT_INLINE_THRESHOLD", "30")); + PROFILE_LEVEL = Integer.parseInt( + props.getProperty("java.lang.invoke.MethodHandle.PROFILE_LEVEL", "0")); + PROFILE_GWT = Boolean.parseBoolean( + props.getProperty("java.lang.invoke.MethodHandle.PROFILE_GWT", "true")); + CUSTOMIZE_THRESHOLD = Integer.parseInt( + props.getProperty("java.lang.invoke.MethodHandle.CUSTOMIZE_THRESHOLD", "127")); + VAR_HANDLE_GUARDS = Boolean.parseBoolean( + props.getProperty("java.lang.invoke.VarHandle.VAR_HANDLE_GUARDS", "true")); if (CUSTOMIZE_THRESHOLD < -1 || CUSTOMIZE_THRESHOLD > 127) { throw newInternalError("CUSTOMIZE_THRESHOLD should be in [-1...127] range"); diff --git a/jdk/src/java.base/share/classes/java/lang/invoke/StringConcatFactory.java b/jdk/src/java.base/share/classes/java/lang/invoke/StringConcatFactory.java index 6469a4b8a6d..44f29a4a136 100644 --- a/jdk/src/java.base/share/classes/java/lang/invoke/StringConcatFactory.java +++ b/jdk/src/java.base/share/classes/java/lang/invoke/StringConcatFactory.java @@ -33,7 +33,6 @@ import jdk.internal.vm.annotation.ForceInline; import jdk.internal.misc.Unsafe; import java.lang.invoke.MethodHandles.Lookup; -import java.security.AccessController; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; @@ -188,14 +187,15 @@ public final class StringConcatFactory { private static final ProxyClassesDumper DUMPER; static { - final String strategy = AccessController.doPrivileged( - new GetPropertyAction("java.lang.invoke.stringConcat")); - CACHE_ENABLE = Boolean.parseBoolean(AccessController.doPrivileged( - new GetPropertyAction("java.lang.invoke.stringConcat.cache"))); - DEBUG = Boolean.parseBoolean(AccessController.doPrivileged( - new GetPropertyAction("java.lang.invoke.stringConcat.debug"))); - final String dumpPath = AccessController.doPrivileged( - new GetPropertyAction("java.lang.invoke.stringConcat.dumpClasses")); + Properties props = GetPropertyAction.getProperties(); + final String strategy = + props.getProperty("java.lang.invoke.stringConcat"); + CACHE_ENABLE = Boolean.parseBoolean( + props.getProperty("java.lang.invoke.stringConcat.cache")); + DEBUG = Boolean.parseBoolean( + props.getProperty("java.lang.invoke.stringConcat.debug")); + final String dumpPath = + props.getProperty("java.lang.invoke.stringConcat.dumpClasses"); STRATEGY = (strategy == null) ? DEFAULT_STRATEGY : Strategy.valueOf(strategy); CACHE = CACHE_ENABLE ? new ConcurrentHashMap<>() : null; diff --git a/jdk/src/java.base/share/classes/java/lang/module/ModuleFinder.java b/jdk/src/java.base/share/classes/java/lang/module/ModuleFinder.java index 83d8fc59aaf..1cdd12838b1 100644 --- a/jdk/src/java.base/share/classes/java/lang/module/ModuleFinder.java +++ b/jdk/src/java.base/share/classes/java/lang/module/ModuleFinder.java @@ -39,6 +39,7 @@ import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; +import sun.security.action.GetPropertyAction; /** * A finder of modules. A {@code ModuleFinder} is used to find modules during @@ -152,7 +153,7 @@ public interface ModuleFinder { SecurityManager sm = System.getSecurityManager(); if (sm != null) { - PrivilegedAction pa = () -> System.getProperty("java.home"); + PrivilegedAction pa = new GetPropertyAction("java.home"); home = AccessController.doPrivileged(pa); Permission p = new FilePermission(home + File.separator + "-", "read"); sm.checkPermission(p); diff --git a/jdk/src/java.base/share/classes/java/lang/reflect/Proxy.java b/jdk/src/java.base/share/classes/java/lang/reflect/Proxy.java index 12abe79d4ea..8802abeda76 100644 --- a/jdk/src/java.base/share/classes/java/lang/reflect/Proxy.java +++ b/jdk/src/java.base/share/classes/java/lang/reflect/Proxy.java @@ -50,6 +50,7 @@ import jdk.internal.misc.VM; import jdk.internal.reflect.CallerSensitive; import jdk.internal.reflect.Reflection; import sun.reflect.misc.ReflectUtil; +import sun.security.action.GetPropertyAction; import sun.security.util.SecurityConstants; /** @@ -581,11 +582,7 @@ public class Proxy implements java.io.Serializable { } private static final String DEBUG = - AccessController.doPrivileged(new PrivilegedAction<>() { - public String run() { - return System.getProperty("jdk.proxy.debug", ""); - } - }); + GetPropertyAction.getProperty("jdk.proxy.debug", ""); private static boolean isDebug() { return !DEBUG.isEmpty(); diff --git a/jdk/src/java.base/share/classes/java/net/AbstractPlainDatagramSocketImpl.java b/jdk/src/java.base/share/classes/java/net/AbstractPlainDatagramSocketImpl.java index 7a9b7fc17ed..debc60f74b9 100644 --- a/jdk/src/java.base/share/classes/java/net/AbstractPlainDatagramSocketImpl.java +++ b/jdk/src/java.base/share/classes/java/net/AbstractPlainDatagramSocketImpl.java @@ -31,6 +31,7 @@ import sun.net.ResourceManager; import java.util.Set; import java.util.HashSet; import java.util.Collections; +import sun.security.action.GetPropertyAction; /** * Abstract datagram and multicast socket implementation base class. @@ -51,9 +52,7 @@ abstract class AbstractPlainDatagramSocketImpl extends DatagramSocketImpl protected InetAddress connectedAddress = null; private int connectedPort = -1; - private static final String os = AccessController.doPrivileged( - new sun.security.action.GetPropertyAction("os.name") - ); + private static final String os = GetPropertyAction.getProperty("os.name"); /** * flag set if the native connect() call not to be used diff --git a/jdk/src/java.base/share/classes/java/net/InetAddress.java b/jdk/src/java.base/share/classes/java/net/InetAddress.java index 8e0d46152ff..e79c5115413 100644 --- a/jdk/src/java.base/share/classes/java/net/InetAddress.java +++ b/jdk/src/java.base/share/classes/java/net/InetAddress.java @@ -1123,8 +1123,8 @@ class InetAddress implements java.io.Serializable { */ private static NameService createNameService() { - String hostsFileName = AccessController - .doPrivileged(new GetPropertyAction("jdk.net.hosts.file")); + String hostsFileName = + GetPropertyAction.getProperty("jdk.net.hosts.file"); NameService theNameService; if (hostsFileName != null) { theNameService = new HostsFileNameService(hostsFileName); @@ -1643,8 +1643,7 @@ class InetAddress implements java.io.Serializable { * property can vary across implementations of the java. * classes. The default is an empty String "". */ - String prefix = AccessController.doPrivileged( - new GetPropertyAction("impl.prefix", "")); + String prefix = GetPropertyAction.getProperty("impl.prefix", ""); try { impl = Class.forName("java.net." + prefix + implName).newInstance(); } catch (ClassNotFoundException e) { diff --git a/jdk/src/java.base/share/classes/java/net/SocksSocketImpl.java b/jdk/src/java.base/share/classes/java/net/SocksSocketImpl.java index f7974d0d705..c3a0d1c675a 100644 --- a/jdk/src/java.base/share/classes/java/net/SocksSocketImpl.java +++ b/jdk/src/java.base/share/classes/java/net/SocksSocketImpl.java @@ -33,6 +33,7 @@ import java.security.PrivilegedExceptionAction; import sun.net.SocksProxy; import sun.net.spi.DefaultProxySelector; import sun.net.www.ParseUtil; +import sun.security.action.GetPropertyAction; /* import org.ietf.jgss.*; */ /** @@ -177,8 +178,7 @@ class SocksSocketImpl extends PlainSocketImpl implements SocksConsts { userName = pw.getUserName(); password = new String(pw.getPassword()); } else { - userName = java.security.AccessController.doPrivileged( - new sun.security.action.GetPropertyAction("user.name")); + userName = GetPropertyAction.getProperty("user.name"); } if (userName == null) return false; @@ -1088,8 +1088,7 @@ class SocksSocketImpl extends PlainSocketImpl implements SocksConsts { userName = System.getProperty("user.name"); } catch (SecurityException se) { /* swallow Exception */ } } else { - userName = java.security.AccessController.doPrivileged( - new sun.security.action.GetPropertyAction("user.name")); + userName = GetPropertyAction.getProperty("user.name"); } return userName; } diff --git a/jdk/src/java.base/share/classes/java/net/URL.java b/jdk/src/java.base/share/classes/java/net/URL.java index cce9cf9425a..099e8b9e0c8 100644 --- a/jdk/src/java.base/share/classes/java/net/URL.java +++ b/jdk/src/java.base/share/classes/java/net/URL.java @@ -42,6 +42,7 @@ import java.util.ServiceConfigurationError; import java.util.ServiceLoader; import sun.security.util.SecurityConstants; +import sun.security.action.GetPropertyAction; /** * Class {@code URL} represents a Uniform Resource @@ -1210,12 +1211,8 @@ public final class URL implements java.io.Serializable { } private static URLStreamHandler lookupViaProperty(String protocol) { - String packagePrefixList = java.security.AccessController.doPrivileged( - new PrivilegedAction<>() { - public String run() { - return System.getProperty(protocolPathProp, null); - } - }); + String packagePrefixList = + GetPropertyAction.getProperty(protocolPathProp); if (packagePrefixList == null) { // not set return null; diff --git a/jdk/src/java.base/share/classes/java/net/URLConnection.java b/jdk/src/java.base/share/classes/java/net/URLConnection.java index 87f4378b2ad..459a820bcde 100644 --- a/jdk/src/java.base/share/classes/java/net/URLConnection.java +++ b/jdk/src/java.base/share/classes/java/net/URLConnection.java @@ -43,6 +43,7 @@ import java.security.Permission; import java.security.AccessController; import sun.security.util.SecurityConstants; import sun.net.www.MessageHeader; +import sun.security.action.GetPropertyAction; /** * The abstract class {@code URLConnection} is the superclass @@ -1395,8 +1396,8 @@ public abstract class URLConnection { * is always the last one on the returned package list. */ private String getContentHandlerPkgPrefixes() { - String packagePrefixList = AccessController.doPrivileged( - new sun.security.action.GetPropertyAction(contentPathProp, "")); + String packagePrefixList = + GetPropertyAction.getProperty(contentPathProp, ""); if (packagePrefixList != "") { packagePrefixList += "|"; diff --git a/jdk/src/java.base/share/classes/java/net/URLEncoder.java b/jdk/src/java.base/share/classes/java/net/URLEncoder.java index 5ad817bc72c..2f2c3e6c9c4 100644 --- a/jdk/src/java.base/share/classes/java/net/URLEncoder.java +++ b/jdk/src/java.base/share/classes/java/net/URLEncoder.java @@ -25,19 +25,12 @@ package java.net; -import java.io.ByteArrayOutputStream; -import java.io.BufferedWriter; -import java.io.OutputStreamWriter; -import java.io.IOException; import java.io.UnsupportedEncodingException; import java.io.CharArrayWriter; import java.nio.charset.Charset; import java.nio.charset.IllegalCharsetNameException; import java.nio.charset.UnsupportedCharsetException ; import java.util.BitSet; -import java.security.AccessController; -import java.security.PrivilegedAction; -import sun.security.action.GetBooleanAction; import sun.security.action.GetPropertyAction; /** @@ -140,9 +133,7 @@ public class URLEncoder { dontNeedEncoding.set('.'); dontNeedEncoding.set('*'); - dfltEncName = AccessController.doPrivileged( - new GetPropertyAction("file.encoding") - ); + dfltEncName = GetPropertyAction.getProperty("file.encoding"); } /** diff --git a/jdk/src/java.base/share/classes/java/nio/charset/Charset.java b/jdk/src/java.base/share/classes/java/nio/charset/Charset.java index 78ee33e764a..de49a8c6271 100644 --- a/jdk/src/java.base/share/classes/java/nio/charset/Charset.java +++ b/jdk/src/java.base/share/classes/java/nio/charset/Charset.java @@ -283,8 +283,8 @@ public abstract class Charset if (level == null) { if (!VM.isBooted()) return false; - bugLevel = level = AccessController.doPrivileged( - new GetPropertyAction("sun.nio.cs.bugLevel", "")); + bugLevel = level = + GetPropertyAction.getProperty("sun.nio.cs.bugLevel", ""); } return level.equals(bl); } @@ -609,8 +609,7 @@ public abstract class Charset public static Charset defaultCharset() { if (defaultCharset == null) { synchronized (Charset.class) { - String csn = AccessController.doPrivileged( - new GetPropertyAction("file.encoding")); + String csn = GetPropertyAction.getProperty("file.encoding"); Charset cs = lookup(csn); if (cs != null) defaultCharset = cs; diff --git a/jdk/src/java.base/share/classes/java/nio/file/TempFileHelper.java b/jdk/src/java.base/share/classes/java/nio/file/TempFileHelper.java index 2bc3d992c60..a6af1a15b1f 100644 --- a/jdk/src/java.base/share/classes/java/nio/file/TempFileHelper.java +++ b/jdk/src/java.base/share/classes/java/nio/file/TempFileHelper.java @@ -28,7 +28,6 @@ package java.nio.file; import java.util.Set; import java.util.EnumSet; import java.security.SecureRandom; -import static java.security.AccessController.*; import java.io.IOException; import java.nio.file.attribute.FileAttribute; import java.nio.file.attribute.PosixFilePermission; @@ -47,7 +46,7 @@ class TempFileHelper { // temporary directory location private static final Path tmpdir = - Paths.get(doPrivileged(new GetPropertyAction("java.io.tmpdir"))); + Paths.get(GetPropertyAction.getProperty("java.io.tmpdir")); private static final boolean isPosix = FileSystems.getDefault().supportedFileAttributeViews().contains("posix"); diff --git a/jdk/src/java.base/share/classes/java/util/Locale.java b/jdk/src/java.base/share/classes/java/util/Locale.java index 2d121e2e7ef..e05904f6f6b 100644 --- a/jdk/src/java.base/share/classes/java/util/Locale.java +++ b/jdk/src/java.base/share/classes/java/util/Locale.java @@ -45,7 +45,6 @@ import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.ObjectStreamField; import java.io.Serializable; -import java.security.AccessController; import java.text.MessageFormat; import java.util.spi.LocaleNameProvider; @@ -859,11 +858,10 @@ public final class Locale implements Cloneable, Serializable { private static Locale initDefault() { String language, region, script, country, variant; - language = AccessController.doPrivileged( - new GetPropertyAction("user.language", "en")); + Properties props = GetPropertyAction.getProperties(); + language = props.getProperty("user.language", "en"); // for compatibility, check for old user.region property - region = AccessController.doPrivileged( - new GetPropertyAction("user.region")); + region = props.getProperty("user.region"); if (region != null) { // region can be of form country, country_variant, or _variant int i = region.indexOf('_'); @@ -876,27 +874,25 @@ public final class Locale implements Cloneable, Serializable { } script = ""; } else { - script = AccessController.doPrivileged( - new GetPropertyAction("user.script", "")); - country = AccessController.doPrivileged( - new GetPropertyAction("user.country", "")); - variant = AccessController.doPrivileged( - new GetPropertyAction("user.variant", "")); + script = props.getProperty("user.script", ""); + country = props.getProperty("user.country", ""); + variant = props.getProperty("user.variant", ""); } return getInstance(language, script, country, variant, null); } private static Locale initDefault(Locale.Category category) { + Properties props = GetPropertyAction.getProperties(); return getInstance( - AccessController.doPrivileged( - new GetPropertyAction(category.languageKey, defaultLocale.getLanguage())), - AccessController.doPrivileged( - new GetPropertyAction(category.scriptKey, defaultLocale.getScript())), - AccessController.doPrivileged( - new GetPropertyAction(category.countryKey, defaultLocale.getCountry())), - AccessController.doPrivileged( - new GetPropertyAction(category.variantKey, defaultLocale.getVariant())), + props.getProperty(category.languageKey, + defaultLocale.getLanguage()), + props.getProperty(category.scriptKey, + defaultLocale.getScript()), + props.getProperty(category.countryKey, + defaultLocale.getCountry()), + props.getProperty(category.variantKey, + defaultLocale.getVariant()), null); } diff --git a/jdk/src/java.base/share/classes/java/util/PropertyResourceBundle.java b/jdk/src/java.base/share/classes/java/util/PropertyResourceBundle.java index 58ff7570269..9c20a680733 100644 --- a/jdk/src/java.base/share/classes/java/util/PropertyResourceBundle.java +++ b/jdk/src/java.base/share/classes/java/util/PropertyResourceBundle.java @@ -43,7 +43,6 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.io.IOException; -import java.nio.charset.Charset; import java.nio.charset.MalformedInputException; import java.nio.charset.StandardCharsets; import java.nio.charset.UnmappableCharacterException; @@ -142,8 +141,8 @@ public class PropertyResourceBundle extends ResourceBundle { // Check whether the strict encoding is specified. // The possible encoding is either "ISO-8859-1" or "UTF-8". private static final String encoding = - AccessController.doPrivileged( - new GetPropertyAction("java.util.PropertyResourceBundle.encoding", "")) + GetPropertyAction + .getProperty("java.util.PropertyResourceBundle.encoding", "") .toUpperCase(Locale.ROOT); /** diff --git a/jdk/src/java.base/share/classes/java/util/TimeZone.java b/jdk/src/java.base/share/classes/java/util/TimeZone.java index 3bf886b2721..22c382cb0a2 100644 --- a/jdk/src/java.base/share/classes/java/util/TimeZone.java +++ b/jdk/src/java.base/share/classes/java/util/TimeZone.java @@ -660,14 +660,12 @@ public abstract class TimeZone implements Serializable, Cloneable { private static synchronized TimeZone setDefaultZone() { TimeZone tz; // get the time zone ID from the system properties - String zoneID = AccessController.doPrivileged( - new GetPropertyAction("user.timezone")); + String zoneID = GetPropertyAction.getProperty("user.timezone"); // if the time zone ID is not set (yet), perform the // platform to Java time zone ID mapping. if (zoneID == null || zoneID.isEmpty()) { - String javaHome = AccessController.doPrivileged( - new GetPropertyAction("java.home")); + String javaHome = GetPropertyAction.getProperty("java.home"); try { zoneID = getSystemTimeZoneID(javaHome); if (zoneID == null) { diff --git a/jdk/src/java.base/share/classes/java/util/jar/JarFile.java b/jdk/src/java.base/share/classes/java/util/jar/JarFile.java index f28750c3a97..ff26faad4f4 100644 --- a/jdk/src/java.base/share/classes/java/util/jar/JarFile.java +++ b/jdk/src/java.base/share/classes/java/util/jar/JarFile.java @@ -34,7 +34,6 @@ import java.util.stream.StreamSupport; import java.util.zip.*; import java.security.CodeSigner; import java.security.cert.Certificate; -import java.security.AccessController; import java.security.CodeSource; import jdk.internal.misc.SharedSecrets; import sun.security.action.GetPropertyAction; @@ -155,16 +154,16 @@ class JarFile extends ZipFile { BASE_VERSION = 8; // one less than lowest version for versioned entries int runtimeVersion = jdk.Version.current().major(); - String jarVersion = AccessController.doPrivileged( - new GetPropertyAction("jdk.util.jar.version")); + String jarVersion = + GetPropertyAction.getProperty("jdk.util.jar.version"); if (jarVersion != null) { int jarVer = Integer.parseInt(jarVersion); runtimeVersion = (jarVer > runtimeVersion) ? runtimeVersion : Math.max(jarVer, 0); } RUNTIME_VERSION = runtimeVersion; - String enableMultiRelease = AccessController.doPrivileged( - new GetPropertyAction("jdk.util.jar.enableMultiRelease", "true")); + String enableMultiRelease = GetPropertyAction + .getProperty("jdk.util.jar.enableMultiRelease", "true"); switch (enableMultiRelease) { case "true": default: diff --git a/jdk/src/java.base/share/classes/java/util/jar/Pack200.java b/jdk/src/java.base/share/classes/java/util/jar/Pack200.java index 44f1cccd080..ac47ad12032 100644 --- a/jdk/src/java.base/share/classes/java/util/jar/Pack200.java +++ b/jdk/src/java.base/share/classes/java/util/jar/Pack200.java @@ -29,6 +29,7 @@ import java.io.InputStream; import java.io.OutputStream; import java.io.File; import java.io.IOException; +import sun.security.action.GetPropertyAction; /** @@ -694,8 +695,7 @@ public abstract class Pack200 { Class impl = (PACK_PROVIDER.equals(prop))? packerImpl: unpackerImpl; if (impl == null) { // The first time, we must decide which class to use. - implName = java.security.AccessController.doPrivileged( - new sun.security.action.GetPropertyAction(prop,"")); + implName = GetPropertyAction.getProperty(prop,""); if (implName != null && !implName.equals("")) impl = Class.forName(implName); else if (PACK_PROVIDER.equals(prop)) diff --git a/jdk/src/java.base/share/classes/java/util/regex/PatternSyntaxException.java b/jdk/src/java.base/share/classes/java/util/regex/PatternSyntaxException.java index 94d7abc78a5..f7768da27da 100644 --- a/jdk/src/java.base/share/classes/java/util/regex/PatternSyntaxException.java +++ b/jdk/src/java.base/share/classes/java/util/regex/PatternSyntaxException.java @@ -94,8 +94,7 @@ public class PatternSyntaxException } private static final String nl = - java.security.AccessController - .doPrivileged(new GetPropertyAction("line.separator")); + GetPropertyAction.getProperty("line.separator"); /** * Returns a multi-line string containing the description of the syntax diff --git a/jdk/src/java.base/share/classes/java/util/zip/ZipOutputStream.java b/jdk/src/java.base/share/classes/java/util/zip/ZipOutputStream.java index 6b480aa1d5e..ff76017651b 100644 --- a/jdk/src/java.base/share/classes/java/util/zip/ZipOutputStream.java +++ b/jdk/src/java.base/share/classes/java/util/zip/ZipOutputStream.java @@ -33,6 +33,7 @@ import java.util.Vector; import java.util.HashSet; import static java.util.zip.ZipConstants64.*; import static java.util.zip.ZipUtils.*; +import sun.security.action.GetPropertyAction; /** * This class implements an output stream filter for writing files in the @@ -54,9 +55,7 @@ class ZipOutputStream extends DeflaterOutputStream implements ZipConstants { */ private static final boolean inhibitZip64 = Boolean.parseBoolean( - java.security.AccessController.doPrivileged( - new sun.security.action.GetPropertyAction( - "jdk.util.zip.inhibitZip64", "false"))); + GetPropertyAction.getProperty("jdk.util.zip.inhibitZip64")); private static class XEntry { final ZipEntry entry; diff --git a/jdk/src/java.base/share/classes/javax/net/ssl/SSLSocketFactory.java b/jdk/src/java.base/share/classes/javax/net/ssl/SSLSocketFactory.java index 316016aac35..b436414308f 100644 --- a/jdk/src/java.base/share/classes/javax/net/ssl/SSLSocketFactory.java +++ b/jdk/src/java.base/share/classes/javax/net/ssl/SSLSocketFactory.java @@ -51,9 +51,9 @@ public abstract class SSLSocketFactory extends SocketFactory static final boolean DEBUG; static { - String s = java.security.AccessController.doPrivileged( - new GetPropertyAction("javax.net.debug", "")).toLowerCase( - Locale.ENGLISH); + String s = GetPropertyAction.getProperty("javax.net.debug", "") + .toLowerCase(Locale.ENGLISH); + DEBUG = s.contains("all") || s.contains("ssl"); } diff --git a/jdk/src/java.base/share/classes/jdk/Version.java b/jdk/src/java.base/share/classes/jdk/Version.java index 75c6b35c444..756af9ec051 100644 --- a/jdk/src/java.base/share/classes/jdk/Version.java +++ b/jdk/src/java.base/share/classes/jdk/Version.java @@ -26,8 +26,6 @@ package jdk; import java.math.BigInteger; -import java.security.AccessController; -import java.security.PrivilegedAction; import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -35,6 +33,7 @@ import java.util.stream.Collectors; import java.util.Collections; import java.util.List; import java.util.Optional; +import sun.security.action.GetPropertyAction; /** * A representation of the JDK version-string which contains a version @@ -274,12 +273,7 @@ public final class Version */ public static Version current() { if (current == null) { - current = parse(AccessController.doPrivileged( - new PrivilegedAction<>() { - public String run() { - return System.getProperty("java.version"); - } - })); + current = parse(GetPropertyAction.getProperty("java.version")); } return current; } diff --git a/jdk/src/java.base/share/classes/jdk/internal/loader/URLClassPath.java b/jdk/src/java.base/share/classes/jdk/internal/loader/URLClassPath.java index 15688e1a573..234a86a9271 100644 --- a/jdk/src/java.base/share/classes/jdk/internal/loader/URLClassPath.java +++ b/jdk/src/java.base/share/classes/jdk/internal/loader/URLClassPath.java @@ -52,6 +52,7 @@ import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.NoSuchElementException; +import java.util.Properties; import java.util.Set; import java.util.Stack; import java.util.StringTokenizer; @@ -69,6 +70,7 @@ import jdk.internal.util.jar.InvalidJarIndexError; import jdk.internal.util.jar.JarIndex; import sun.net.util.URLUtil; import sun.net.www.ParseUtil; +import sun.security.action.GetPropertyAction; /** * This class is used to maintain a search path of URLs for loading classes @@ -78,20 +80,15 @@ import sun.net.www.ParseUtil; */ public class URLClassPath { private static final String USER_AGENT_JAVA_VERSION = "UA-Java-Version"; - private static final String JAVA_HOME; private static final String JAVA_VERSION; private static final boolean DEBUG; private static final boolean DISABLE_JAR_CHECKING; static { - JAVA_HOME = java.security.AccessController.doPrivileged( - new sun.security.action.GetPropertyAction("java.home")); - JAVA_VERSION = java.security.AccessController.doPrivileged( - new sun.security.action.GetPropertyAction("java.version")); - DEBUG = (java.security.AccessController.doPrivileged( - new sun.security.action.GetPropertyAction("sun.misc.URLClassPath.debug")) != null); - String p = java.security.AccessController.doPrivileged( - new sun.security.action.GetPropertyAction("sun.misc.URLClassPath.disableJarChecking")); + Properties props = GetPropertyAction.getProperties(); + JAVA_VERSION = props.getProperty("java.version"); + DEBUG = (props.getProperty("sun.misc.URLClassPath.debug") != null); + String p = props.getProperty("sun.misc.URLClassPath.disableJarChecking"); DISABLE_JAR_CHECKING = p != null ? p.equals("true") || p.equals("") : false; } diff --git a/jdk/src/java.base/share/classes/jdk/internal/logger/LoggerFinderLoader.java b/jdk/src/java.base/share/classes/jdk/internal/logger/LoggerFinderLoader.java index 7d315ba7057..58f235d6ccd 100644 --- a/jdk/src/java.base/share/classes/jdk/internal/logger/LoggerFinderLoader.java +++ b/jdk/src/java.base/share/classes/jdk/internal/logger/LoggerFinderLoader.java @@ -33,6 +33,7 @@ import java.util.Locale; import java.util.ServiceConfigurationError; import java.util.ServiceLoader; import sun.security.util.SecurityConstants; +import sun.security.action.GetPropertyAction; /** * Helper class used to load the {@link java.lang.System.LoggerFinder}. @@ -79,9 +80,8 @@ public final class LoggerFinderLoader { // Get configuration error policy private static ErrorPolicy configurationErrorPolicy() { - final PrivilegedAction getConfigurationErrorPolicy = - () -> System.getProperty("jdk.logger.finder.error"); - String errorPolicy = AccessController.doPrivileged(getConfigurationErrorPolicy); + String errorPolicy = + GetPropertyAction.getProperty("jdk.logger.finder.error"); if (errorPolicy == null || errorPolicy.isEmpty()) { return ErrorPolicy.WARNING; } @@ -95,9 +95,8 @@ public final class LoggerFinderLoader { // Whether multiple provider should be considered as an error. // This is further submitted to the configuration error policy. private static boolean ensureSingletonProvider() { - final PrivilegedAction ensureSingletonProvider = - () -> Boolean.getBoolean("jdk.logger.finder.singleton"); - return AccessController.doPrivileged(ensureSingletonProvider); + return Boolean.parseBoolean( + GetPropertyAction.getProperty("jdk.logger.finder.singleton")); } private static Iterator findLoggerFinderProviders() { diff --git a/jdk/src/java.base/share/classes/jdk/internal/logger/SimpleConsoleLogger.java b/jdk/src/java.base/share/classes/jdk/internal/logger/SimpleConsoleLogger.java index de4451fd35c..c90a7b24e38 100644 --- a/jdk/src/java.base/share/classes/jdk/internal/logger/SimpleConsoleLogger.java +++ b/jdk/src/java.base/share/classes/jdk/internal/logger/SimpleConsoleLogger.java @@ -55,8 +55,8 @@ public class SimpleConsoleLogger extends LoggerConfiguration PlatformLogger.toPlatformLevel(DEFAULT_LEVEL); static Level getDefaultLevel() { - String levelName = AccessController.doPrivileged( - new GetPropertyAction("jdk.system.logger.level", "INFO")); + String levelName = GetPropertyAction + .getProperty("jdk.system.logger.level", "INFO"); try { return Level.valueOf(levelName); } catch (IllegalArgumentException iae) { @@ -425,8 +425,8 @@ public class SimpleConsoleLogger extends LoggerConfiguration // Make it easier to wrap Logger... static private final String[] skips; static { - String additionalPkgs = AccessController.doPrivileged( - new GetPropertyAction("jdk.logger.packages")); + String additionalPkgs = + GetPropertyAction.getProperty("jdk.logger.packages"); skips = additionalPkgs == null ? new String[0] : additionalPkgs.split(","); } @@ -485,7 +485,7 @@ public class SimpleConsoleLogger extends LoggerConfiguration // jdk/test/java/lang/invoke/lambda/LogGeneratedClassesTest.java // to fail - because that test has a testcase which somehow references // PlatformLogger and counts the number of generated lambda classes. - String format = AccessController.doPrivileged(new GetPropertyAction(key)); + String format = GetPropertyAction.getProperty(key); if (format == null && defaultPropertyGetter != null) { format = defaultPropertyGetter.apply(key); diff --git a/jdk/src/java.base/share/classes/jdk/internal/reflect/Reflection.java b/jdk/src/java.base/share/classes/jdk/internal/reflect/Reflection.java index 88e6a8349ca..636b0940345 100644 --- a/jdk/src/java.base/share/classes/jdk/internal/reflect/Reflection.java +++ b/jdk/src/java.base/share/classes/jdk/internal/reflect/Reflection.java @@ -27,13 +27,12 @@ package jdk.internal.reflect; import java.lang.reflect.*; -import java.security.AccessController; -import java.security.PrivilegedAction; import java.util.HashMap; import java.util.Map; import java.util.Objects; import jdk.internal.HotSpotIntrinsicCandidate; import jdk.internal.misc.VM; +import sun.security.action.GetPropertyAction; /** Common utility routines used by both java.lang and java.lang.reflect */ @@ -344,15 +343,10 @@ public class Reflection { private static void printStackTraceIfNeeded(Throwable e) { if (!printStackWhenAccessFailsSet && VM.initLevel() >= 1) { - // can't use method reference here, might be too early in startup - PrivilegedAction pa = new PrivilegedAction() { - public Boolean run() { - String s; - s = System.getProperty("sun.reflect.debugModuleAccessChecks"); - return (s != null && !s.equalsIgnoreCase("false")); - } - }; - printStackWhenAccessFails = AccessController.doPrivileged(pa); + String s = GetPropertyAction + .getProperty("sun.reflect.debugModuleAccessChecks"); + printStackWhenAccessFails = + (s != null && !s.equalsIgnoreCase("false")); printStackWhenAccessFailsSet = true; } if (printStackWhenAccessFails) { diff --git a/jdk/src/java.base/share/classes/jdk/internal/reflect/ReflectionFactory.java b/jdk/src/java.base/share/classes/jdk/internal/reflect/ReflectionFactory.java index 898f56c214f..b40c584efcd 100644 --- a/jdk/src/java.base/share/classes/jdk/internal/reflect/ReflectionFactory.java +++ b/jdk/src/java.base/share/classes/jdk/internal/reflect/ReflectionFactory.java @@ -30,10 +30,11 @@ import java.lang.reflect.Executable; import java.lang.reflect.Method; import java.lang.reflect.Constructor; import java.lang.reflect.Modifier; -import java.security.AccessController; import java.security.Permission; import java.security.PrivilegedAction; +import java.util.Properties; import sun.reflect.misc.ReflectUtil; +import sun.security.action.GetPropertyAction; /**

The master factory for all reflective objects, both those in java.lang.reflect (Fields, Methods, Constructors) as well as their @@ -382,41 +383,37 @@ public class ReflectionFactory { run, before the system properties are set up. */ private static void checkInitted() { if (initted) return; - AccessController.doPrivileged( - new PrivilegedAction<>() { - public Void run() { - // Tests to ensure the system properties table is fully - // initialized. This is needed because reflection code is - // called very early in the initialization process (before - // command-line arguments have been parsed and therefore - // these user-settable properties installed.) We assume that - // if System.out is non-null then the System class has been - // fully initialized and that the bulk of the startup code - // has been run. - if (System.out == null) { - // java.lang.System not yet fully initialized - return null; - } + // Tests to ensure the system properties table is fully + // initialized. This is needed because reflection code is + // called very early in the initialization process (before + // command-line arguments have been parsed and therefore + // these user-settable properties installed.) We assume that + // if System.out is non-null then the System class has been + // fully initialized and that the bulk of the startup code + // has been run. - String val = System.getProperty("sun.reflect.noInflation"); - if (val != null && val.equals("true")) { - noInflation = true; - } + if (System.out == null) { + // java.lang.System not yet fully initialized + return; + } - val = System.getProperty("sun.reflect.inflationThreshold"); - if (val != null) { - try { - inflationThreshold = Integer.parseInt(val); - } catch (NumberFormatException e) { - throw new RuntimeException("Unable to parse property sun.reflect.inflationThreshold", e); - } - } + Properties props = GetPropertyAction.getProperties(); + String val = props.getProperty("sun.reflect.noInflation"); + if (val != null && val.equals("true")) { + noInflation = true; + } - initted = true; - return null; - } - }); + val = props.getProperty("sun.reflect.inflationThreshold"); + if (val != null) { + try { + inflationThreshold = Integer.parseInt(val); + } catch (NumberFormatException e) { + throw new RuntimeException("Unable to parse property sun.reflect.inflationThreshold", e); + } + } + + initted = true; } private static LangReflectAccess langReflectAccess() { diff --git a/jdk/src/java.base/share/classes/sun/net/ResourceManager.java b/jdk/src/java.base/share/classes/sun/net/ResourceManager.java index 068b8484728..9c68d7c6bed 100644 --- a/jdk/src/java.base/share/classes/sun/net/ResourceManager.java +++ b/jdk/src/java.base/share/classes/sun/net/ResourceManager.java @@ -53,9 +53,8 @@ public class ResourceManager { private static final AtomicInteger numSockets; static { - String prop = java.security.AccessController.doPrivileged( - new GetPropertyAction("sun.net.maxDatagramSockets") - ); + String prop = + GetPropertyAction.getProperty("sun.net.maxDatagramSockets"); int defmax = DEFAULT_MAX_SOCKETS; try { if (prop != null) { diff --git a/jdk/src/java.base/share/classes/sun/net/sdp/SdpSupport.java b/jdk/src/java.base/share/classes/sun/net/sdp/SdpSupport.java index d24a7fed491..797bc7fed50 100644 --- a/jdk/src/java.base/share/classes/sun/net/sdp/SdpSupport.java +++ b/jdk/src/java.base/share/classes/sun/net/sdp/SdpSupport.java @@ -31,6 +31,7 @@ import java.security.AccessController; import jdk.internal.misc.SharedSecrets; import jdk.internal.misc.JavaIOFileDescriptorAccess; +import sun.security.action.GetPropertyAction; /** @@ -39,8 +40,7 @@ import jdk.internal.misc.JavaIOFileDescriptorAccess; */ public final class SdpSupport { - private static final String os = AccessController - .doPrivileged(new sun.security.action.GetPropertyAction("os.name")); + private static final String os = GetPropertyAction.getProperty("os.name"); private static final boolean isSupported = (os.equals("SunOS") || (os.equals("Linux"))); private static final JavaIOFileDescriptorAccess fdAccess = SharedSecrets.getJavaIOFileDescriptorAccess(); diff --git a/jdk/src/java.base/share/classes/sun/net/smtp/SmtpClient.java b/jdk/src/java.base/share/classes/sun/net/smtp/SmtpClient.java index fda15ea9234..ac3f7b8a43f 100644 --- a/jdk/src/java.base/share/classes/sun/net/smtp/SmtpClient.java +++ b/jdk/src/java.base/share/classes/sun/net/smtp/SmtpClient.java @@ -25,10 +25,10 @@ package sun.net.smtp; -import java.util.StringTokenizer; import java.io.*; import java.net.*; import sun.net.TransferProtocolClient; +import sun.security.action.GetPropertyAction; /** * This class implements the SMTP client. @@ -157,8 +157,7 @@ public class SmtpClient extends TransferProtocolClient { } try { String s; - mailhost = java.security.AccessController.doPrivileged( - new sun.security.action.GetPropertyAction("mail.host")); + mailhost = GetPropertyAction.getProperty("mail.host"); if (mailhost != null) { openServer(mailhost); return; @@ -184,8 +183,7 @@ public class SmtpClient extends TransferProtocolClient { setConnectTimeout(to); try { String s; - mailhost = java.security.AccessController.doPrivileged( - new sun.security.action.GetPropertyAction("mail.host")); + mailhost = GetPropertyAction.getProperty("mail.host"); if (mailhost != null) { openServer(mailhost); return; diff --git a/jdk/src/java.base/share/classes/sun/net/www/MimeLauncher.java b/jdk/src/java.base/share/classes/sun/net/www/MimeLauncher.java index d95ca3774ba..ba26f96e52e 100644 --- a/jdk/src/java.base/share/classes/sun/net/www/MimeLauncher.java +++ b/jdk/src/java.base/share/classes/sun/net/www/MimeLauncher.java @@ -27,6 +27,7 @@ package sun.net.www; import java.net.URL; import java.io.*; import java.util.StringTokenizer; +import sun.security.action.GetPropertyAction; class MimeLauncher extends Thread { java.net.URLConnection uc; @@ -182,8 +183,7 @@ class MimeLauncher extends Thread { } String execPathList; - execPathList = java.security.AccessController.doPrivileged( - new sun.security.action.GetPropertyAction("exec.path")); + execPathList = GetPropertyAction.getProperty("exec.path"); if (execPathList == null) { // exec.path property not set return false; diff --git a/jdk/src/java.base/share/classes/sun/net/www/http/HttpClient.java b/jdk/src/java.base/share/classes/sun/net/www/http/HttpClient.java index 02c9f98b7a6..392d9ea52dc 100644 --- a/jdk/src/java.base/share/classes/sun/net/www/http/HttpClient.java +++ b/jdk/src/java.base/share/classes/sun/net/www/http/HttpClient.java @@ -28,6 +28,7 @@ package sun.net.www.http; import java.io.*; import java.net.*; import java.util.Locale; +import java.util.Properties; import sun.net.NetworkClient; import sun.net.ProgressSource; import sun.net.www.MessageHeader; @@ -37,6 +38,7 @@ import sun.net.www.ParseUtil; import sun.net.www.protocol.http.HttpURLConnection; import sun.util.logging.PlatformLogger; import static sun.net.www.protocol.http.HttpURLConnection.TunnelState.*; +import sun.security.action.GetPropertyAction; /** * @author Herb Jellinek @@ -143,20 +145,18 @@ public class HttpClient extends NetworkClient { } static { - String keepAlive = java.security.AccessController.doPrivileged( - new sun.security.action.GetPropertyAction("http.keepAlive")); - - String retryPost = java.security.AccessController.doPrivileged( - new sun.security.action.GetPropertyAction("sun.net.http.retryPost")); + Properties props = GetPropertyAction.getProperties(); + String keepAlive = props.getProperty("http.keepAlive"); + String retryPost = props.getProperty("sun.net.http.retryPost"); if (keepAlive != null) { - keepAliveProp = Boolean.valueOf(keepAlive).booleanValue(); + keepAliveProp = Boolean.parseBoolean(keepAlive); } else { keepAliveProp = true; } if (retryPost != null) { - retryPostProp = Boolean.valueOf(retryPost).booleanValue(); + retryPostProp = Boolean.parseBoolean(retryPost); } else retryPostProp = true; diff --git a/jdk/src/java.base/share/classes/sun/net/www/protocol/ftp/FtpURLConnection.java b/jdk/src/java.base/share/classes/sun/net/www/protocol/ftp/FtpURLConnection.java index 38d64d23009..b397ba1243f 100644 --- a/jdk/src/java.base/share/classes/sun/net/www/protocol/ftp/FtpURLConnection.java +++ b/jdk/src/java.base/share/classes/sun/net/www/protocol/ftp/FtpURLConnection.java @@ -46,6 +46,7 @@ import java.net.ProxySelector; import java.util.StringTokenizer; import java.util.Iterator; import java.security.Permission; +import java.util.Properties; import sun.net.NetworkClient; import sun.net.www.MessageHeader; import sun.net.www.MeteredStream; @@ -277,11 +278,10 @@ public class FtpURLConnection extends URLConnection { if (user == null) { user = "anonymous"; - String vers = java.security.AccessController.doPrivileged( - new GetPropertyAction("java.version")); - password = java.security.AccessController.doPrivileged( - new GetPropertyAction("ftp.protocol.user", - "Java" + vers + "@")); + Properties props = GetPropertyAction.getProperties(); + String vers = props.getProperty("java.version"); + password = props.getProperty("ftp.protocol.user", + "Java" + vers + "@"); } try { ftp = FtpClient.create(); diff --git a/jdk/src/java.base/share/classes/sun/net/www/protocol/http/AuthenticationHeader.java b/jdk/src/java.base/share/classes/sun/net/www/protocol/http/AuthenticationHeader.java index 42f692c3738..b6168d0c2c5 100644 --- a/jdk/src/java.base/share/classes/sun/net/www/protocol/http/AuthenticationHeader.java +++ b/jdk/src/java.base/share/classes/sun/net/www/protocol/http/AuthenticationHeader.java @@ -25,9 +25,10 @@ package sun.net.www.protocol.http; -import sun.net.www.*; import java.util.Iterator; import java.util.HashMap; +import sun.net.www.*; +import sun.security.action.GetPropertyAction; /** * This class is used to parse the information in WWW-Authenticate: and Proxy-Authenticate: @@ -93,8 +94,7 @@ public class AuthenticationHeader { } static { - authPref = java.security.AccessController.doPrivileged( - new sun.security.action.GetPropertyAction("http.auth.preference")); + authPref = GetPropertyAction.getProperty("http.auth.preference"); // http.auth.preference can be set to SPNEGO or Kerberos. // In fact they means "Negotiate with SPNEGO" and "Negotiate with diff --git a/jdk/src/java.base/share/classes/sun/net/www/protocol/http/HttpURLConnection.java b/jdk/src/java.base/share/classes/sun/net/www/protocol/http/HttpURLConnection.java index 5754c047219..ebabc26182e 100644 --- a/jdk/src/java.base/share/classes/sun/net/www/protocol/http/HttpURLConnection.java +++ b/jdk/src/java.base/share/classes/sun/net/www/protocol/http/HttpURLConnection.java @@ -52,7 +52,6 @@ import java.security.AccessController; import java.security.PrivilegedExceptionAction; import java.security.PrivilegedActionException; import java.io.*; -import java.net.*; import java.util.ArrayList; import java.util.Collections; import java.util.Date; @@ -78,12 +77,15 @@ import java.text.SimpleDateFormat; import java.util.TimeZone; import java.net.MalformedURLException; import java.nio.ByteBuffer; +import java.util.Properties; import static sun.net.www.protocol.http.AuthScheme.BASIC; import static sun.net.www.protocol.http.AuthScheme.DIGEST; import static sun.net.www.protocol.http.AuthScheme.NTLM; import static sun.net.www.protocol.http.AuthScheme.NEGOTIATE; import static sun.net.www.protocol.http.AuthScheme.KERBEROS; import static sun.net.www.protocol.http.AuthScheme.UNKNOWN; +import sun.security.action.GetIntegerAction; +import sun.security.action.GetPropertyAction; /** * A class to represent an HTTP connection to a remote object. @@ -205,46 +207,38 @@ public class HttpURLConnection extends java.net.HttpURLConnection { }; static { - maxRedirects = java.security.AccessController.doPrivileged( - new sun.security.action.GetIntegerAction( - "http.maxRedirects", defaultmaxRedirects)).intValue(); - version = java.security.AccessController.doPrivileged( - new sun.security.action.GetPropertyAction("java.version")); - String agent = java.security.AccessController.doPrivileged( - new sun.security.action.GetPropertyAction("http.agent")); + Properties props = GetPropertyAction.getProperties(); + maxRedirects = GetIntegerAction.getProperty("http.maxRedirects", + defaultmaxRedirects); + version = props.getProperty("java.version"); + String agent = props.getProperty("http.agent"); if (agent == null) { agent = "Java/"+version; } else { agent = agent + " Java/"+version; } userAgent = agent; - validateProxy = java.security.AccessController.doPrivileged( - new sun.security.action.GetBooleanAction( - "http.auth.digest.validateProxy")).booleanValue(); - validateServer = java.security.AccessController.doPrivileged( - new sun.security.action.GetBooleanAction( - "http.auth.digest.validateServer")).booleanValue(); + validateProxy = Boolean.parseBoolean( + props.getProperty("http.auth.digest.validateProxy")); + validateServer = Boolean.parseBoolean( + props.getProperty("http.auth.digest.validateServer")); - enableESBuffer = java.security.AccessController.doPrivileged( - new sun.security.action.GetBooleanAction( - "sun.net.http.errorstream.enableBuffering")).booleanValue(); - timeout4ESBuffer = java.security.AccessController.doPrivileged( - new sun.security.action.GetIntegerAction( - "sun.net.http.errorstream.timeout", 300)).intValue(); + enableESBuffer = Boolean.parseBoolean( + props.getProperty("sun.net.http.errorstream.enableBuffering")); + timeout4ESBuffer = GetIntegerAction + .getProperty("sun.net.http.errorstream.timeout", 300); if (timeout4ESBuffer <= 0) { timeout4ESBuffer = 300; // use the default } - bufSize4ES = java.security.AccessController.doPrivileged( - new sun.security.action.GetIntegerAction( - "sun.net.http.errorstream.bufferSize", 4096)).intValue(); + bufSize4ES = GetIntegerAction + .getProperty("sun.net.http.errorstream.bufferSize", 4096); if (bufSize4ES <= 0) { bufSize4ES = 4096; // use the default } - allowRestrictedHeaders = java.security.AccessController.doPrivileged( - new sun.security.action.GetBooleanAction( - "sun.net.http.allowRestrictedHeaders")).booleanValue(); + allowRestrictedHeaders = Boolean.parseBoolean( + props.getProperty("sun.net.http.allowRestrictedHeaders")); if (!allowRestrictedHeaders) { restrictedHeaderSet = new HashSet<>(restrictedHeaders.length); for (int i=0; i < restrictedHeaders.length; i++) { diff --git a/jdk/src/java.base/share/classes/sun/net/www/protocol/https/HttpsClient.java b/jdk/src/java.base/share/classes/sun/net/www/protocol/https/HttpsClient.java index 3aecc419cb2..437c3969148 100644 --- a/jdk/src/java.base/share/classes/sun/net/www/protocol/https/HttpsClient.java +++ b/jdk/src/java.base/share/classes/sun/net/www/protocol/https/HttpsClient.java @@ -41,7 +41,6 @@ import java.security.Principal; import java.security.cert.*; import java.util.StringTokenizer; import java.util.Vector; -import java.security.AccessController; import javax.security.auth.x500.X500Principal; @@ -139,8 +138,8 @@ final class HttpsClient extends HttpClient // If ciphers are assigned, sort them into an array. // String ciphers []; - String cipherString = AccessController.doPrivileged( - new GetPropertyAction("https.cipherSuites")); + String cipherString = + GetPropertyAction.getProperty("https.cipherSuites"); if (cipherString == null || "".equals(cipherString)) { ciphers = null; @@ -163,8 +162,8 @@ final class HttpsClient extends HttpClient // If protocols are assigned, sort them into an array. // String protocols []; - String protocolString = AccessController.doPrivileged( - new GetPropertyAction("https.protocols")); + String protocolString = + GetPropertyAction.getProperty("https.protocols"); if (protocolString == null || "".equals(protocolString)) { protocols = null; @@ -184,8 +183,7 @@ final class HttpsClient extends HttpClient } private String getUserAgent() { - String userAgent = java.security.AccessController.doPrivileged( - new sun.security.action.GetPropertyAction("https.agent")); + String userAgent = GetPropertyAction.getProperty("https.agent"); if (userAgent == null || userAgent.length() == 0) { userAgent = "JSSE"; } diff --git a/jdk/src/java.base/share/classes/sun/net/www/protocol/jrt/JavaRuntimeURLConnection.java b/jdk/src/java.base/share/classes/sun/net/www/protocol/jrt/JavaRuntimeURLConnection.java index cde9d438714..f58ce457f7a 100644 --- a/jdk/src/java.base/share/classes/sun/net/www/protocol/jrt/JavaRuntimeURLConnection.java +++ b/jdk/src/java.base/share/classes/sun/net/www/protocol/jrt/JavaRuntimeURLConnection.java @@ -32,10 +32,7 @@ import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; -import java.security.AccessController; import java.security.Permission; -import java.security.PrivilegedAction; -import java.util.List; import jdk.internal.jimage.ImageLocation; import jdk.internal.jimage.ImageReader; @@ -45,6 +42,7 @@ import jdk.internal.loader.URLClassPath; import jdk.internal.loader.Resource; import sun.net.www.ParseUtil; import sun.net.www.URLConnection; +import sun.security.action.GetPropertyAction; /** * URLConnection implementation that can be used to connect to resources @@ -163,11 +161,7 @@ public class JavaRuntimeURLConnection extends URLConnection { public Permission getPermission() throws IOException { Permission p = permission; if (p == null) { - // using lambda expression here leads to recursive initialization - PrivilegedAction pa = new PrivilegedAction() { - public String run() { return System.getProperty("java.home"); } - }; - String home = AccessController.doPrivileged(pa); + String home = GetPropertyAction.getProperty("java.home"); p = new FilePermission(home + File.separator + "-", "read"); permission = p; } diff --git a/jdk/src/java.base/share/classes/sun/net/www/protocol/netdoc/Handler.java b/jdk/src/java.base/share/classes/sun/net/www/protocol/netdoc/Handler.java index fbcddcb826b..81139707655 100644 --- a/jdk/src/java.base/share/classes/sun/net/www/protocol/netdoc/Handler.java +++ b/jdk/src/java.base/share/classes/sun/net/www/protocol/netdoc/Handler.java @@ -40,6 +40,7 @@ import java.net.MalformedURLException; import java.net.URLStreamHandler; import java.io.InputStream; import java.io.IOException; +import sun.security.action.GetPropertyAction; public class Handler extends URLStreamHandler { static URL base; @@ -54,12 +55,10 @@ public class Handler extends URLStreamHandler { URLConnection uc = null; URL ru; - Boolean tmp = java.security.AccessController.doPrivileged( - new sun.security.action.GetBooleanAction("newdoc.localonly")); - boolean localonly = tmp.booleanValue(); + boolean localonly = Boolean.parseBoolean( + GetPropertyAction.getProperty("newdoc.localonly")); - String docurl = java.security.AccessController.doPrivileged( - new sun.security.action.GetPropertyAction("doc.url")); + String docurl = GetPropertyAction.getProperty("doc.url"); String file = u.getFile(); if (!localonly) { diff --git a/jdk/src/java.base/share/classes/sun/nio/ch/FileChannelImpl.java b/jdk/src/java.base/share/classes/sun/nio/ch/FileChannelImpl.java index 671fe79efcc..8a287bc2839 100644 --- a/jdk/src/java.base/share/classes/sun/nio/ch/FileChannelImpl.java +++ b/jdk/src/java.base/share/classes/sun/nio/ch/FileChannelImpl.java @@ -1019,9 +1019,8 @@ public class FileChannelImpl if (!propertyChecked) { synchronized (FileChannelImpl.class) { if (!propertyChecked) { - String value = AccessController.doPrivileged( - new GetPropertyAction( - "sun.nio.ch.disableSystemWideOverlappingFileLockCheck")); + String value = GetPropertyAction.getProperty( + "sun.nio.ch.disableSystemWideOverlappingFileLockCheck"); isSharedFileLockTable = ((value == null) || value.equals("false")); propertyChecked = true; } diff --git a/jdk/src/java.base/share/classes/sun/nio/ch/Net.java b/jdk/src/java.base/share/classes/sun/nio/ch/Net.java index 062ce35468e..9a5c4dcb6f8 100644 --- a/jdk/src/java.base/share/classes/sun/nio/ch/Net.java +++ b/jdk/src/java.base/share/classes/sun/nio/ch/Net.java @@ -33,6 +33,7 @@ import java.util.*; import java.security.AccessController; import java.security.PrivilegedAction; import sun.net.ExtendedOptionsImpl; +import sun.security.action.GetPropertyAction; public class Net { @@ -382,13 +383,8 @@ public class Net { } public static boolean isFastTcpLoopbackRequested() { - String loopbackProp = java.security.AccessController.doPrivileged( - new PrivilegedAction() { - @Override - public String run() { - return System.getProperty("jdk.net.useFastTcpLoopback"); - } - }); + String loopbackProp = + GetPropertyAction.getProperty("jdk.net.useFastTcpLoopback"); boolean enable; if ("".equals(loopbackProp)) { enable = true; @@ -647,16 +643,9 @@ public class Net { int availLevel = isExclusiveBindAvailable(); if (availLevel >= 0) { String exclBindProp = - java.security.AccessController.doPrivileged( - new PrivilegedAction() { - @Override - public String run() { - return System.getProperty( - "sun.net.useExclusiveBind"); - } - }); + GetPropertyAction.getProperty("sun.net.useExclusiveBind"); if (exclBindProp != null) { - exclusiveBind = exclBindProp.length() == 0 ? + exclusiveBind = exclBindProp.isEmpty() ? true : Boolean.parseBoolean(exclBindProp); } else if (availLevel == 1) { exclusiveBind = true; diff --git a/jdk/src/java.base/share/classes/sun/nio/ch/Util.java b/jdk/src/java.base/share/classes/sun/nio/ch/Util.java index af89eca4544..e71e628ede1 100644 --- a/jdk/src/java.base/share/classes/sun/nio/ch/Util.java +++ b/jdk/src/java.base/share/classes/sun/nio/ch/Util.java @@ -64,13 +64,7 @@ public class Util { * for potential future-proofing. */ private static long getMaxCachedBufferSize() { - String s = java.security.AccessController.doPrivileged( - new PrivilegedAction() { - @Override - public String run() { - return System.getProperty("jdk.nio.maxCachedBufferSize"); - } - }); + String s = GetPropertyAction.getProperty("jdk.nio.maxCachedBufferSize"); if (s != null) { try { long m = Long.parseLong(s); @@ -471,8 +465,7 @@ public class Util { if (bugLevel == null) { if (!jdk.internal.misc.VM.isBooted()) return false; - String value = AccessController.doPrivileged( - new GetPropertyAction("sun.nio.ch.bugLevel")); + String value = GetPropertyAction.getProperty("sun.nio.ch.bugLevel"); bugLevel = (value != null) ? value : ""; } return bugLevel.equals(bl); diff --git a/jdk/src/java.base/share/classes/sun/nio/cs/StandardCharsets.java.template b/jdk/src/java.base/share/classes/sun/nio/cs/StandardCharsets.java.template index dd4d3994240..2ad055e50ec 100644 --- a/jdk/src/java.base/share/classes/sun/nio/cs/StandardCharsets.java.template +++ b/jdk/src/java.base/share/classes/sun/nio/cs/StandardCharsets.java.template @@ -34,8 +34,7 @@ import java.nio.charset.spi.CharsetProvider; import java.util.Iterator; import java.util.Locale; import java.util.Map; -import java.security.AccessController; -import java.security.PrivilegedAction; +import sun.security.action.GetPropertyAction; public class StandardCharsets extends CharsetProvider { @@ -201,15 +200,7 @@ public class StandardCharsets extends CharsetProvider { } private static String getProperty(String key) { - // this method may be called during initialization of - // system class loader and thus not using lambda - return AccessController.doPrivileged( - new PrivilegedAction() { - @Override - public String run() { - return System.getProperty(key); - } - }); + return GetPropertyAction.getProperty(key); } diff --git a/jdk/src/java.base/share/classes/sun/nio/fs/Util.java b/jdk/src/java.base/share/classes/sun/nio/fs/Util.java index 2d5c8cb6443..45d90b99222 100644 --- a/jdk/src/java.base/share/classes/sun/nio/fs/Util.java +++ b/jdk/src/java.base/share/classes/sun/nio/fs/Util.java @@ -28,8 +28,7 @@ package sun.nio.fs; import java.util.*; import java.nio.file.*; import java.nio.charset.Charset; -import java.security.*; -import sun.security.action.*; +import sun.security.action.GetPropertyAction; /** * Utility methods @@ -39,7 +38,7 @@ class Util { private Util() { } private static final Charset jnuEncoding = Charset.forName( - AccessController.doPrivileged(new GetPropertyAction("sun.jnu.encoding"))); + GetPropertyAction.getProperty("sun.jnu.encoding")); /** * Returns {@code Charset} corresponding to the sun.jnu.encoding property diff --git a/jdk/src/java.base/share/classes/sun/security/action/GetIntegerAction.java b/jdk/src/java.base/share/classes/sun/security/action/GetIntegerAction.java index ff2b2019b48..c454b431861 100644 --- a/jdk/src/java.base/share/classes/sun/security/action/GetIntegerAction.java +++ b/jdk/src/java.base/share/classes/sun/security/action/GetIntegerAction.java @@ -25,6 +25,8 @@ package sun.security.action; +import java.security.AccessController; + /** * A convenience class for retrieving the integer value of a system property * as a privileged action. @@ -67,7 +69,7 @@ public class GetIntegerAction implements java.security.PrivilegedAction { private String theProp; private int defaultVal; - private boolean defaultSet = false; + private boolean defaultSet; /** * Constructor that takes the name of the system property whose integer @@ -110,4 +112,39 @@ public class GetIntegerAction return defaultVal; return value; } + + /** + * Convenience method to get a property without going through doPrivileged + * if no security manager is present. This is unsafe for inclusion in a + * public API but allowable here since this class is now encapsulated. + * + * @param theProp the name of the system property. + */ + public static Integer getProperty(String theProp) { + if (System.getSecurityManager() == null) { + return Integer.getInteger(theProp); + } else { + return AccessController.doPrivileged( + new GetIntegerAction(theProp)); + } + } + + /** + * Convenience method to get a property without going through doPrivileged + * if no security manager is present. This is unsafe for inclusion in a + * public API but allowable here since this class is now encapsulated. + * + * @param theProp the name of the system property. + * @param defaultVal the default value. + */ + public static Integer getProperty(String theProp, int defaultVal) { + Integer value; + if (System.getSecurityManager() == null) { + value = Integer.getInteger(theProp); + } else { + value = AccessController.doPrivileged( + new GetIntegerAction(theProp)); + } + return (value != null) ? value : defaultVal; + } } diff --git a/jdk/src/java.base/share/classes/sun/security/action/GetPropertyAction.java b/jdk/src/java.base/share/classes/sun/security/action/GetPropertyAction.java index 95a113c3bef..bba172b06bc 100644 --- a/jdk/src/java.base/share/classes/sun/security/action/GetPropertyAction.java +++ b/jdk/src/java.base/share/classes/sun/security/action/GetPropertyAction.java @@ -25,6 +25,10 @@ package sun.security.action; +import java.security.AccessController; +import java.security.PrivilegedAction; +import java.util.Properties; + /** * A convenience class for retrieving the string value of a system * property as a privileged action. @@ -46,8 +50,7 @@ package sun.security.action; * @since 1.2 */ -public class GetPropertyAction - implements java.security.PrivilegedAction { +public class GetPropertyAction implements PrivilegedAction { private String theProp; private String defaultVal; @@ -84,4 +87,57 @@ public class GetPropertyAction String value = System.getProperty(theProp); return (value == null) ? defaultVal : value; } + + /** + * Convenience method to get a property without going through doPrivileged + * if no security manager is present. This is unsafe for inclusion in a + * public API but allowable here since this class is now encapsulated. + * + * @param theProp the name of the system property. + */ + public static String getProperty(String theProp) { + if (System.getSecurityManager() == null) { + return System.getProperty(theProp); + } else { + return AccessController.doPrivileged( + new GetPropertyAction(theProp)); + } + } + + /** + * Convenience method to get a property without going through doPrivileged + * if no security manager is present. This is unsafe for inclusion in a + * public API but allowable here since this class is now encapsulated. + * + * @param theProp the name of the system property. + * @param defaultVal the default value. + */ + public static String getProperty(String theProp, String defaultVal) { + if (System.getSecurityManager() == null) { + return System.getProperty(theProp, defaultVal); + } else { + return AccessController.doPrivileged( + new GetPropertyAction(theProp, defaultVal)); + } + } + + /** + * Convenience method to call System.getProperties without + * having to go through doPrivileged if no security manager is present. + * This is unsafe for inclusion in a public API but allowable here since + * this class is now encapsulated. + */ + public static Properties getProperties() { + if (System.getSecurityManager() == null) { + return System.getProperties(); + } else { + return AccessController.doPrivileged( + new PrivilegedAction() { + public Properties run() { + return System.getProperties(); + } + } + ); + } + } } diff --git a/jdk/src/java.base/share/classes/sun/security/provider/DSAKeyFactory.java b/jdk/src/java.base/share/classes/sun/security/provider/DSAKeyFactory.java index 72797aea18b..731f6b13e45 100644 --- a/jdk/src/java.base/share/classes/sun/security/provider/DSAKeyFactory.java +++ b/jdk/src/java.base/share/classes/sun/security/provider/DSAKeyFactory.java @@ -70,8 +70,7 @@ public class DSAKeyFactory extends KeyFactorySpi { * By default this is false. * This incompatibility was introduced by 4532506. */ - String prop = AccessController.doPrivileged - (new GetPropertyAction(SERIAL_PROP, null)); + String prop = GetPropertyAction.getProperty(SERIAL_PROP); SERIAL_INTEROP = "true".equalsIgnoreCase(prop); } diff --git a/jdk/src/java.base/share/classes/sun/security/rsa/RSAKeyFactory.java b/jdk/src/java.base/share/classes/sun/security/rsa/RSAKeyFactory.java index d869a8aaca4..d3497aea557 100644 --- a/jdk/src/java.base/share/classes/sun/security/rsa/RSAKeyFactory.java +++ b/jdk/src/java.base/share/classes/sun/security/rsa/RSAKeyFactory.java @@ -84,9 +84,8 @@ public final class RSAKeyFactory extends KeyFactorySpi { public static final int MAX_RESTRICTED_EXPLEN = 64; private static final boolean restrictExpLen = - "true".equalsIgnoreCase(AccessController.doPrivileged( - new GetPropertyAction( - "sun.security.rsa.restrictRSAExponent", "true"))); + "true".equalsIgnoreCase(GetPropertyAction.getProperty( + "sun.security.rsa.restrictRSAExponent", "true")); // instance used for static translateKey(); private static final RSAKeyFactory INSTANCE = new RSAKeyFactory(); diff --git a/jdk/src/java.base/share/classes/sun/security/ssl/ClientKeyExchangeService.java b/jdk/src/java.base/share/classes/sun/security/ssl/ClientKeyExchangeService.java index 8da221961a0..8f849f8d54f 100644 --- a/jdk/src/java.base/share/classes/sun/security/ssl/ClientKeyExchangeService.java +++ b/jdk/src/java.base/share/classes/sun/security/ssl/ClientKeyExchangeService.java @@ -50,10 +50,7 @@ public interface ClientKeyExchangeService { providers = new HashMap<>(); static { - final String key = "java.home"; - String path = AccessController.doPrivileged( - new GetPropertyAction(key), null, - new PropertyPermission(key, "read")); + String path = GetPropertyAction.getProperty("java.home"); ServiceLoader sc = AccessController.doPrivileged( (PrivilegedAction>) diff --git a/jdk/src/java.base/share/classes/sun/security/ssl/Debug.java b/jdk/src/java.base/share/classes/sun/security/ssl/Debug.java index 494dd3257ba..c05505edf4a 100644 --- a/jdk/src/java.base/share/classes/sun/security/ssl/Debug.java +++ b/jdk/src/java.base/share/classes/sun/security/ssl/Debug.java @@ -26,7 +26,6 @@ package sun.security.ssl; import java.io.PrintStream; -import java.security.AccessController; import java.util.Locale; import sun.security.util.HexDumpEncoder; @@ -46,8 +45,7 @@ public class Debug { private static String args; static { - args = java.security.AccessController.doPrivileged( - new GetPropertyAction("javax.net.debug", "")); + args = GetPropertyAction.getProperty("javax.net.debug", ""); args = args.toLowerCase(Locale.ENGLISH); if (args.equals("help")) { Help(); @@ -184,8 +182,7 @@ public class Debug { */ static boolean getBooleanProperty(String propName, boolean defaultValue) { // if set, require value of either true or false - String b = AccessController.doPrivileged( - new GetPropertyAction(propName)); + String b = GetPropertyAction.getProperty(propName); if (b == null) { return defaultValue; } else if (b.equalsIgnoreCase("false")) { diff --git a/jdk/src/java.base/share/classes/sun/security/ssl/SSLContextImpl.java b/jdk/src/java.base/share/classes/sun/security/ssl/SSLContextImpl.java index 903f6fb376a..f3384c5b746 100644 --- a/jdk/src/java.base/share/classes/sun/security/ssl/SSLContextImpl.java +++ b/jdk/src/java.base/share/classes/sun/security/ssl/SSLContextImpl.java @@ -656,8 +656,7 @@ public abstract class SSLContextImpl extends SSLContextSpi { // the provider service. Instead, please handle the initialization // exception in the caller's constructor. static { - String property = AccessController.doPrivileged( - new GetPropertyAction(PROPERTY_NAME)); + String property = GetPropertyAction.getProperty(PROPERTY_NAME); if (property != null && property.length() != 0) { // remove double quote marks from beginning/end of the property if (property.length() > 1 && property.charAt(0) == '"' && diff --git a/jdk/src/java.base/share/classes/sun/security/ssl/ServerHandshaker.java b/jdk/src/java.base/share/classes/sun/security/ssl/ServerHandshaker.java index 32e434aa6b4..5ce147a3af3 100644 --- a/jdk/src/java.base/share/classes/sun/security/ssl/ServerHandshaker.java +++ b/jdk/src/java.base/share/classes/sun/security/ssl/ServerHandshaker.java @@ -119,8 +119,8 @@ final class ServerHandshaker extends Handshaker { private long statusRespTimeout; static { - String property = AccessController.doPrivileged( - new GetPropertyAction("jdk.tls.ephemeralDHKeySize")); + String property = + GetPropertyAction.getProperty("jdk.tls.ephemeralDHKeySize"); if (property == null || property.length() == 0) { useLegacyEphemeralDHKeys = false; useSmartEphemeralDHKeys = false; diff --git a/jdk/src/java.base/share/classes/sun/security/ssl/StatusResponseManager.java b/jdk/src/java.base/share/classes/sun/security/ssl/StatusResponseManager.java index b618ab31a13..3e21616e48e 100644 --- a/jdk/src/java.base/share/classes/sun/security/ssl/StatusResponseManager.java +++ b/jdk/src/java.base/share/classes/sun/security/ssl/StatusResponseManager.java @@ -73,8 +73,8 @@ final class StatusResponseManager { DEFAULT_CACHE_LIFETIME)); cacheLifetime = life > 0 ? life : 0; - String uriStr = AccessController.doPrivileged( - new GetPropertyAction("jdk.tls.stapling.responderURI")); + String uriStr = + GetPropertyAction.getProperty("jdk.tls.stapling.responderURI"); URI tmpURI; try { tmpURI = ((uriStr != null && !uriStr.isEmpty()) ? diff --git a/jdk/src/java.base/share/classes/sun/security/util/Debug.java b/jdk/src/java.base/share/classes/sun/security/util/Debug.java index 35ce8d66348..514608dc73c 100644 --- a/jdk/src/java.base/share/classes/sun/security/util/Debug.java +++ b/jdk/src/java.base/share/classes/sun/security/util/Debug.java @@ -29,6 +29,7 @@ import java.math.BigInteger; import java.util.regex.Pattern; import java.util.regex.Matcher; import java.util.Locale; +import sun.security.action.GetPropertyAction; /** * A utility class for debuging. @@ -42,13 +43,10 @@ public class Debug { private static String args; static { - args = java.security.AccessController.doPrivileged - (new sun.security.action.GetPropertyAction - ("java.security.debug")); + args = GetPropertyAction.getProperty("java.security.debug"); - String args2 = java.security.AccessController.doPrivileged - (new sun.security.action.GetPropertyAction - ("java.security.auth.debug")); + String args2 = + GetPropertyAction.getProperty("java.security.auth.debug"); if (args == null) { args = args2; diff --git a/jdk/src/java.base/share/classes/sun/util/calendar/LocalGregorianCalendar.java b/jdk/src/java.base/share/classes/sun/util/calendar/LocalGregorianCalendar.java index 10cbbdceee1..90389c73252 100644 --- a/jdk/src/java.base/share/classes/sun/util/calendar/LocalGregorianCalendar.java +++ b/jdk/src/java.base/share/classes/sun/util/calendar/LocalGregorianCalendar.java @@ -27,6 +27,7 @@ package sun.util.calendar; import java.security.AccessController; import java.util.TimeZone; +import sun.security.action.GetPropertyAction; /** * @@ -142,8 +143,8 @@ public class LocalGregorianCalendar extends BaseCalendar { } // Append an era to the predefined eras if it's given by the property. - String prop = AccessController.doPrivileged( - new sun.security.action.GetPropertyAction("jdk.calendar.japanese.supplemental.era")); + String prop = GetPropertyAction + .getProperty("jdk.calendar.japanese.supplemental.era"); if (prop != null) { Era era = parseEraEntry(prop); if (era != null) { diff --git a/jdk/src/java.base/share/classes/sun/util/calendar/ZoneInfoFile.java b/jdk/src/java.base/share/classes/sun/util/calendar/ZoneInfoFile.java index 365e0e7967c..26fbb59a9f4 100644 --- a/jdk/src/java.base/share/classes/sun/util/calendar/ZoneInfoFile.java +++ b/jdk/src/java.base/share/classes/sun/util/calendar/ZoneInfoFile.java @@ -245,11 +245,8 @@ public final class ZoneInfoFile { }; static { - String oldmapping = AccessController.doPrivileged( - new GetPropertyAction("sun.timezone.ids.oldmapping", "false")).toLowerCase(Locale.ROOT); - USE_OLDMAPPING = (oldmapping.equals("yes") || oldmapping.equals("true")); - AccessController.doPrivileged(new PrivilegedAction() { - public Object run() { + USE_OLDMAPPING = AccessController.doPrivileged(new PrivilegedAction() { + public Boolean run() { try { String libDir = System.getProperty("java.home") + File.separator + "lib"; try (DataInputStream dis = new DataInputStream( @@ -260,7 +257,9 @@ public final class ZoneInfoFile { } catch (Exception x) { throw new Error(x); } - return null; + String oldmapping = System.getProperty("sun.timezone.ids.oldmapping", "false") + .toLowerCase(Locale.ROOT); + return (oldmapping.equals("yes") || oldmapping.equals("true")); } }); } diff --git a/jdk/src/java.base/share/classes/sun/util/locale/provider/LocaleProviderAdapter.java b/jdk/src/java.base/share/classes/sun/util/locale/provider/LocaleProviderAdapter.java index e19a6c8c531..75f235c73e7 100644 --- a/jdk/src/java.base/share/classes/sun/util/locale/provider/LocaleProviderAdapter.java +++ b/jdk/src/java.base/share/classes/sun/util/locale/provider/LocaleProviderAdapter.java @@ -25,7 +25,6 @@ package sun.util.locale.provider; -import java.security.AccessController; import java.text.spi.BreakIteratorProvider; import java.text.spi.CollatorProvider; import java.text.spi.DateFormatProvider; @@ -47,6 +46,7 @@ import java.util.spi.CurrencyNameProvider; import java.util.spi.LocaleNameProvider; import java.util.spi.LocaleServiceProvider; import java.util.spi.TimeZoneNameProvider; +import sun.security.action.GetPropertyAction; import sun.util.spi.CalendarProvider; /** @@ -116,8 +116,7 @@ public abstract class LocaleProviderAdapter { adapterCache = new ConcurrentHashMap<>(); static { - String order = AccessController.doPrivileged( - new sun.security.action.GetPropertyAction("java.locale.providers")); + String order = GetPropertyAction.getProperty("java.locale.providers"); List typeList = new ArrayList<>(); // Check user specified adapter preference diff --git a/jdk/src/java.base/solaris/classes/sun/nio/fs/SolarisFileSystem.java b/jdk/src/java.base/solaris/classes/sun/nio/fs/SolarisFileSystem.java index 8b4177e3fde..140473283c8 100644 --- a/jdk/src/java.base/solaris/classes/sun/nio/fs/SolarisFileSystem.java +++ b/jdk/src/java.base/solaris/classes/sun/nio/fs/SolarisFileSystem.java @@ -28,7 +28,6 @@ package sun.nio.fs; import java.nio.file.*; import java.io.IOException; import java.util.*; -import java.security.AccessController; import sun.security.action.GetPropertyAction; import static sun.nio.fs.SolarisNativeDispatcher.*; @@ -43,8 +42,7 @@ class SolarisFileSystem extends UnixFileSystem { super(provider, dir); // check os.version - String osversion = AccessController - .doPrivileged(new GetPropertyAction("os.version")); + String osversion = GetPropertyAction.getProperty("os.version"); String[] vers = Util.split(osversion, '.'); assert vers.length >= 2; int majorVersion = Integer.parseInt(vers[0]); diff --git a/jdk/src/java.base/solaris/classes/sun/nio/fs/SolarisFileSystemProvider.java b/jdk/src/java.base/solaris/classes/sun/nio/fs/SolarisFileSystemProvider.java index 4fcb617a200..affdfb96c7f 100644 --- a/jdk/src/java.base/solaris/classes/sun/nio/fs/SolarisFileSystemProvider.java +++ b/jdk/src/java.base/solaris/classes/sun/nio/fs/SolarisFileSystemProvider.java @@ -29,7 +29,6 @@ import java.nio.file.*; import java.nio.file.attribute.*; import java.nio.file.spi.FileTypeDetector; import java.io.IOException; -import java.security.AccessController; import sun.security.action.GetPropertyAction; /** @@ -85,8 +84,8 @@ public class SolarisFileSystemProvider extends UnixFileSystemProvider { @Override FileTypeDetector getFileTypeDetector() { - Path userMimeTypes = Paths.get(AccessController.doPrivileged( - new GetPropertyAction("user.home")), ".mime.types"); + Path userMimeTypes = Paths.get( + GetPropertyAction.getProperty("user.home"), ".mime.types"); Path etcMimeTypes = Paths.get("/etc/mime.types"); return chain(new GioFileTypeDetector(), diff --git a/jdk/src/java.base/unix/classes/java/io/UnixFileSystem.java b/jdk/src/java.base/unix/classes/java/io/UnixFileSystem.java index c0ca02dd4ad..c829994cc85 100644 --- a/jdk/src/java.base/unix/classes/java/io/UnixFileSystem.java +++ b/jdk/src/java.base/unix/classes/java/io/UnixFileSystem.java @@ -25,7 +25,7 @@ package java.io; -import java.security.AccessController; +import java.util.Properties; import sun.security.action.GetPropertyAction; @@ -36,12 +36,10 @@ class UnixFileSystem extends FileSystem { private final String javaHome; public UnixFileSystem() { - slash = AccessController.doPrivileged( - new GetPropertyAction("file.separator")).charAt(0); - colon = AccessController.doPrivileged( - new GetPropertyAction("path.separator")).charAt(0); - javaHome = AccessController.doPrivileged( - new GetPropertyAction("java.home")); + Properties props = GetPropertyAction.getProperties(); + slash = props.getProperty("file.separator").charAt(0); + colon = props.getProperty("path.separator").charAt(0); + javaHome = props.getProperty("java.home"); } diff --git a/jdk/src/java.base/unix/classes/java/lang/ProcessImpl.java b/jdk/src/java.base/unix/classes/java/lang/ProcessImpl.java index 5f9a546f4bd..8a1b8ca085e 100644 --- a/jdk/src/java.base/unix/classes/java/lang/ProcessImpl.java +++ b/jdk/src/java.base/unix/classes/java/lang/ProcessImpl.java @@ -46,8 +46,10 @@ import static java.security.AccessController.doPrivileged; import java.security.PrivilegedAction; import java.security.PrivilegedActionException; import java.security.PrivilegedExceptionAction; +import java.util.Properties; import jdk.internal.misc.JavaIOFileDescriptorAccess; import jdk.internal.misc.SharedSecrets; +import sun.security.action.GetPropertyAction; /** * java.lang.Process subclass in the UNIX environment. @@ -123,11 +125,9 @@ final class ProcessImpl extends Process { } String helperPath() { - return AccessController.doPrivileged( - (PrivilegedAction) () -> - helperPath(System.getProperty("java.home"), - System.getProperty("os.arch")) - ); + Properties props = GetPropertyAction.getProperties(); + return helperPath(props.getProperty("java.home"), + props.getProperty("os.arch")); } LaunchMechanism launchMechanism() { @@ -159,9 +159,7 @@ final class ProcessImpl extends Process { } static Platform get() { - String osName = AccessController.doPrivileged( - (PrivilegedAction) () -> System.getProperty("os.name") - ); + String osName = GetPropertyAction.getProperty("os.name"); if (osName.equals("Linux")) { return LINUX; } if (osName.contains("OS X")) { return BSD; } diff --git a/jdk/src/java.base/unix/classes/java/net/DefaultDatagramSocketImplFactory.java b/jdk/src/java.base/unix/classes/java/net/DefaultDatagramSocketImplFactory.java index ad62c582691..dd1a6548d6a 100644 --- a/jdk/src/java.base/unix/classes/java/net/DefaultDatagramSocketImplFactory.java +++ b/jdk/src/java.base/unix/classes/java/net/DefaultDatagramSocketImplFactory.java @@ -24,7 +24,7 @@ */ package java.net; -import java.security.AccessController; +import sun.security.action.GetPropertyAction; /** * This class defines a factory for creating DatagramSocketImpls. It defaults @@ -40,8 +40,7 @@ class DefaultDatagramSocketImplFactory { static { String prefix = null; try { - prefix = AccessController.doPrivileged( - new sun.security.action.GetPropertyAction("impl.prefix", null)); + prefix = GetPropertyAction.getProperty("impl.prefix", null); if (prefix != null) prefixImplClass = Class.forName("java.net."+prefix+"DatagramSocketImpl"); } catch (Exception e) { diff --git a/jdk/src/java.base/unix/classes/sun/net/sdp/SdpProvider.java b/jdk/src/java.base/unix/classes/sun/net/sdp/SdpProvider.java index 2b1c3fd841e..a9f15a617f0 100644 --- a/jdk/src/java.base/unix/classes/sun/net/sdp/SdpProvider.java +++ b/jdk/src/java.base/unix/classes/sun/net/sdp/SdpProvider.java @@ -34,7 +34,6 @@ import java.io.File; import java.io.FileDescriptor; import java.io.IOException; import java.io.PrintStream; -import java.security.AccessController; import sun.net.sdp.SdpSupport; import sun.security.action.GetPropertyAction; @@ -57,8 +56,7 @@ public class SdpProvider extends NetHooks.Provider { public SdpProvider() { // if this property is not defined then there is nothing to do. - String file = AccessController.doPrivileged( - new GetPropertyAction("com.sun.sdp.conf")); + String file = GetPropertyAction.getProperty("com.sun.sdp.conf"); if (file == null) { this.enabled = false; this.rules = null; @@ -77,8 +75,7 @@ public class SdpProvider extends NetHooks.Provider { // check if debugging is enabled PrintStream out = null; - String logfile = AccessController.doPrivileged( - new GetPropertyAction("com.sun.sdp.debug")); + String logfile = GetPropertyAction.getProperty("com.sun.sdp.debug"); if (logfile != null) { out = System.out; if (logfile.length() > 0) { diff --git a/jdk/src/java.base/unix/classes/sun/net/www/protocol/http/ntlm/NTLMAuthentication.java b/jdk/src/java.base/unix/classes/sun/net/www/protocol/http/ntlm/NTLMAuthentication.java index 0e067d0681f..f205eaf7545 100644 --- a/jdk/src/java.base/unix/classes/sun/net/www/protocol/http/ntlm/NTLMAuthentication.java +++ b/jdk/src/java.base/unix/classes/sun/net/www/protocol/http/ntlm/NTLMAuthentication.java @@ -39,6 +39,7 @@ import sun.net.www.HeaderParser; import sun.net.www.protocol.http.AuthenticationInfo; import sun.net.www.protocol.http.AuthScheme; import sun.net.www.protocol.http.HttpURLConnection; +import sun.security.action.GetPropertyAction; /** * NTLMAuthentication: @@ -73,12 +74,9 @@ public class NTLMAuthentication extends AuthenticationInfo { NTLMAuthenticationCallback.getNTLMAuthenticationCallback(); private String hostname; - private static String defaultDomain; /* Domain to use if not specified by user */ - - static { - defaultDomain = java.security.AccessController.doPrivileged( - new sun.security.action.GetPropertyAction("http.auth.ntlm.domain", "")); - }; + /* Domain to use if not specified by user */ + private static String defaultDomain = + GetPropertyAction.getProperty("http.auth.ntlm.domain", ""); public static boolean supportsTransparentAuth () { return false; @@ -143,8 +141,7 @@ public class NTLMAuthentication extends AuthenticationInfo { password = pw.getPassword(); init0(); try { - String version = java.security.AccessController.doPrivileged( - new sun.security.action.GetPropertyAction("ntlm.version")); + String version = GetPropertyAction.getProperty("ntlm.version"); client = new Client(version, hostname, username, ntdomain, password); } catch (NTLMException ne) { try { diff --git a/jdk/src/java.base/unix/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java b/jdk/src/java.base/unix/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java index 7a0ce392299..9018f0fe6a0 100644 --- a/jdk/src/java.base/unix/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java +++ b/jdk/src/java.base/unix/classes/sun/nio/ch/DefaultAsynchronousChannelProvider.java @@ -26,7 +26,6 @@ package sun.nio.ch; import java.nio.channels.spi.AsynchronousChannelProvider; -import java.security.AccessController; import sun.security.action.GetPropertyAction; /** @@ -60,8 +59,7 @@ public class DefaultAsynchronousChannelProvider { * Returns the default AsynchronousChannelProvider. */ public static AsynchronousChannelProvider create() { - String osname = AccessController - .doPrivileged(new GetPropertyAction("os.name")); + String osname = GetPropertyAction.getProperty("os.name"); if (osname.equals("SunOS")) return createProvider("sun.nio.ch.SolarisAsynchronousChannelProvider"); if (osname.equals("Linux")) diff --git a/jdk/src/java.base/unix/classes/sun/nio/ch/UnixAsynchronousSocketChannelImpl.java b/jdk/src/java.base/unix/classes/sun/nio/ch/UnixAsynchronousSocketChannelImpl.java index 3307c40d8c5..f8c31b5ac94 100644 --- a/jdk/src/java.base/unix/classes/sun/nio/ch/UnixAsynchronousSocketChannelImpl.java +++ b/jdk/src/java.base/unix/classes/sun/nio/ch/UnixAsynchronousSocketChannelImpl.java @@ -31,7 +31,6 @@ import java.net.*; import java.util.concurrent.*; import java.io.IOException; import java.io.FileDescriptor; -import java.security.AccessController; import sun.net.NetHooks; import sun.security.action.GetPropertyAction; @@ -47,8 +46,8 @@ class UnixAsynchronousSocketChannelImpl private static final boolean disableSynchronousRead; static { - String propValue = AccessController.doPrivileged( - new GetPropertyAction("sun.nio.ch.disableSynchronousRead", "false")); + String propValue = GetPropertyAction + .getProperty("sun.nio.ch.disableSynchronousRead", "false"); disableSynchronousRead = (propValue.length() == 0) ? true : Boolean.valueOf(propValue); } diff --git a/jdk/src/java.base/unix/classes/sun/nio/fs/DefaultFileSystemProvider.java b/jdk/src/java.base/unix/classes/sun/nio/fs/DefaultFileSystemProvider.java index 595f3c6d187..62f6d5ce145 100644 --- a/jdk/src/java.base/unix/classes/sun/nio/fs/DefaultFileSystemProvider.java +++ b/jdk/src/java.base/unix/classes/sun/nio/fs/DefaultFileSystemProvider.java @@ -26,7 +26,6 @@ package sun.nio.fs; import java.nio.file.spi.FileSystemProvider; -import java.security.AccessController; import sun.security.action.GetPropertyAction; /** @@ -55,8 +54,7 @@ public class DefaultFileSystemProvider { * Returns the default FileSystemProvider. */ public static FileSystemProvider create() { - String osname = AccessController - .doPrivileged(new GetPropertyAction("os.name")); + String osname = GetPropertyAction.getProperty("os.name"); if (osname.equals("SunOS")) return createProvider("sun.nio.fs.SolarisFileSystemProvider"); if (osname.equals("Linux")) diff --git a/jdk/src/java.base/unix/classes/sun/nio/fs/UnixFileSystem.java b/jdk/src/java.base/unix/classes/sun/nio/fs/UnixFileSystem.java index d394ac10173..7cf295b0d6d 100644 --- a/jdk/src/java.base/unix/classes/sun/nio/fs/UnixFileSystem.java +++ b/jdk/src/java.base/unix/classes/sun/nio/fs/UnixFileSystem.java @@ -31,7 +31,6 @@ import java.nio.file.spi.*; import java.io.IOException; import java.util.*; import java.util.regex.Pattern; -import java.security.AccessController; import sun.security.action.GetPropertyAction; /** @@ -57,8 +56,8 @@ abstract class UnixFileSystem // if process-wide chdir is allowed or default directory is not the // process working directory then paths must be resolved against the // default directory. - String propValue = AccessController.doPrivileged( - new GetPropertyAction("sun.nio.fs.chdirAllowed", "false")); + String propValue = GetPropertyAction + .getProperty("sun.nio.fs.chdirAllowed", "false"); boolean chdirAllowed = (propValue.length() == 0) ? true : Boolean.valueOf(propValue); if (chdirAllowed) { diff --git a/jdk/src/java.base/windows/classes/java/io/WinNTFileSystem.java b/jdk/src/java.base/windows/classes/java/io/WinNTFileSystem.java index 9ee66bf4169..50ccacc3d1e 100644 --- a/jdk/src/java.base/windows/classes/java/io/WinNTFileSystem.java +++ b/jdk/src/java.base/windows/classes/java/io/WinNTFileSystem.java @@ -25,8 +25,8 @@ package java.io; -import java.security.AccessController; import java.util.Locale; +import java.util.Properties; import sun.security.action.GetPropertyAction; /** @@ -42,10 +42,9 @@ class WinNTFileSystem extends FileSystem { private final char semicolon; public WinNTFileSystem() { - slash = AccessController.doPrivileged( - new GetPropertyAction("file.separator")).charAt(0); - semicolon = AccessController.doPrivileged( - new GetPropertyAction("path.separator")).charAt(0); + Properties props = GetPropertyAction.getProperties(); + slash = props.getProperty("file.separator").charAt(0); + semicolon = props.getProperty("path.separator").charAt(0); altSlash = (this.slash == '\\') ? '/' : '\\'; } diff --git a/jdk/src/java.base/windows/classes/java/net/DefaultDatagramSocketImplFactory.java b/jdk/src/java.base/windows/classes/java/net/DefaultDatagramSocketImplFactory.java index fb632a4a816..c12378da67d 100644 --- a/jdk/src/java.base/windows/classes/java/net/DefaultDatagramSocketImplFactory.java +++ b/jdk/src/java.base/windows/classes/java/net/DefaultDatagramSocketImplFactory.java @@ -24,8 +24,7 @@ */ package java.net; -import java.security.AccessController; -import java.security.PrivilegedAction; +import java.util.Properties; import sun.security.action.GetPropertyAction; /** @@ -57,12 +56,11 @@ class DefaultDatagramSocketImplFactory static { Class prefixImplClassLocal = null; + Properties props = GetPropertyAction.getProperties(); preferIPv4Stack = Boolean.parseBoolean( - AccessController.doPrivileged( - new GetPropertyAction("java.net.preferIPv4Stack"))); + props.getProperty("java.net.preferIPv4Stack")); - String exclBindProp = AccessController.doPrivileged( - new GetPropertyAction("sun.net.useExclusiveBind", "")); + String exclBindProp = props.getProperty("sun.net.useExclusiveBind", ""); exclusiveBind = (exclBindProp.isEmpty()) ? true : Boolean.parseBoolean(exclBindProp); @@ -70,8 +68,7 @@ class DefaultDatagramSocketImplFactory // impl.prefix String prefix = null; try { - prefix = AccessController.doPrivileged( - new GetPropertyAction("impl.prefix", null)); + prefix = props.getProperty("impl.prefix"); if (prefix != null) prefixImplClassLocal = Class.forName("java.net."+prefix+"DatagramSocketImpl"); } catch (Exception e) { diff --git a/jdk/src/java.base/windows/classes/sun/net/www/protocol/http/ntlm/NTLMAuthentication.java b/jdk/src/java.base/windows/classes/sun/net/www/protocol/http/ntlm/NTLMAuthentication.java index 0e17de44b4c..5583842d0cb 100644 --- a/jdk/src/java.base/windows/classes/sun/net/www/protocol/http/ntlm/NTLMAuthentication.java +++ b/jdk/src/java.base/windows/classes/sun/net/www/protocol/http/ntlm/NTLMAuthentication.java @@ -34,6 +34,7 @@ import sun.net.www.HeaderParser; import sun.net.www.protocol.http.AuthenticationInfo; import sun.net.www.protocol.http.AuthScheme; import sun.net.www.protocol.http.HttpURLConnection; +import sun.security.action.GetPropertyAction; /** * NTLMAuthentication: @@ -52,9 +53,8 @@ public class NTLMAuthentication extends AuthenticationInfo { private static String defaultDomain; /* Domain to use if not specified by user */ static { - defaultDomain = java.security.AccessController.doPrivileged( - new sun.security.action.GetPropertyAction("http.auth.ntlm.domain", - "domain")); + defaultDomain = GetPropertyAction.getProperty("http.auth.ntlm.domain", + "domain"); }; private void init0() { diff --git a/jdk/src/java.base/windows/classes/sun/nio/ch/FileDispatcherImpl.java b/jdk/src/java.base/windows/classes/sun/nio/ch/FileDispatcherImpl.java index 4b812d35a4d..5390b55a3ab 100644 --- a/jdk/src/java.base/windows/classes/sun/nio/ch/FileDispatcherImpl.java +++ b/jdk/src/java.base/windows/classes/sun/nio/ch/FileDispatcherImpl.java @@ -27,9 +27,9 @@ package sun.nio.ch; import java.io.FileDescriptor; import java.io.IOException; -import java.security.PrivilegedAction; import jdk.internal.misc.SharedSecrets; import jdk.internal.misc.JavaIOFileDescriptorAccess; +import sun.security.action.GetPropertyAction; class FileDispatcherImpl extends FileDispatcher { @@ -119,13 +119,8 @@ class FileDispatcherImpl extends FileDispatcher { } static boolean isFastFileTransferRequested() { - String fileTransferProp = java.security.AccessController.doPrivileged( - new PrivilegedAction() { - @Override - public String run() { - return System.getProperty("jdk.nio.enableFastFileTransfer"); - } - }); + String fileTransferProp = GetPropertyAction + .getProperty("jdk.nio.enableFastFileTransfer"); boolean enable; if ("".equals(fileTransferProp)) { enable = true; diff --git a/jdk/src/java.base/windows/classes/sun/nio/fs/WindowsFileAttributes.java b/jdk/src/java.base/windows/classes/sun/nio/fs/WindowsFileAttributes.java index 02226053f8d..4d2d3e97c4c 100644 --- a/jdk/src/java.base/windows/classes/sun/nio/fs/WindowsFileAttributes.java +++ b/jdk/src/java.base/windows/classes/sun/nio/fs/WindowsFileAttributes.java @@ -27,7 +27,6 @@ package sun.nio.fs; import java.nio.file.attribute.*; import java.util.concurrent.TimeUnit; -import java.security.AccessController; import jdk.internal.misc.Unsafe; import sun.security.action.GetPropertyAction; @@ -115,8 +114,8 @@ class WindowsFileAttributes // indicates if accurate metadata is required (interesting on NTFS only) private static final boolean ensureAccurateMetadata; static { - String propValue = AccessController.doPrivileged( - new GetPropertyAction("sun.nio.fs.ensureAccurateMetadata", "false")); + String propValue = GetPropertyAction + .getProperty("sun.nio.fs.ensureAccurateMetadata", "false"); ensureAccurateMetadata = (propValue.length() == 0) ? true : Boolean.valueOf(propValue); }