1 /* 2 * Copyright (c) 1999, 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 24 /* 25 * @test 26 * @bug 4256589 27 * @summary Test if getPackage() and getPackages() 28 * return consistent values. 29 */ 30 31 public class GetPackage { main(String arg[])32 public static void main(String arg[]) throws Exception { 33 TestClassLoader parent = new TestClassLoader(); 34 TestClassLoader child = new TestClassLoader(parent); 35 // child define a package first 36 child.defineEmptyPackage("foo"); 37 // parent then define another package with the same name 38 parent.defineEmptyPackage("foo"); 39 if (!child.testPackageView("foo")) 40 throw new Exception("Inconsistent packages view"); 41 } 42 } 43 44 class TestClassLoader extends ClassLoader { TestClassLoader()45 public TestClassLoader() { 46 super(); 47 } 48 TestClassLoader(ClassLoader parent)49 public TestClassLoader(ClassLoader parent) { 50 super(parent); 51 } 52 defineEmptyPackage(String name)53 public Package defineEmptyPackage(String name) { 54 return definePackage(name, null, null, null, null, null, null, null); 55 } 56 57 /* test to see if getPackage() and getPackages() 58 * are consistent. 59 */ testPackageView(String name)60 public boolean testPackageView(String name) { 61 Package[] pkgs = getPackages(); 62 Package pkg = getPackage(name); 63 for(int i = 0; i < pkgs.length; i++) 64 if (pkgs[i].getName().equals(name) && pkgs[i] == pkg) 65 return true; 66 return false; 67 } 68 } 69