src/java.corba/share/classes/com/sun/corba/se/spi/orb/ORB.java
Print this page
@@ -23,10 +23,11 @@
* questions.
*/
package com.sun.corba.se.spi.orb;
+import java.lang.reflect.Method;
import java.util.Map ;
import java.util.HashMap ;
import java.util.Properties ;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Logger ;
@@ -200,18 +201,38 @@
* AppContext to hold it. Creates and records one if needed.
*/
public static PresentationManager getPresentationManager()
{
SecurityManager sm = System.getSecurityManager();
- sun.misc.JavaAWTAccess javaAwtAccess = sun.misc.SharedSecrets.getJavaAWTAccess();
+
+ if (sm != null) {
+ PresentationManager pm = AccessController.doPrivileged(
+ (PrivilegedAction<PresentationManager>) () -> {
+ try {
+ Class<?> c = Class.forName("jdk.internal.misc.SharedSecrets");
+ Method m = c.getDeclaredMethod("getJavaAWTAccess");
+ final Object javaAwtAccess = m.invoke(null);
+
if (sm != null && javaAwtAccess != null) {
- final Object appletContext = javaAwtAccess.getAppletContext();
+ c = Class.forName("jdk.internal.misc.JavaAWTAccess");
+ m = c.getDeclaredMethod("getAppletContext");
+
+ final Object appletContext = m.invoke(javaAwtAccess);
if (appletContext != null) {
return pmContexts.computeIfAbsent(appletContext,
x -> setupPresentationManager());
}
}
+ return null;
+ } catch (ReflectiveOperationException x) {
+ throw new InternalError(x);
+ }
+ });
+
+ if (pm != null)
+ return pm;
+ }
// No security manager or AppletAppContext
return Holder.defaultPresentationManager;
}