From ebcc6da40394e6a60668acc09b42a008e4b1780f Mon Sep 17 00:00:00 2001 From: Santiago Pericasgeertsen Date: Fri, 1 Oct 2021 10:45:20 -0400 Subject: [PATCH] Remove uses of SecurityManager and AccessController dependencies (#3440) * Remove SecurityManager and AccessController dependencies in preparation for their deprecation in JDK 17. * Reverted changes in GRPC core package since it requires updating public APIs. Signed-off-by: Santiago Pericasgeertsen --- .../helidon/config/ConfigThreadFactory.java | 5 ++-- .../extension/RestClientSubstitution.java | 28 ++----------------- .../jersey/connector/HelidonConnector.java | 5 ++-- .../cdi/HelidonProxyServices.java | 4 +-- 4 files changed, 7 insertions(+), 35 deletions(-) diff --git a/config/config/src/main/java/io/helidon/config/ConfigThreadFactory.java b/config/config/src/main/java/io/helidon/config/ConfigThreadFactory.java index c37528b98a2..be7511a28b8 100644 --- a/config/config/src/main/java/io/helidon/config/ConfigThreadFactory.java +++ b/config/config/src/main/java/io/helidon/config/ConfigThreadFactory.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Oracle and/or its affiliates. + * Copyright (c) 2020, 2021 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -37,8 +37,7 @@ class ConfigThreadFactory implements ThreadFactory { * @param type name of type of thread factory used just to customize thread name */ ConfigThreadFactory(String type) { - SecurityManager s = System.getSecurityManager(); - group = (s != null) ? s.getThreadGroup() : Thread.currentThread().getThreadGroup(); + group = Thread.currentThread().getThreadGroup(); namePrefix = "config-" + POOL_NUMBER.getAndIncrement() + ":" + type + "-"; ccl = Thread.currentThread().getContextClassLoader(); daemon = true; diff --git a/integrations/graal/mp-native-image-extension/src/main/java/io/helidon/integrations/graal/mp/nativeimage/extension/RestClientSubstitution.java b/integrations/graal/mp-native-image-extension/src/main/java/io/helidon/integrations/graal/mp/nativeimage/extension/RestClientSubstitution.java index 103bb48dff5..52efc2d9cda 100644 --- a/integrations/graal/mp-native-image-extension/src/main/java/io/helidon/integrations/graal/mp/nativeimage/extension/RestClientSubstitution.java +++ b/integrations/graal/mp-native-image-extension/src/main/java/io/helidon/integrations/graal/mp/nativeimage/extension/RestClientSubstitution.java @@ -18,8 +18,6 @@ import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; -import java.security.AccessController; -import java.security.PrivilegedAction; import java.util.function.BooleanSupplier; import com.oracle.svm.core.annotate.Substitute; @@ -35,32 +33,10 @@ static final class ReflectionUtilSubstitution { @SuppressWarnings("unchecked") @Substitute static T createProxyInstance(Class restClientClass) { - return AccessController.doPrivileged(new ProxyPrivilegedAction<>(restClientClass)); - } - } - - /** - * Only for native image. - * @param type - */ - public static class ProxyPrivilegedAction implements PrivilegedAction { - private final Class proxyInterface; - - /** - * Only for native image. - * @param proxyInterface never call directly - */ - public ProxyPrivilegedAction(Class proxyInterface) { - this.proxyInterface = proxyInterface; - } - - @SuppressWarnings("unchecked") - @Override - public T run() { ClassLoader cl = Thread.currentThread().getContextClassLoader(); return (T) Proxy.newProxyInstance(cl, - new Class[] {proxyInterface}, - new DefaultMethodProxyHandler()); + new Class[] {restClientClass}, + new DefaultMethodProxyHandler()); } } diff --git a/jersey/connector/src/main/java/io/helidon/jersey/connector/HelidonConnector.java b/jersey/connector/src/main/java/io/helidon/jersey/connector/HelidonConnector.java index 202a4b8e8d3..1d23145644d 100644 --- a/jersey/connector/src/main/java/io/helidon/jersey/connector/HelidonConnector.java +++ b/jersey/connector/src/main/java/io/helidon/jersey/connector/HelidonConnector.java @@ -19,7 +19,6 @@ import java.io.FilterInputStream; import java.io.IOException; import java.io.InputStream; -import java.security.AccessController; import java.util.List; import java.util.Map; import java.util.Optional; @@ -60,8 +59,8 @@ */ class HelidonConnector implements Connector { - private static final String HELIDON_VERSION = "Helidon/" + Version.VERSION + " (java " + AccessController - .doPrivileged(PropertiesHelper.getSystemProperty("java.runtime.version")) + ")"; + private static final String HELIDON_VERSION = "Helidon/" + Version.VERSION + " (java " + + PropertiesHelper.getSystemProperty("java.runtime.version") + ")"; static final Logger LOGGER = Logger.getLogger(HelidonConnector.class.getName()); private final WebClient webClient; diff --git a/microprofile/cdi/src/main/java/io/helidon/microprofile/cdi/HelidonProxyServices.java b/microprofile/cdi/src/main/java/io/helidon/microprofile/cdi/HelidonProxyServices.java index 67031991e1c..200fc98573f 100644 --- a/microprofile/cdi/src/main/java/io/helidon/microprofile/cdi/HelidonProxyServices.java +++ b/microprofile/cdi/src/main/java/io/helidon/microprofile/cdi/HelidonProxyServices.java @@ -17,8 +17,6 @@ package io.helidon.microprofile.cdi; import java.lang.invoke.MethodHandles; -import java.security.AccessController; -import java.security.PrivilegedAction; import java.security.ProtectionDomain; import java.util.Collections; import java.util.IdentityHashMap; @@ -204,7 +202,7 @@ private ClassDefiningCl wrapCl(ClassLoader origCl) { } private ClassDefiningCl createCl(ClassLoader parent) { - return AccessController.doPrivileged((PrivilegedAction) () -> new ClassDefiningCl(parent)); + return new ClassDefiningCl(parent); } // a classloader that exposes define class methods