You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2018/04/27 17:34:06 UTC
[cxf] 03/05: no need of instantiating so much objects when security
manager is null, let's keep the runtime fast
This is an automated email from the ASF dual-hosted git repository.
dkulp pushed a commit to branch 3.1.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git
commit 6c45abc4d057811b01f5aaf88f0d5ef617a5b7e9
Author: Romain Manni-Bucau <rm...@gmail.com>
AuthorDate: Fri Apr 27 15:09:12 2018 +0200
no need of instantiating so much objects when security manager is null, let's keep the runtime fast
---
.../cxf/common/classloader/ClassLoaderUtils.java | 34 +++++++++++++++++-----
1 file changed, 27 insertions(+), 7 deletions(-)
diff --git a/core/src/main/java/org/apache/cxf/common/classloader/ClassLoaderUtils.java b/core/src/main/java/org/apache/cxf/common/classloader/ClassLoaderUtils.java
index 90b0626..7aa6aef 100644
--- a/core/src/main/java/org/apache/cxf/common/classloader/ClassLoaderUtils.java
+++ b/core/src/main/java/org/apache/cxf/common/classloader/ClassLoaderUtils.java
@@ -36,26 +36,46 @@ import java.util.List;
* verify any change on 6 different application servers.
*/
public final class ClassLoaderUtils {
-
+ private static final boolean SKIP_SM = System.getSecurityManager() == null;
+
private ClassLoaderUtils() {
}
public static class ClassLoaderHolder {
ClassLoader loader;
- ClassLoaderHolder(ClassLoader c) {
- loader = c;
+ Thread thread;
+
+ ClassLoaderHolder(final ClassLoader c, final Thread thread) {
+ this.loader = c;
+ this.thread = thread;
}
public void reset() {
- ClassLoaderUtils.setThreadContextClassloader(loader);
+ if (SKIP_SM) {
+ thread.setContextClassLoader(loader);
+ } else {
+ AccessController.doPrivileged(new PrivilegedAction<Void>() {
+ public Void run() {
+ thread.setContextClassLoader(loader);
+ return null;
+ }
+ });
+ }
}
}
public static ClassLoaderHolder setThreadContextClassloader(final ClassLoader newLoader) {
+ if (SKIP_SM) {
+ final Thread thread = Thread.currentThread();
+ final ClassLoader l = thread.getContextClassLoader();
+ thread.setContextClassLoader(newLoader);
+ return new ClassLoaderHolder(l, thread);
+ }
return AccessController.doPrivileged(new PrivilegedAction<ClassLoaderHolder>() {
public ClassLoaderHolder run() {
- ClassLoader l = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(newLoader);
- return new ClassLoaderHolder(l);
+ final Thread thread = Thread.currentThread();
+ final ClassLoader l = thread.getContextClassLoader();
+ thread.setContextClassLoader(newLoader);
+ return new ClassLoaderHolder(l, thread);
}
});
}
--
To stop receiving notification emails like this one, please contact
dkulp@apache.org.