test/java/util/logging/TestAppletLoggerContext.java

Print this page

        

@@ -36,11 +36,11 @@
 import sun.misc.JavaAWTAccess;
 import sun.misc.SharedSecrets;
 
 /*
  * @test
- * @bug 8017174 8010727
+ * @bug 8017174 8010727 8019945
  * @summary  NPE when using Logger.getAnonymousLogger or
  *           LogManager.getLogManager().getLogger
  *
  * @run main/othervm -Dtest.security=off TestAppletLoggerContext LoadingApplet
  * @run main/othervm -Dtest.security=on TestAppletLoggerContext  LoadingApplet

@@ -430,49 +430,40 @@
             assertEquals(logger2, global);
             assertEquals(logger2b, global);
             assertNull(manager.getLogger(""));
             assertNull(manager.getLogger(""));
 
+            for (int j = 0; j<3; j++) {
             Bridge.changeContext();
 
             // this is not a supported configuration:
             // We are in an applet context with several log managers.
             // We however need to check our assumptions...
 
-            // Applet context => root logger and global logger are not null.
-            //   root == LogManager.getLogManager().rootLogger
-            //   global == Logger.global
+                // Applet context => root logger and global logger should also be null.
 
+                Logger expected = (System.getSecurityManager() == null ? global : null);
             Logger logger3 = manager.getLogger(Logger.GLOBAL_LOGGER_NAME);
             Logger logger3b = manager.getLogger(Logger.GLOBAL_LOGGER_NAME);
-            assertNotNull(logger3);
-            assertNotNull(logger3b);
-            Logger expected = (System.getSecurityManager() != null
-                  ? Logger.getGlobal()
-                  : global);
-            assertEquals(logger3, expected); // in applet context, we will not see
-                  // the LogManager's custom global logger added above...
-            assertEquals(logger3b, expected); // in applet context, we will not see
-                  // the LogManager's custom global logger added above...
+                assertEquals(expected, logger3);
+                assertEquals(expected, logger3b);
             Logger global2 = new Bridge.CustomLogger(Logger.GLOBAL_LOGGER_NAME);
-            manager.addLogger(global2); // adding a global logger will not work in applet context
-               // we will always get back the global logger.
-               // this could be considered as a bug...
+                manager.addLogger(global2);
             Logger logger4 = manager.getLogger(Logger.GLOBAL_LOGGER_NAME);
             Logger logger4b = manager.getLogger(Logger.GLOBAL_LOGGER_NAME);
             assertNotNull(logger4);
             assertNotNull(logger4b);
-            assertEquals(logger4,  expected); // adding a global logger will not work in applet context
-            assertEquals(logger4b, expected); // adding a global logger will not work in applet context
+                expected = (System.getSecurityManager() == null ? global : global2);;
+                assertEquals(logger4,  expected);
+                assertEquals(logger4b, expected);
 
             Logger logger5 = manager.getLogger("");
             Logger logger5b = manager.getLogger("");
-            Logger expectedRoot = (System.getSecurityManager() != null
-                  ? LogManager.getLogManager().getLogger("")
-                  : null);
+                Logger expectedRoot = null;
             assertEquals(logger5, expectedRoot);
             assertEquals(logger5b, expectedRoot);
+            }
 
         }
     }
 
     /**

@@ -509,61 +500,57 @@
             assertNotNull(logger4);
             assertNotNull(logger4b);
             assertEquals(logger4, root);
             assertEquals(logger4b, root);
 
+            for (int j = 0 ; j < 3 ; j++) {
             Bridge.changeContext();
 
             // this is not a supported configuration:
             // We are in an applet context with several log managers.
-            // We haowever need to check our assumptions...
+                // We however need to check our assumptions...
 
-            // Applet context => root logger and global logger are not null.
-            //   root == LogManager.getLogManager().rootLogger
-            //   global == Logger.global
+                // Applet context => root logger and global logger should also be null.
 
             Logger logger5 = manager.getLogger("");
             Logger logger5b = manager.getLogger("");
-            Logger expectedRoot = (System.getSecurityManager() != null
-                  ? LogManager.getLogManager().getLogger("")
-                  : root);
-
-            assertNotNull(logger5);
-            assertNotNull(logger5b);
+                Logger expectedRoot = (System.getSecurityManager() == null ? root : null);
             assertEquals(logger5, expectedRoot);
             assertEquals(logger5b, expectedRoot);
+
             if (System.getSecurityManager() != null) {
-                assertNotEquals(logger5, root);
-                assertNotEquals(logger5b, root);
+                    assertNull(manager.getLogger(Logger.GLOBAL_LOGGER_NAME));
+                } else {
+                    assertEquals(global, manager.getLogger(Logger.GLOBAL_LOGGER_NAME));
             }
 
             Logger global2 = new Bridge.CustomLogger(Logger.GLOBAL_LOGGER_NAME);
-            manager.addLogger(global2); // adding a global logger will not work in applet context
-               // we will always get back the global logger.
-               // this could be considered as a bug...
+                manager.addLogger(global2);
             Logger logger6 = manager.getLogger(Logger.GLOBAL_LOGGER_NAME);
             Logger logger6b = manager.getLogger(Logger.GLOBAL_LOGGER_NAME);
-            Logger expectedGlobal = (System.getSecurityManager() != null
-                  ? Logger.getGlobal()
-                  : global);
+                Logger expectedGlobal = (System.getSecurityManager() == null ? global : global2);
+
             assertNotNull(logger6);
             assertNotNull(logger6b);
-            assertEquals(logger6, expectedGlobal); // adding a global logger will not work in applet context
-            assertEquals(logger6b, expectedGlobal); // adding a global logger will not work in applet context
+                assertEquals(logger6, expectedGlobal);
+                assertEquals(logger6b, expectedGlobal);
+                if (System.getSecurityManager() != null) {
+                    assertNull(manager.getLogger(""));
+                } else {
+                    assertEquals(root, manager.getLogger(""));
+                }
 
             Logger root2 = new Bridge.CustomLogger("");
-            manager.addLogger(root2); // adding a root logger will not work in applet context
-               // we will always get back the default manager's root logger.
-               // this could be considered as a bug...
+                manager.addLogger(root2);
+                expectedRoot = (System.getSecurityManager() == null ? root : root2);
             Logger logger7 = manager.getLogger("");
             Logger logger7b = manager.getLogger("");
             assertNotNull(logger7);
             assertNotNull(logger7b);
-            assertEquals(logger7, expectedRoot); // adding a global logger will not work in applet context
-            assertEquals(logger7b, expectedRoot); // adding a global logger will not work in applet context
-            assertNotEquals(logger7, root2);
-            assertNotEquals(logger7b, root2);
+                assertEquals(logger7, expectedRoot);
+                assertEquals(logger7b, expectedRoot);
+            }
         }
     }
 
     public static void testParent(Logger logger) {
         Logger l = logger;