21 * questions.
22 */
23
24 import java.security.CodeSource;
25 import java.security.Permission;
26 import java.security.PermissionCollection;
27 import java.security.Permissions;
28 import java.security.Policy;
29 import java.security.ProtectionDomain;
30 import java.util.EnumSet;
31 import java.util.HashMap;
32 import java.util.Map;
33 import java.util.logging.LogManager;
34 import java.util.logging.Logger;
35 import java.util.logging.LoggingPermission;
36 import sun.misc.JavaAWTAccess;
37 import sun.misc.SharedSecrets;
38
39 /*
40 * @test
41 * @bug 8017174 8010727
42 * @summary NPE when using Logger.getAnonymousLogger or
43 * LogManager.getLogManager().getLogger
44 *
45 * @run main/othervm -Dtest.security=off TestAppletLoggerContext LoadingApplet
46 * @run main/othervm -Dtest.security=on TestAppletLoggerContext LoadingApplet
47 * @run main/othervm -Dtest.security=off TestAppletLoggerContext LoadingMain
48 * @run main/othervm -Dtest.security=on TestAppletLoggerContext LoadingMain
49 * @run main/othervm -Dtest.security=off TestAppletLoggerContext One
50 * @run main/othervm -Dtest.security=on TestAppletLoggerContext One
51 * @run main/othervm -Dtest.security=off TestAppletLoggerContext Two
52 * @run main/othervm -Dtest.security=on TestAppletLoggerContext Two
53 * @run main/othervm -Dtest.security=off TestAppletLoggerContext Three
54 * @run main/othervm -Dtest.security=on TestAppletLoggerContext Three
55 * @run main/othervm -Dtest.security=off TestAppletLoggerContext Four
56 * @run main/othervm -Dtest.security=on TestAppletLoggerContext Four
57 * @run main/othervm -Dtest.security=off TestAppletLoggerContext Five
58 * @run main/othervm -Dtest.security=on TestAppletLoggerContext Five
59 * @run main/othervm -Dtest.security=off TestAppletLoggerContext Six
60 * @run main/othervm -Dtest.security=on TestAppletLoggerContext Six
61 * @run main/othervm -Dtest.security=off TestAppletLoggerContext Seven
415 **/
416 public static void testSix() {
417 for (int i=0; i<3 ; i++) {
418 Bridge.desactivate();
419 LogManager manager = new LogManager() {};
420 Logger logger1 = manager.getLogger(Logger.GLOBAL_LOGGER_NAME);
421 Logger logger1b = manager.getLogger(Logger.GLOBAL_LOGGER_NAME);
422 assertNull(logger1);
423 assertNull(logger1b);
424 Logger global = new Bridge.CustomLogger(Logger.GLOBAL_LOGGER_NAME);
425 manager.addLogger(global);
426 Logger logger2 = manager.getLogger(Logger.GLOBAL_LOGGER_NAME);
427 Logger logger2b = manager.getLogger(Logger.GLOBAL_LOGGER_NAME);
428 assertNotNull(logger2);
429 assertNotNull(logger2b);
430 assertEquals(logger2, global);
431 assertEquals(logger2b, global);
432 assertNull(manager.getLogger(""));
433 assertNull(manager.getLogger(""));
434
435 Bridge.changeContext();
436
437 // this is not a supported configuration:
438 // We are in an applet context with several log managers.
439 // We however need to check our assumptions...
440
441 // Applet context => root logger and global logger are not null.
442 // root == LogManager.getLogManager().rootLogger
443 // global == Logger.global
444
445 Logger logger3 = manager.getLogger(Logger.GLOBAL_LOGGER_NAME);
446 Logger logger3b = manager.getLogger(Logger.GLOBAL_LOGGER_NAME);
447 assertNotNull(logger3);
448 assertNotNull(logger3b);
449 Logger expected = (System.getSecurityManager() != null
450 ? Logger.getGlobal()
451 : global);
452 assertEquals(logger3, expected); // in applet context, we will not see
453 // the LogManager's custom global logger added above...
454 assertEquals(logger3b, expected); // in applet context, we will not see
455 // the LogManager's custom global logger added above...
456 Logger global2 = new Bridge.CustomLogger(Logger.GLOBAL_LOGGER_NAME);
457 manager.addLogger(global2); // adding a global logger will not work in applet context
458 // we will always get back the global logger.
459 // this could be considered as a bug...
460 Logger logger4 = manager.getLogger(Logger.GLOBAL_LOGGER_NAME);
461 Logger logger4b = manager.getLogger(Logger.GLOBAL_LOGGER_NAME);
462 assertNotNull(logger4);
463 assertNotNull(logger4b);
464 assertEquals(logger4, expected); // adding a global logger will not work in applet context
465 assertEquals(logger4b, expected); // adding a global logger will not work in applet context
466
467 Logger logger5 = manager.getLogger("");
468 Logger logger5b = manager.getLogger("");
469 Logger expectedRoot = (System.getSecurityManager() != null
470 ? LogManager.getLogManager().getLogger("")
471 : null);
472 assertEquals(logger5, expectedRoot);
473 assertEquals(logger5b, expectedRoot);
474
475 }
476 }
477
478 /**
479 * This test is designed to test the behavior of additional LogManager instances.
480 * It must be noted that if the security manager is off, then calling
481 * Bridge.changeContext() has actually no effect - which explains why we have
482 * some differences between the cases security manager on & security manager
483 * off.
484 **/
485 public static void testSeven() {
486 for (int i=0; i<3 ; i++) {
487 Bridge.desactivate();
488 LogManager manager = new LogManager() {};
489 Logger logger1 = manager.getLogger("");
490 Logger logger1b = manager.getLogger("");
491 assertNull(logger1);
492 assertNull(logger1b);
493 Logger global = new Bridge.CustomLogger(Logger.GLOBAL_LOGGER_NAME);
494 manager.addLogger(global);
495 Logger logger2 = manager.getLogger(Logger.GLOBAL_LOGGER_NAME);
496 Logger logger2b = manager.getLogger(Logger.GLOBAL_LOGGER_NAME);
497 assertNotNull(logger2);
498 assertNotNull(logger2b);
499 assertEquals(logger2, global);
500 assertEquals(logger2b, global);
501 Logger logger3 = manager.getLogger("");
502 Logger logger3b = manager.getLogger("");
503 assertNull(logger3);
504 assertNull(logger3b);
505 Logger root = new Bridge.CustomLogger("");
506 manager.addLogger(root);
507 Logger logger4 = manager.getLogger("");
508 Logger logger4b = manager.getLogger("");
509 assertNotNull(logger4);
510 assertNotNull(logger4b);
511 assertEquals(logger4, root);
512 assertEquals(logger4b, root);
513
514 Bridge.changeContext();
515
516 // this is not a supported configuration:
517 // We are in an applet context with several log managers.
518 // We haowever need to check our assumptions...
519
520 // Applet context => root logger and global logger are not null.
521 // root == LogManager.getLogManager().rootLogger
522 // global == Logger.global
523
524 Logger logger5 = manager.getLogger("");
525 Logger logger5b = manager.getLogger("");
526 Logger expectedRoot = (System.getSecurityManager() != null
527 ? LogManager.getLogManager().getLogger("")
528 : root);
529
530 assertNotNull(logger5);
531 assertNotNull(logger5b);
532 assertEquals(logger5, expectedRoot);
533 assertEquals(logger5b, expectedRoot);
534 if (System.getSecurityManager() != null) {
535 assertNotEquals(logger5, root);
536 assertNotEquals(logger5b, root);
537 }
538
539 Logger global2 = new Bridge.CustomLogger(Logger.GLOBAL_LOGGER_NAME);
540 manager.addLogger(global2); // adding a global logger will not work in applet context
541 // we will always get back the global logger.
542 // this could be considered as a bug...
543 Logger logger6 = manager.getLogger(Logger.GLOBAL_LOGGER_NAME);
544 Logger logger6b = manager.getLogger(Logger.GLOBAL_LOGGER_NAME);
545 Logger expectedGlobal = (System.getSecurityManager() != null
546 ? Logger.getGlobal()
547 : global);
548 assertNotNull(logger6);
549 assertNotNull(logger6b);
550 assertEquals(logger6, expectedGlobal); // adding a global logger will not work in applet context
551 assertEquals(logger6b, expectedGlobal); // adding a global logger will not work in applet context
552
553 Logger root2 = new Bridge.CustomLogger("");
554 manager.addLogger(root2); // adding a root logger will not work in applet context
555 // we will always get back the default manager's root logger.
556 // this could be considered as a bug...
557 Logger logger7 = manager.getLogger("");
558 Logger logger7b = manager.getLogger("");
559 assertNotNull(logger7);
560 assertNotNull(logger7b);
561 assertEquals(logger7, expectedRoot); // adding a global logger will not work in applet context
562 assertEquals(logger7b, expectedRoot); // adding a global logger will not work in applet context
563 assertNotEquals(logger7, root2);
564 assertNotEquals(logger7b, root2);
565 }
566 }
567
568 public static void testParent(Logger logger) {
569 Logger l = logger;
570 while (l.getParent() != null) {
571 l = l.getParent();
572 }
573 assertEquals("", l.getName());
574 }
575
576 public static class TestError extends RuntimeException {
577 public TestError(String msg) {
578 super(msg);
579 }
580 }
581
582 public static void assertNotNull(Object obj) {
583 if (obj == null) throw new NullPointerException();
584 }
|
21 * questions.
22 */
23
24 import java.security.CodeSource;
25 import java.security.Permission;
26 import java.security.PermissionCollection;
27 import java.security.Permissions;
28 import java.security.Policy;
29 import java.security.ProtectionDomain;
30 import java.util.EnumSet;
31 import java.util.HashMap;
32 import java.util.Map;
33 import java.util.logging.LogManager;
34 import java.util.logging.Logger;
35 import java.util.logging.LoggingPermission;
36 import sun.misc.JavaAWTAccess;
37 import sun.misc.SharedSecrets;
38
39 /*
40 * @test
41 * @bug 8017174 8010727 8019945
42 * @summary NPE when using Logger.getAnonymousLogger or
43 * LogManager.getLogManager().getLogger
44 *
45 * @run main/othervm -Dtest.security=off TestAppletLoggerContext LoadingApplet
46 * @run main/othervm -Dtest.security=on TestAppletLoggerContext LoadingApplet
47 * @run main/othervm -Dtest.security=off TestAppletLoggerContext LoadingMain
48 * @run main/othervm -Dtest.security=on TestAppletLoggerContext LoadingMain
49 * @run main/othervm -Dtest.security=off TestAppletLoggerContext One
50 * @run main/othervm -Dtest.security=on TestAppletLoggerContext One
51 * @run main/othervm -Dtest.security=off TestAppletLoggerContext Two
52 * @run main/othervm -Dtest.security=on TestAppletLoggerContext Two
53 * @run main/othervm -Dtest.security=off TestAppletLoggerContext Three
54 * @run main/othervm -Dtest.security=on TestAppletLoggerContext Three
55 * @run main/othervm -Dtest.security=off TestAppletLoggerContext Four
56 * @run main/othervm -Dtest.security=on TestAppletLoggerContext Four
57 * @run main/othervm -Dtest.security=off TestAppletLoggerContext Five
58 * @run main/othervm -Dtest.security=on TestAppletLoggerContext Five
59 * @run main/othervm -Dtest.security=off TestAppletLoggerContext Six
60 * @run main/othervm -Dtest.security=on TestAppletLoggerContext Six
61 * @run main/othervm -Dtest.security=off TestAppletLoggerContext Seven
415 **/
416 public static void testSix() {
417 for (int i=0; i<3 ; i++) {
418 Bridge.desactivate();
419 LogManager manager = new LogManager() {};
420 Logger logger1 = manager.getLogger(Logger.GLOBAL_LOGGER_NAME);
421 Logger logger1b = manager.getLogger(Logger.GLOBAL_LOGGER_NAME);
422 assertNull(logger1);
423 assertNull(logger1b);
424 Logger global = new Bridge.CustomLogger(Logger.GLOBAL_LOGGER_NAME);
425 manager.addLogger(global);
426 Logger logger2 = manager.getLogger(Logger.GLOBAL_LOGGER_NAME);
427 Logger logger2b = manager.getLogger(Logger.GLOBAL_LOGGER_NAME);
428 assertNotNull(logger2);
429 assertNotNull(logger2b);
430 assertEquals(logger2, global);
431 assertEquals(logger2b, global);
432 assertNull(manager.getLogger(""));
433 assertNull(manager.getLogger(""));
434
435 for (int j = 0; j<3; j++) {
436 Bridge.changeContext();
437
438 // this is not a supported configuration:
439 // We are in an applet context with several log managers.
440 // We however need to check our assumptions...
441
442 // Applet context => root logger and global logger should also be null.
443
444 Logger expected = (System.getSecurityManager() == null ? global : null);
445 Logger logger3 = manager.getLogger(Logger.GLOBAL_LOGGER_NAME);
446 Logger logger3b = manager.getLogger(Logger.GLOBAL_LOGGER_NAME);
447 assertEquals(expected, logger3);
448 assertEquals(expected, logger3b);
449 Logger global2 = new Bridge.CustomLogger(Logger.GLOBAL_LOGGER_NAME);
450 manager.addLogger(global2);
451 Logger logger4 = manager.getLogger(Logger.GLOBAL_LOGGER_NAME);
452 Logger logger4b = manager.getLogger(Logger.GLOBAL_LOGGER_NAME);
453 assertNotNull(logger4);
454 assertNotNull(logger4b);
455 expected = (System.getSecurityManager() == null ? global : global2);;
456 assertEquals(logger4, expected);
457 assertEquals(logger4b, expected);
458
459 Logger logger5 = manager.getLogger("");
460 Logger logger5b = manager.getLogger("");
461 Logger expectedRoot = null;
462 assertEquals(logger5, expectedRoot);
463 assertEquals(logger5b, expectedRoot);
464 }
465
466 }
467 }
468
469 /**
470 * This test is designed to test the behavior of additional LogManager instances.
471 * It must be noted that if the security manager is off, then calling
472 * Bridge.changeContext() has actually no effect - which explains why we have
473 * some differences between the cases security manager on & security manager
474 * off.
475 **/
476 public static void testSeven() {
477 for (int i=0; i<3 ; i++) {
478 Bridge.desactivate();
479 LogManager manager = new LogManager() {};
480 Logger logger1 = manager.getLogger("");
481 Logger logger1b = manager.getLogger("");
482 assertNull(logger1);
483 assertNull(logger1b);
484 Logger global = new Bridge.CustomLogger(Logger.GLOBAL_LOGGER_NAME);
485 manager.addLogger(global);
486 Logger logger2 = manager.getLogger(Logger.GLOBAL_LOGGER_NAME);
487 Logger logger2b = manager.getLogger(Logger.GLOBAL_LOGGER_NAME);
488 assertNotNull(logger2);
489 assertNotNull(logger2b);
490 assertEquals(logger2, global);
491 assertEquals(logger2b, global);
492 Logger logger3 = manager.getLogger("");
493 Logger logger3b = manager.getLogger("");
494 assertNull(logger3);
495 assertNull(logger3b);
496 Logger root = new Bridge.CustomLogger("");
497 manager.addLogger(root);
498 Logger logger4 = manager.getLogger("");
499 Logger logger4b = manager.getLogger("");
500 assertNotNull(logger4);
501 assertNotNull(logger4b);
502 assertEquals(logger4, root);
503 assertEquals(logger4b, root);
504
505 for (int j = 0 ; j < 3 ; j++) {
506 Bridge.changeContext();
507
508 // this is not a supported configuration:
509 // We are in an applet context with several log managers.
510 // We however need to check our assumptions...
511
512 // Applet context => root logger and global logger should also be null.
513
514 Logger logger5 = manager.getLogger("");
515 Logger logger5b = manager.getLogger("");
516 Logger expectedRoot = (System.getSecurityManager() == null ? root : null);
517 assertEquals(logger5, expectedRoot);
518 assertEquals(logger5b, expectedRoot);
519
520 if (System.getSecurityManager() != null) {
521 assertNull(manager.getLogger(Logger.GLOBAL_LOGGER_NAME));
522 } else {
523 assertEquals(global, manager.getLogger(Logger.GLOBAL_LOGGER_NAME));
524 }
525
526 Logger global2 = new Bridge.CustomLogger(Logger.GLOBAL_LOGGER_NAME);
527 manager.addLogger(global2);
528 Logger logger6 = manager.getLogger(Logger.GLOBAL_LOGGER_NAME);
529 Logger logger6b = manager.getLogger(Logger.GLOBAL_LOGGER_NAME);
530 Logger expectedGlobal = (System.getSecurityManager() == null ? global : global2);
531
532 assertNotNull(logger6);
533 assertNotNull(logger6b);
534 assertEquals(logger6, expectedGlobal);
535 assertEquals(logger6b, expectedGlobal);
536 if (System.getSecurityManager() != null) {
537 assertNull(manager.getLogger(""));
538 } else {
539 assertEquals(root, manager.getLogger(""));
540 }
541
542 Logger root2 = new Bridge.CustomLogger("");
543 manager.addLogger(root2);
544 expectedRoot = (System.getSecurityManager() == null ? root : root2);
545 Logger logger7 = manager.getLogger("");
546 Logger logger7b = manager.getLogger("");
547 assertNotNull(logger7);
548 assertNotNull(logger7b);
549 assertEquals(logger7, expectedRoot);
550 assertEquals(logger7b, expectedRoot);
551 }
552 }
553 }
554
555 public static void testParent(Logger logger) {
556 Logger l = logger;
557 while (l.getParent() != null) {
558 l = l.getParent();
559 }
560 assertEquals("", l.getName());
561 }
562
563 public static class TestError extends RuntimeException {
564 public TestError(String msg) {
565 super(msg);
566 }
567 }
568
569 public static void assertNotNull(Object obj) {
570 if (obj == null) throw new NullPointerException();
571 }
|