Skip to content

Commit f624768

Browse files
authored
Merge pull request #1330 from jamezp/sync-main
Migrate changes from the release-5.0 branch to main
2 parents 36de360 + 25b4135 commit f624768

File tree

5 files changed

+38
-139
lines changed

5 files changed

+38
-139
lines changed

jaxrs-api/src/main/java/jakarta/ws/rs/client/ClientBuilder.java

Lines changed: 11 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2011, 2019 Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
33
*
44
* This program and the accompanying materials are made available under the
55
* terms of the Eclipse Public License v. 2.0, which is available at
@@ -19,9 +19,7 @@
1919
import javax.net.ssl.HostnameVerifier;
2020
import javax.net.ssl.SSLContext;
2121
import java.net.URL;
22-
import java.security.AccessController;
2322
import java.security.KeyStore;
24-
import java.security.PrivilegedAction;
2523
import java.util.concurrent.ExecutorService;
2624
import java.util.concurrent.ScheduledExecutorService;
2725
import java.util.concurrent.TimeUnit;
@@ -61,14 +59,17 @@ public static ClientBuilder newBuilder() {
6159
try {
6260
Object delegate = FactoryFinder.find(JAXRS_DEFAULT_CLIENT_BUILDER_PROPERTY, ClientBuilder.class);
6361
if (!(delegate instanceof ClientBuilder)) {
64-
final CreateErrorMessageAction action = new CreateErrorMessageAction(delegate);
65-
final String errorMessage;
66-
if (System.getSecurityManager() == null) {
67-
errorMessage = action.run();
68-
} else {
69-
errorMessage = AccessController.doPrivileged(action);
62+
Class<?> pClass = ClientBuilder.class;
63+
String classnameAsResource = pClass.getName().replace('.', '/') + ".class";
64+
ClassLoader loader = pClass.getClassLoader();
65+
if (loader == null) {
66+
loader = ClassLoader.getSystemClassLoader();
7067
}
71-
throw new LinkageError(errorMessage);
68+
URL targetTypeURL = loader.getResource(classnameAsResource);
69+
final String errorMessage = "ClassCastException: attempting to cast"
70+
+ delegate.getClass().getClassLoader().getResource(classnameAsResource)
71+
+ " to " + targetTypeURL;
72+
throw new LinkageError(errorMessage);
7273
}
7374
return (ClientBuilder) delegate;
7475
} catch (Exception ex) {
@@ -271,26 +272,4 @@ public ClientBuilder keyStore(final KeyStore keyStore, final String password) {
271272
* @return a new client instance.
272273
*/
273274
public abstract Client build();
274-
275-
private static final class CreateErrorMessageAction implements PrivilegedAction<String> {
276-
private final Object delegate;
277-
278-
private CreateErrorMessageAction(final Object delegate) {
279-
this.delegate = delegate;
280-
}
281-
282-
@Override
283-
public String run() {
284-
Class<?> pClass = ClientBuilder.class;
285-
String classnameAsResource = pClass.getName().replace('.', '/') + ".class";
286-
ClassLoader loader = pClass.getClassLoader();
287-
if (loader == null) {
288-
loader = ClassLoader.getSystemClassLoader();
289-
}
290-
URL targetTypeURL = loader.getResource(classnameAsResource);
291-
return "ClassCastException: attempting to cast"
292-
+ delegate.getClass().getClassLoader().getResource(classnameAsResource)
293-
+ " to " + targetTypeURL;
294-
}
295-
}
296275
}

jaxrs-api/src/main/java/jakarta/ws/rs/client/FactoryFinder.java

Lines changed: 9 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@
2020
import java.io.InputStream;
2121
import java.nio.file.Files;
2222
import java.nio.file.Path;
23-
import java.security.AccessController;
24-
import java.security.PrivilegedAction;
2523
import java.util.Properties;
2624
import java.util.ServiceLoader;
2725
import java.util.logging.Level;
@@ -44,23 +42,7 @@ private FactoryFinder() {
4442
}
4543

4644
static ClassLoader getContextClassLoader() {
47-
// For performance reasons, check if a security manager is installed. If not there is no need to use a
48-
// privileged action.
49-
if (System.getSecurityManager() == null) {
50-
return Thread.currentThread().getContextClassLoader();
51-
}
52-
return AccessController.doPrivileged((PrivilegedAction<ClassLoader>) () -> {
53-
ClassLoader cl = null;
54-
try {
55-
cl = Thread.currentThread().getContextClassLoader();
56-
} catch (SecurityException ex) {
57-
LOGGER.log(
58-
Level.WARNING,
59-
"Unable to get context classloader instance.",
60-
ex);
61-
}
62-
return cl;
63-
});
45+
return Thread.currentThread().getContextClassLoader();
6446
}
6547

6648
/**
@@ -165,24 +147,18 @@ static <T> Object find(final String factoryId, final Class<T> service) throws Cl
165147
}
166148

167149
private static ClassLoader getClassLoader() {
168-
if (System.getSecurityManager() == null) {
169-
return FactoryFinder.class.getClassLoader();
170-
}
171-
return AccessController.doPrivileged((PrivilegedAction<ClassLoader>) FactoryFinder.class::getClassLoader);
150+
return FactoryFinder.class.getClassLoader();
172151
}
173152

174153
private static <T> T findFirstService(final String factoryId, final ClassLoader cl, final Class<T> service) {
175-
final PrivilegedAction<T> action = () -> {
176-
try {
177-
return ServiceLoader.load(service, cl).findFirst().orElse(null);
178-
} catch (Exception e) {
179-
LOGGER.log(Level.FINER, "Failed to load service " + factoryId + ".", e);
154+
try {
155+
final ServiceLoader<T> loader = ServiceLoader.load(service, cl);
156+
if (loader.iterator().hasNext()) {
157+
return loader.iterator().next();
180158
}
181-
return null;
182-
};
183-
if (System.getSecurityManager() == null) {
184-
return action.run();
159+
} catch (Exception e) {
160+
LOGGER.log(Level.FINER, "Failed to load service " + factoryId + ".", e);
185161
}
186-
return AccessController.doPrivileged(action);
162+
return null;
187163
}
188164
}

jaxrs-api/src/main/java/jakarta/ws/rs/ext/FactoryFinder.java

Lines changed: 9 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@
2020
import java.io.InputStream;
2121
import java.nio.file.Files;
2222
import java.nio.file.Path;
23-
import java.security.AccessController;
24-
import java.security.PrivilegedAction;
2523
import java.util.Properties;
2624
import java.util.ServiceLoader;
2725
import java.util.logging.Level;
@@ -44,23 +42,7 @@ private FactoryFinder() {
4442
}
4543

4644
private static ClassLoader getContextClassLoader() {
47-
// For performance reasons, check if a security manager is installed. If not there is no need to use a
48-
// privileged action.
49-
if (System.getSecurityManager() == null) {
50-
return Thread.currentThread().getContextClassLoader();
51-
}
52-
return AccessController.doPrivileged((PrivilegedAction<ClassLoader>) () -> {
53-
ClassLoader cl = null;
54-
try {
55-
cl = Thread.currentThread().getContextClassLoader();
56-
} catch (SecurityException ex) {
57-
LOGGER.log(
58-
Level.WARNING,
59-
"Unable to get context classloader instance.",
60-
ex);
61-
}
62-
return cl;
63-
});
45+
return Thread.currentThread().getContextClassLoader();
6446
}
6547

6648
/**
@@ -165,24 +147,18 @@ static <T> Object find(final String factoryId, final Class<T> service) throws Cl
165147
}
166148

167149
private static ClassLoader getClassLoader() {
168-
if (System.getSecurityManager() == null) {
169-
return FactoryFinder.class.getClassLoader();
170-
}
171-
return AccessController.doPrivileged((PrivilegedAction<ClassLoader>) FactoryFinder.class::getClassLoader);
150+
return FactoryFinder.class.getClassLoader();
172151
}
173152

174153
private static <T> T findFirstService(final String factoryId, final ClassLoader cl, final Class<T> service) {
175-
final PrivilegedAction<T> action = () -> {
176-
try {
177-
return ServiceLoader.load(service, cl).findFirst().orElse(null);
178-
} catch (Exception e) {
179-
LOGGER.log(Level.FINER, "Failed to load service " + factoryId + ".", e);
154+
try {
155+
final ServiceLoader<T> loader = ServiceLoader.load(service, cl);
156+
if (loader.iterator().hasNext()) {
157+
return loader.iterator().next();
180158
}
181-
return null;
182-
};
183-
if (System.getSecurityManager() == null) {
184-
return action.run();
159+
} catch (Exception e) {
160+
LOGGER.log(Level.FINER, "Failed to load service " + factoryId + ".", e);
185161
}
186-
return AccessController.doPrivileged(action);
162+
return null;
187163
}
188164
}

jaxrs-api/src/main/java/jakarta/ws/rs/ext/RuntimeDelegate.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package jakarta.ws.rs.ext;
1818

19-
import java.lang.reflect.ReflectPermission;
2019
import java.net.URL;
2120
import java.util.concurrent.CompletionStage;
2221
import java.util.concurrent.locks.Lock;
@@ -48,7 +47,6 @@ public abstract class RuntimeDelegate {
4847
*/
4948
public static final String JAXRS_RUNTIME_DELEGATE_PROPERTY = "jakarta.ws.rs.ext.RuntimeDelegate";
5049
private static final Lock RD_LOCK = new ReentrantLock();
51-
private static ReflectPermission suppressAccessChecksPermission = new ReflectPermission("suppressAccessChecks");
5250
private static volatile RuntimeDelegate cachedDelegate;
5351

5452
/**
@@ -129,14 +127,8 @@ private static RuntimeDelegate findDelegate() {
129127
* {@link #getInstance} then an implementation will be sought as described in {@link #getInstance}.
130128
*
131129
* @param rd the runtime delegate instance
132-
* @throws SecurityException if there is a security manager and the permission ReflectPermission("suppressAccessChecks")
133-
* has not been granted.
134130
*/
135131
public static void setInstance(final RuntimeDelegate rd) {
136-
SecurityManager security = System.getSecurityManager();
137-
if (security != null) {
138-
security.checkPermission(suppressAccessChecksPermission);
139-
}
140132
RD_LOCK.lock();
141133
try {
142134
RuntimeDelegate.cachedDelegate = rd;

jaxrs-api/src/main/java/jakarta/ws/rs/sse/FactoryFinder.java

Lines changed: 9 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@
2020
import java.io.InputStream;
2121
import java.nio.file.Files;
2222
import java.nio.file.Path;
23-
import java.security.AccessController;
24-
import java.security.PrivilegedAction;
2523
import java.util.Properties;
2624
import java.util.ServiceLoader;
2725
import java.util.logging.Level;
@@ -44,23 +42,7 @@ private FactoryFinder() {
4442
}
4543

4644
private static ClassLoader getContextClassLoader() {
47-
// For performance reasons, check if a security manager is installed. If not there is no need to use a
48-
// privileged action.
49-
if (System.getSecurityManager() == null) {
50-
return Thread.currentThread().getContextClassLoader();
51-
}
52-
return AccessController.doPrivileged((PrivilegedAction<ClassLoader>) () -> {
53-
ClassLoader cl = null;
54-
try {
55-
cl = Thread.currentThread().getContextClassLoader();
56-
} catch (SecurityException ex) {
57-
LOGGER.log(
58-
Level.WARNING,
59-
"Unable to get context classloader instance.",
60-
ex);
61-
}
62-
return cl;
63-
});
45+
return Thread.currentThread().getContextClassLoader();
6446
}
6547

6648
/**
@@ -165,24 +147,18 @@ static <T> Object find(final String factoryId, final Class<T> service) throws Cl
165147
}
166148

167149
private static ClassLoader getClassLoader() {
168-
if (System.getSecurityManager() == null) {
169-
return FactoryFinder.class.getClassLoader();
170-
}
171-
return AccessController.doPrivileged((PrivilegedAction<ClassLoader>) FactoryFinder.class::getClassLoader);
150+
return FactoryFinder.class.getClassLoader();
172151
}
173152

174153
private static <T> T findFirstService(final String factoryId, final ClassLoader cl, final Class<T> service) {
175-
final PrivilegedAction<T> action = () -> {
176-
try {
177-
return ServiceLoader.load(service, cl).findFirst().orElse(null);
178-
} catch (Exception e) {
179-
LOGGER.log(Level.FINER, "Failed to load service " + factoryId + ".", e);
154+
try {
155+
final ServiceLoader<T> loader = ServiceLoader.load(service, cl);
156+
if (loader.iterator().hasNext()) {
157+
return loader.iterator().next();
180158
}
181-
return null;
182-
};
183-
if (System.getSecurityManager() == null) {
184-
return action.run();
159+
} catch (Exception e) {
160+
LOGGER.log(Level.FINER, "Failed to load service " + factoryId + ".", e);
185161
}
186-
return AccessController.doPrivileged(action);
162+
return null;
187163
}
188164
}

0 commit comments

Comments
 (0)