/** * Returns the default TimeZone in an AppContext if any AppContext * has ever used. null is returned if any AppContext hasn't been * used or if the AppContext doesn't have the default TimeZone. * null is also returned if allowSetDefault is false. * * Note that javaAWTAccess may be null if sun.awt.AppContext class hasn't * been loaded. If so, it implies that AWTSecurityManager is not our * SecurityManager and we can use a local static variable. * This works around a build time issue. */ private static TimeZone getDefaultInAppContext() { if (allowSetDefault) { // JavaAWTAccess provides access implementation-private methods without using reflection. JavaAWTAccess javaAWTAccess = SharedSecrets.getJavaAWTAccess(); if (System.getSecurityManager() == null || javaAWTAccess == null) { return mainAppContextDefault; } else if (javaAWTAccess.isDisposed()) { return null; } else { TimeZone tz = (TimeZone) javaAWTAccess.get(TimeZone.class); if (tz == null && javaAWTAccess.isMainAppContext()) { return mainAppContextDefault; } else { return tz; } } } return null; }
/** * Returns the default TimeZone in an AppContext if any AppContext * has ever used. null is returned if any AppContext hasn't been * used or if the AppContext doesn't have the default TimeZone. * null is also returned if allowSetDefault is false. * * Note that javaAWTAccess may be null if sun.awt.AppContext class hasn't * been loaded. If so, it implies that AWTSecurityManager is not our * SecurityManager and we can use a local static variable. * This works around a build time issue. */ private static TimeZone getDefaultInAppContext() { if (allowSetDefault) { // JavaAWTAccess provides access implementation-private methods without using reflection. JavaAWTAccess javaAWTAccess = SharedSecrets.getJavaAWTAccess(); if (javaAWTAccess == null) { return mainAppContextDefault; } else { if (!javaAWTAccess.isDisposed()) { TimeZone tz = (TimeZone) javaAWTAccess.get(TimeZone.class); if (tz == null && javaAWTAccess.isMainAppContext()) { return mainAppContextDefault; } else { return tz; } } } } return null; }
/** * Sets the default TimeZone in the AppContext to the given tz if * allowSetDefault is true. null is handled special: do nothing if any * AppContext hasn't been used, remove the default TimeZone in the * AppContext otherwise. * * Note that javaAWTAccess may be null if sun.awt.AppContext class hasn't * been loaded. If so, it implies that AWTSecurityManager is not our * SecurityManager and we can use a local static variable. * This works around a build time issue. */ private static void setDefaultInAppContext(TimeZone tz) { if (allowSetDefault) { // JavaAWTAccess provides access implementation-private methods without using reflection. JavaAWTAccess javaAWTAccess = SharedSecrets.getJavaAWTAccess(); if (javaAWTAccess == null) { mainAppContextDefault = tz; } else { if (!javaAWTAccess.isDisposed()) { javaAWTAccess.put(TimeZone.class, tz); if (javaAWTAccess.isMainAppContext()) { mainAppContextDefault = null; } } } } }
private LoggerContext getUserContext() { LoggerContext context = null; SecurityManager sm = System.getSecurityManager(); JavaAWTAccess javaAwtAccess = SharedSecrets.getJavaAWTAccess(); if (sm != null && javaAwtAccess != null) { // for each applet, it has its own LoggerContext isolated from others final Object ecx = javaAwtAccess.getAppletContext(); if (ecx != null) { synchronized (javaAwtAccess) { // find the AppContext of the applet code // will be null if we are in the main app context. if (contextsMap == null) { contextsMap = new WeakHashMap<>(); } context = contextsMap.get(ecx); if (context == null) { // Create a new LoggerContext for the applet. context = new LoggerContext(); contextsMap.put(ecx, context); } } } } // for standalone app, return userContext return context != null ? context : userContext; }
private LoggerContext getUserContext() { LoggerContext context = null; SecurityManager sm = System.getSecurityManager(); JavaAWTAccess javaAwtAccess = SharedSecrets.getJavaAWTAccess(); if (sm != null && javaAwtAccess != null) { // for each applet, it has its own LoggerContext isolated from others synchronized (javaAwtAccess) { // find the AppContext of the applet code // will be null if we are in the main app context. final Object ecx = javaAwtAccess.getAppletContext(); if (ecx != null) { if (contextsMap == null) { contextsMap = new WeakHashMap<>(); } context = contextsMap.get(ecx); if (context == null) { // Create a new LoggerContext for the applet. // The new logger context has its requiresDefaultLoggers // flag set to true - so that these loggers will be // lazily added when the context is firt accessed. context = new LoggerContext(true); contextsMap.put(ecx, context); } } } } // for standalone app, return userContext return context != null ? context : userContext; }
/** * Sets the default TimeZone in the AppContext to the given tz if * allowSetDefault is true. null is handled special: do nothing if any * AppContext hasn't been used, remove the default TimeZone in the * AppContext otherwise. * * Note that javaAWTAccess may be null if sun.awt.AppContext class hasn't * been loaded. If so, it implies that AWTSecurityManager is not our * SecurityManager and we can use a local static variable. * This works around a build time issue. */ private static void setDefaultInAppContext(TimeZone tz) { if (allowSetDefault) { // JavaAWTAccess provides access implementation-private methods without using reflection. JavaAWTAccess javaAWTAccess = SharedSecrets.getJavaAWTAccess(); if (System.getSecurityManager() == null || javaAWTAccess == null) { mainAppContextDefault = tz; } else if (!javaAWTAccess.isDisposed()) { javaAWTAccess.put(TimeZone.class, tz); if (javaAWTAccess.isMainAppContext()) { mainAppContextDefault = null; } } } }
private LoggerContext getUserContext() { LoggerContext context = null; SecurityManager sm = System.getSecurityManager(); JavaAWTAccess javaAwtAccess = SharedSecrets.getJavaAWTAccess(); if (sm != null && javaAwtAccess != null) { // for each applet, it has its own LoggerContext isolated from others synchronized (javaAwtAccess) { // find the AppContext of the applet code // will be null if we are in the main app context. final Object ecx = javaAwtAccess.getAppletContext(); if (ecx != null) { if (contextsMap == null) { contextsMap = new WeakHashMap<>(); } context = contextsMap.get(ecx); if (context == null) { // Create a new LoggerContext for the applet. context = new LoggerContext(); contextsMap.put(ecx, context); } } } } // for standalone app, return userContext return context != null ? context : userContext; }
private LoggerContext getUserContext() { LoggerContext context = null; SecurityManager sm = System.getSecurityManager(); JavaAWTAccess javaAwtAccess = SharedSecrets.getJavaAWTAccess(); if (sm != null && javaAwtAccess != null) { synchronized (javaAwtAccess) { // AppContext.getAppContext() returns the system AppContext if called // from a system thread but Logger.getLogger might be called from // an applet code. Instead, find the AppContext of the applet code // from the execution stack. Object ecx = javaAwtAccess.getExecutionContext(); if (ecx == null) { // fall back to thread group seach of AppContext ecx = javaAwtAccess.getContext(); } if (ecx != null) { context = (LoggerContext)javaAwtAccess.get(ecx, LoggerContext.class); if (context == null) { if (javaAwtAccess.isMainAppContext()) { context = userContext; } else { // Create a new LoggerContext for the applet. // The new logger context has its requiresDefaultLoggers // flag set to true - so that these loggers will be // lazily added when the context is firt accessed. context = new LoggerContext(true); } javaAwtAccess.put(ecx, LoggerContext.class, context); } } } } return context != null ? context : userContext; }