1 /* 2 * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 import java.util.ArrayList; 24 import java.util.List; 25 import java.util.logging.Logger; 26 27 /** 28 * @test 29 * @bug 8005899 30 * @build TestLogger testlogger.MyResource 31 * @run main/othervm TestLogger 32 * @run main/othervm -Dsecurity=on TestLogger 33 **/ 34 public class TestLogger { 35 36 public static final String RESOURCE_BUNDLE = "testlogger.MyResource"; 37 public static final String ORG_LOGGER = "org"; 38 public static final String FOO_LOGGER = ORG_LOGGER + ".foo.Foo"; 39 public static final String BAR_LOGGER = ORG_LOGGER + ".bar.Bar"; 40 public static final String GEE_LOGGER = ORG_LOGGER + ".gee.Gee"; 41 public static final String GEE_GEE_LOGGER = GEE_LOGGER+".Gee"; 42 main(String[] args)43 public static void main(String[] args) { 44 final String security = System.getProperty("security", "off"); 45 System.out.println("Security is " + security); 46 if ("on".equals(security)) { 47 System.setSecurityManager(new SecurityManager()); 48 } 49 50 newLogger(FOO_LOGGER, RESOURCE_BUNDLE); 51 newLogger(FOO_LOGGER); 52 newLogger(BAR_LOGGER); 53 newLogger(BAR_LOGGER, RESOURCE_BUNDLE); 54 newLogger(GEE_LOGGER, null); 55 newLogger(GEE_LOGGER, RESOURCE_BUNDLE); 56 newLogger(ORG_LOGGER); 57 newLogger(GEE_GEE_LOGGER); 58 59 for (String log : new String[] { FOO_LOGGER, BAR_LOGGER, GEE_LOGGER }) { 60 if (!RESOURCE_BUNDLE.equals(Logger.getLogger(log).getResourceBundleName())) { 61 throw new RuntimeException("Shouldn't allow to reset the resource bundle for " + log); 62 } 63 try { 64 Logger logger = Logger.getLogger(log, null); 65 if (!RESOURCE_BUNDLE.equals(logger.getResourceBundleName())) { 66 throw new RuntimeException("Shouldn't allow to reset the resource bundle for " + log); 67 } 68 throw new RuntimeException("Expected IllegalArgumentException not thrown for " + log); 69 } catch (IllegalArgumentException e) { 70 System.out.println("Got expected exception for " + log +": " + e); 71 } 72 } 73 for (String log : new String[] { ORG_LOGGER, GEE_GEE_LOGGER }) { 74 if (Logger.getLogger(log).getResourceBundleName() != null) { 75 throw new RuntimeException("Resource bundle is not null for log: " 76 + Logger.getLogger(log).getResourceBundleName()); 77 } 78 try { 79 Logger logger = Logger.getLogger(log, null); 80 if (logger.getResourceBundleName() != null) { 81 throw new RuntimeException("Resource bundle is not null for log: " 82 + logger.getResourceBundleName()); 83 } 84 System.out.println("Success calling Logger.getLogger(\""+log+"\", null)"); 85 } catch (IllegalArgumentException e) { 86 throw new RuntimeException("Unexpected exception for " + log +": " + e, e); 87 } 88 } 89 } 90 91 private static List<Logger> strongRefs = new ArrayList<>(); newLogger(String name)92 private static void newLogger(String name) { 93 strongRefs.add(Logger.getLogger(name)); 94 } newLogger(String name, String resourceBundleName)95 private static void newLogger(String name, String resourceBundleName) { 96 strongRefs.add(Logger.getLogger(name, resourceBundleName)); 97 } 98 } 99