OpenJDK / jdk / jdk10
changeset 21599:c54c2d299b42
8025440: [TEST_BUG] com/sun/awt/SecurityWarning/GetSizeShouldNotReturnZero.java failed since jdk8b108
Reviewed-by: anthony
author | pchelko |
---|---|
date | Thu, 14 Nov 2013 11:42:46 +0400 |
parents | b0de5e2762ed |
children | 48d56047f54d a3863a1446bf |
files | jdk/test/com/sun/awt/SecurityWarning/CustomSecurityManager.java jdk/test/com/sun/awt/SecurityWarning/GetSizeShouldNotReturnZero.java jdk/test/java/awt/regtesthelpers/CopyClassFile.java |
diffstat | 3 files changed, 112 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/com/sun/awt/SecurityWarning/CustomSecurityManager.java Thu Nov 14 11:42:46 2013 +0400 @@ -0,0 +1,11 @@ +import sun.security.util.SecurityConstants; +import java.security.Permission; + +public class CustomSecurityManager extends SecurityManager { + @Override + public void checkPermission(Permission perm) { + if (perm.implies(SecurityConstants.AWT.TOPLEVEL_WINDOW_PERMISSION)) { + throw new SecurityException(); + } + } +}
--- a/jdk/test/com/sun/awt/SecurityWarning/GetSizeShouldNotReturnZero.java Thu Nov 14 10:52:19 2013 +0400 +++ b/jdk/test/com/sun/awt/SecurityWarning/GetSizeShouldNotReturnZero.java Thu Nov 14 11:42:46 2013 +0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,8 +27,9 @@ @summary The size returned by SecurityWarning.getSize() should not be zero @author anthony.petrov@sun.com: area=awt.toplevel @library ../../../../java/awt/regtesthelpers - @build Util - @run main GetSizeShouldNotReturnZero + @build Util CustomSecurityManager CopyClassFile + @run main CopyClassFile CustomSecurityManager bootcp/ + @run main/othervm/secure=CustomSecurityManager -Xbootclasspath/a:bootcp GetSizeShouldNotReturnZero */ /** @@ -37,11 +38,10 @@ * summary: The size returned by SecurityWarning.getSize() should not be zero */ +import com.sun.awt.SecurityWarning; +import test.java.awt.regtesthelpers.Util; + import java.awt.*; -import java.awt.event.*; -import java.security.Permission; -import test.java.awt.regtesthelpers.Util; -import com.sun.awt.SecurityWarning; public class GetSizeShouldNotReturnZero { @@ -56,21 +56,6 @@ Sysout.createDialog( ); Sysout.printInstructions( instructions ); - - // Install the security manager so that all subsequently created - // windows display the security warning. - System.setSecurityManager(new SecurityManager() { - - @Override - public void checkPermission(Permission perm) { - } - - @Override - public boolean checkTopLevelWindow(Object window) { - return false; - } - }); - Frame f = new Frame(); f.setSize(100, 100); f.setVisible(true); @@ -87,7 +72,6 @@ }//End init() - /***************************************************** * Standard Test Machinery Section * DO NOT modify anything in this section -- it's a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/java/awt/regtesthelpers/CopyClassFile.java Thu Nov 14 11:42:46 2013 +0400 @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; +import java.util.Arrays; + +/** + * A utility to copy the class and all it's inner classes to the specified directory. + * <p> + * Usage in jtreg: + * + * @build CopyClassFile + * @run main CopyClassFile package.class dest_directory + */ +public class CopyClassFile { + + private static final ClassLoader cl = CopyClassFile.class.getClassLoader(); + + private static String destinationDir; + private static String className; + private static String classFile; + + public static void main(String[] args) throws Exception { + if (args.length != 2) { + throw new IllegalArgumentException("Illegal usage: class name and destination directory should be specified"); + } + + destinationDir = args[1]; + className = args[0]; + classFile = className.replaceAll("\\.", File.separator) + ".class"; + + URL url = cl.getResource(classFile); + if (url == null) { + throw new RuntimeException("Could not find a class: " + classFile); + } + + File[] files = new File(url.toURI()) + .getParentFile() + .listFiles((dir, name) -> name.startsWith(cutPackageName(className)) && name.endsWith(".class")); + + Arrays.stream(files).forEach(CopyClassFile::copyFile); + } + + private static String cutPackageName(String className) { + int dotIndex = className.lastIndexOf(".") + 1; + if (dotIndex <= 0) { + return className; + } else { + return className.substring(dotIndex); + } + } + + private static void copyFile(File f) { + try { + Path classFilePath = Paths.get(classFile); + String packagePath = classFilePath.getParent() == null ? "" : classFilePath.getParent().toString(); + Path p = Paths.get(destinationDir + packagePath + File.separator + f.getName()); + Files.createDirectories(p.getParent()); + try (InputStream is = new FileInputStream(f)) { + Files.copy(is, p, StandardCopyOption.REPLACE_EXISTING); + } + } catch (IOException ex) { + throw new RuntimeException("Could not copy file " + f, ex); + } + } +}