Remove support for Security Manager
diff --git a/jaxrs-api/src/main/java/jakarta/ws/rs/client/ClientBuilder.java b/jaxrs-api/src/main/java/jakarta/ws/rs/client/ClientBuilder.java
index efe304d..f3262cd 100644
--- a/jaxrs-api/src/main/java/jakarta/ws/rs/client/ClientBuilder.java
+++ b/jaxrs-api/src/main/java/jakarta/ws/rs/client/ClientBuilder.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
@@ -19,9 +19,7 @@
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import java.net.URL;
-import java.security.AccessController;
import java.security.KeyStore;
-import java.security.PrivilegedAction;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
@@ -61,14 +59,17 @@
try {
Object delegate = FactoryFinder.find(JAXRS_DEFAULT_CLIENT_BUILDER_PROPERTY, ClientBuilder.class);
if (!(delegate instanceof ClientBuilder)) {
- final CreateErrorMessageAction action = new CreateErrorMessageAction(delegate);
- final String errorMessage;
- if (System.getSecurityManager() == null) {
- errorMessage = action.run();
- } else {
- errorMessage = AccessController.doPrivileged(action);
+ Class<?> pClass = ClientBuilder.class;
+ String classnameAsResource = pClass.getName().replace('.', '/') + ".class";
+ ClassLoader loader = pClass.getClassLoader();
+ if (loader == null) {
+ loader = ClassLoader.getSystemClassLoader();
}
- throw new LinkageError(errorMessage);
+ URL targetTypeURL = loader.getResource(classnameAsResource);
+ final String errorMessage = "ClassCastException: attempting to cast"
+ + delegate.getClass().getClassLoader().getResource(classnameAsResource)
+ + " to " + targetTypeURL;
+ throw new LinkageError(errorMessage);
}
return (ClientBuilder) delegate;
} catch (Exception ex) {
@@ -271,26 +272,4 @@
* @return a new client instance.
*/
public abstract Client build();
-
- private static final class CreateErrorMessageAction implements PrivilegedAction<String> {
- private final Object delegate;
-
- private CreateErrorMessageAction(final Object delegate) {
- this.delegate = delegate;
- }
-
- @Override
- public String run() {
- Class<?> pClass = ClientBuilder.class;
- String classnameAsResource = pClass.getName().replace('.', '/') + ".class";
- ClassLoader loader = pClass.getClassLoader();
- if (loader == null) {
- loader = ClassLoader.getSystemClassLoader();
- }
- URL targetTypeURL = loader.getResource(classnameAsResource);
- return "ClassCastException: attempting to cast"
- + delegate.getClass().getClassLoader().getResource(classnameAsResource)
- + " to " + targetTypeURL;
- }
- }
}
diff --git a/jaxrs-api/src/main/java/jakarta/ws/rs/client/FactoryFinder.java b/jaxrs-api/src/main/java/jakarta/ws/rs/client/FactoryFinder.java
index 74deb05..e8e4b7b 100644
--- a/jaxrs-api/src/main/java/jakarta/ws/rs/client/FactoryFinder.java
+++ b/jaxrs-api/src/main/java/jakarta/ws/rs/client/FactoryFinder.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
@@ -19,8 +19,6 @@
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
import java.util.Properties;
import java.util.ServiceLoader;
import java.util.logging.Level;
@@ -43,23 +41,7 @@
}
static ClassLoader getContextClassLoader() {
- // For performance reasons, check if a security manager is installed. If not there is no need to use a
- // privileged action.
- if (System.getSecurityManager() == null) {
- return Thread.currentThread().getContextClassLoader();
- }
- return AccessController.doPrivileged((PrivilegedAction<ClassLoader>) () -> {
- ClassLoader cl = null;
- try {
- cl = Thread.currentThread().getContextClassLoader();
- } catch (SecurityException ex) {
- LOGGER.log(
- Level.WARNING,
- "Unable to get context classloader instance.",
- ex);
- }
- return cl;
- });
+ return Thread.currentThread().getContextClassLoader();
}
/**
@@ -165,27 +147,18 @@
}
private static ClassLoader getClassLoader() {
- if (System.getSecurityManager() == null) {
- return FactoryFinder.class.getClassLoader();
- }
- return AccessController.doPrivileged((PrivilegedAction<ClassLoader>) FactoryFinder.class::getClassLoader);
+ return FactoryFinder.class.getClassLoader();
}
private static <T> T findFirstService(final String factoryId, final ClassLoader cl, final Class<T> service) {
- final PrivilegedAction<T> action = () -> {
- try {
- final ServiceLoader<T> loader = ServiceLoader.load(service, cl);
- if (loader.iterator().hasNext()) {
- return loader.iterator().next();
- }
- } catch (Exception e) {
- LOGGER.log(Level.FINER, "Failed to load service " + factoryId + ".", e);
+ try {
+ final ServiceLoader<T> loader = ServiceLoader.load(service, cl);
+ if (loader.iterator().hasNext()) {
+ return loader.iterator().next();
}
- return null;
- };
- if (System.getSecurityManager() == null) {
- return action.run();
+ } catch (Exception e) {
+ LOGGER.log(Level.FINER, "Failed to load service " + factoryId + ".", e);
}
- return AccessController.doPrivileged(action);
+ return null;
}
}
diff --git a/jaxrs-api/src/main/java/jakarta/ws/rs/ext/FactoryFinder.java b/jaxrs-api/src/main/java/jakarta/ws/rs/ext/FactoryFinder.java
index bbd5afd..e2b13ba 100644
--- a/jaxrs-api/src/main/java/jakarta/ws/rs/ext/FactoryFinder.java
+++ b/jaxrs-api/src/main/java/jakarta/ws/rs/ext/FactoryFinder.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
@@ -43,23 +43,7 @@
}
private static ClassLoader getContextClassLoader() {
- // For performance reasons, check if a security manager is installed. If not there is no need to use a
- // privileged action.
- if (System.getSecurityManager() == null) {
- return Thread.currentThread().getContextClassLoader();
- }
- return AccessController.doPrivileged((PrivilegedAction<ClassLoader>) () -> {
- ClassLoader cl = null;
- try {
- cl = Thread.currentThread().getContextClassLoader();
- } catch (SecurityException ex) {
- LOGGER.log(
- Level.WARNING,
- "Unable to get context classloader instance.",
- ex);
- }
- return cl;
- });
+ return Thread.currentThread().getContextClassLoader();
}
/**
@@ -165,27 +149,18 @@
}
private static ClassLoader getClassLoader() {
- if (System.getSecurityManager() == null) {
- return FactoryFinder.class.getClassLoader();
- }
- return AccessController.doPrivileged((PrivilegedAction<ClassLoader>) FactoryFinder.class::getClassLoader);
+ return FactoryFinder.class.getClassLoader();
}
private static <T> T findFirstService(final String factoryId, final ClassLoader cl, final Class<T> service) {
- final PrivilegedAction<T> action = () -> {
- try {
- final ServiceLoader<T> loader = ServiceLoader.load(service, cl);
- if (loader.iterator().hasNext()) {
- return loader.iterator().next();
- }
- } catch (Exception e) {
- LOGGER.log(Level.FINER, "Failed to load service " + factoryId + ".", e);
+ try {
+ final ServiceLoader<T> loader = ServiceLoader.load(service, cl);
+ if (loader.iterator().hasNext()) {
+ return loader.iterator().next();
}
- return null;
- };
- if (System.getSecurityManager() == null) {
- return action.run();
+ } catch (Exception e) {
+ LOGGER.log(Level.FINER, "Failed to load service " + factoryId + ".", e);
}
- return AccessController.doPrivileged(action);
+ return null;
}
}
diff --git a/jaxrs-api/src/main/java/jakarta/ws/rs/ext/RuntimeDelegate.java b/jaxrs-api/src/main/java/jakarta/ws/rs/ext/RuntimeDelegate.java
index 3570e51..4f85a3a 100644
--- a/jaxrs-api/src/main/java/jakarta/ws/rs/ext/RuntimeDelegate.java
+++ b/jaxrs-api/src/main/java/jakarta/ws/rs/ext/RuntimeDelegate.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2021 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
@@ -16,7 +16,6 @@
package jakarta.ws.rs.ext;
-import java.lang.reflect.ReflectPermission;
import java.net.URL;
import java.util.concurrent.CompletionStage;
@@ -46,7 +45,6 @@
*/
public static final String JAXRS_RUNTIME_DELEGATE_PROPERTY = "jakarta.ws.rs.ext.RuntimeDelegate";
private static final Object RD_LOCK = new Object();
- private static ReflectPermission suppressAccessChecksPermission = new ReflectPermission("suppressAccessChecks");
private static volatile RuntimeDelegate cachedDelegate;
/**
@@ -124,14 +122,8 @@
* {@link #getInstance} then an implementation will be sought as described in {@link #getInstance}.
*
* @param rd the runtime delegate instance
- * @throws SecurityException if there is a security manager and the permission ReflectPermission("suppressAccessChecks")
- * has not been granted.
*/
public static void setInstance(final RuntimeDelegate rd) {
- SecurityManager security = System.getSecurityManager();
- if (security != null) {
- security.checkPermission(suppressAccessChecksPermission);
- }
synchronized (RD_LOCK) {
RuntimeDelegate.cachedDelegate = rd;
}
diff --git a/jaxrs-api/src/main/java/jakarta/ws/rs/sse/FactoryFinder.java b/jaxrs-api/src/main/java/jakarta/ws/rs/sse/FactoryFinder.java
index 40440ae..4a020a5 100644
--- a/jaxrs-api/src/main/java/jakarta/ws/rs/sse/FactoryFinder.java
+++ b/jaxrs-api/src/main/java/jakarta/ws/rs/sse/FactoryFinder.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
@@ -19,8 +19,6 @@
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
import java.util.Properties;
import java.util.ServiceLoader;
import java.util.logging.Level;
@@ -43,23 +41,7 @@
}
private static ClassLoader getContextClassLoader() {
- // For performance reasons, check if a security manager is installed. If not there is no need to use a
- // privileged action.
- if (System.getSecurityManager() == null) {
- return Thread.currentThread().getContextClassLoader();
- }
- return AccessController.doPrivileged((PrivilegedAction<ClassLoader>) () -> {
- ClassLoader cl = null;
- try {
- cl = Thread.currentThread().getContextClassLoader();
- } catch (SecurityException ex) {
- LOGGER.log(
- Level.WARNING,
- "Unable to get context classloader instance.",
- ex);
- }
- return cl;
- });
+ return Thread.currentThread().getContextClassLoader();
}
/**
@@ -165,27 +147,18 @@
}
private static ClassLoader getClassLoader() {
- if (System.getSecurityManager() == null) {
- return FactoryFinder.class.getClassLoader();
- }
- return AccessController.doPrivileged((PrivilegedAction<ClassLoader>) FactoryFinder.class::getClassLoader);
+ return FactoryFinder.class.getClassLoader();
}
private static <T> T findFirstService(final String factoryId, final ClassLoader cl, final Class<T> service) {
- final PrivilegedAction<T> action = () -> {
- try {
- final ServiceLoader<T> loader = ServiceLoader.load(service, cl);
- if (loader.iterator().hasNext()) {
- return loader.iterator().next();
- }
- } catch (Exception e) {
- LOGGER.log(Level.FINER, "Failed to load service " + factoryId + ".", e);
+ try {
+ final ServiceLoader<T> loader = ServiceLoader.load(service, cl);
+ if (loader.iterator().hasNext()) {
+ return loader.iterator().next();
}
- return null;
- };
- if (System.getSecurityManager() == null) {
- return action.run();
+ } catch (Exception e) {
+ LOGGER.log(Level.FINER, "Failed to load service " + factoryId + ".", e);
}
- return AccessController.doPrivileged(action);
+ return null;
}
}
diff --git a/jaxrs-tck/src/main/resources/ee/jakarta/tck/ws/rs/signaturetest/jakarta.ws.rs.sig_3.2.0 b/jaxrs-tck/src/main/resources/ee/jakarta/tck/ws/rs/signaturetest/jakarta.ws.rs.sig_3.2.0
index 5dd24c1..1594c02 100644
--- a/jaxrs-tck/src/main/resources/ee/jakarta/tck/ws/rs/signaturetest/jakarta.ws.rs.sig_3.2.0
+++ b/jaxrs-tck/src/main/resources/ee/jakarta/tck/ws/rs/signaturetest/jakarta.ws.rs.sig_3.2.0
@@ -504,7 +504,6 @@
meth public static jakarta.ws.rs.client.Client newClient(jakarta.ws.rs.core.Configuration)
meth public static jakarta.ws.rs.client.ClientBuilder newBuilder()
supr java.lang.Object
-hcls CreateErrorMessageAction
CLSS public abstract interface jakarta.ws.rs.client.ClientRequestContext
meth public abstract boolean containsHeaderString(java.lang.String,java.lang.String,java.util.function.Predicate<java.lang.String>)
@@ -1740,7 +1739,7 @@
meth public static jakarta.ws.rs.ext.RuntimeDelegate getInstance()
meth public static void setInstance(jakarta.ws.rs.ext.RuntimeDelegate)
supr java.lang.Object
-hfds RD_LOCK,cachedDelegate,suppressAccessChecksPermission
+hfds RD_LOCK,cachedDelegate
CLSS public abstract interface static jakarta.ws.rs.ext.RuntimeDelegate$HeaderDelegate<%0 extends java.lang.Object>
outer jakarta.ws.rs.ext.RuntimeDelegate