test/java/util/logging/TestAppletLoggerContext.java

Print this page




  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     }