< prev index next >

test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleClassList.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2016, 2017, 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. --- 1,7 ---- /* ! * Copyright (c) 2016, 2018, 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.
*** 38,48 **** import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.process.ProcessTools; public class PatchModuleClassList { private static final String BOOT_CLASS = "javax/naming/spi/NamingManager"; ! private static final String PLATFORM_CLASS = "javax/transaction/InvalidTransactionException"; public static void main(String args[]) throws Throwable { // Case 1. A class to be loaded by the boot class loader // Create a class file in the module java.naming. This class file --- 38,48 ---- import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.process.ProcessTools; public class PatchModuleClassList { private static final String BOOT_CLASS = "javax/naming/spi/NamingManager"; ! private static final String PLATFORM_CLASS = "java/sql/ResultSet"; public static void main(String args[]) throws Throwable { // Case 1. A class to be loaded by the boot class loader // Create a class file in the module java.naming. This class file
*** 66,109 **** ProcessBuilder pb = ProcessTools.createJavaProcessBuilder( true, "-XX:DumpLoadedClassList=" + classList, "--patch-module=java.naming=" + moduleJar, "PatchModuleMain", BOOT_CLASS.replace('/', '.')); ! new OutputAnalyzer(pb.start()).shouldHaveExitValue(0); // check the generated classlist file String content = new String(Files.readAllBytes(Paths.get(classList))); if (content.indexOf(BOOT_CLASS) >= 0) { throw new RuntimeException(BOOT_CLASS + " should not be in the classlist"); } // Case 2. A class to be loaded by the platform class loader ! // Create a class file in the module java.transaction. This class file ! // will be put in the javatransaction.jar file. ! source = "package javax.transaction; " + ! "public class InvalidTransactionException { " + " static { " + ! " System.out.println(\"I pass!\"); " + " } " + "}"; ClassFileInstaller.writeClassToDisk(PLATFORM_CLASS, ! InMemoryJavaCompiler.compile(PLATFORM_CLASS.replace('/', '.'), source, "--patch-module=java.transaction"), System.getProperty("test.classes")); ! // Build the jar file that will be used for the module "java.transaction". ! BasicJarBuilder.build("javatransaction", PLATFORM_CLASS); ! moduleJar = BasicJarBuilder.getTestJar("javatransaction.jar"); ! classList = "javatransaction.list"; pb = ProcessTools.createJavaProcessBuilder( true, "-XX:DumpLoadedClassList=" + classList, ! "--patch-module=java.naming=" + moduleJar, "PatchModuleMain", PLATFORM_CLASS.replace('/', '.')); ! new OutputAnalyzer(pb.start()).shouldHaveExitValue(0); // check the generated classlist file content = new String(Files.readAllBytes(Paths.get(classList))); if (content.indexOf(PLATFORM_CLASS) >= 0) { throw new RuntimeException(PLATFORM_CLASS + " should not be in the classlist"); --- 66,113 ---- ProcessBuilder pb = ProcessTools.createJavaProcessBuilder( true, "-XX:DumpLoadedClassList=" + classList, "--patch-module=java.naming=" + moduleJar, "PatchModuleMain", BOOT_CLASS.replace('/', '.')); ! OutputAnalyzer oa = new OutputAnalyzer(pb.start()); ! oa.shouldContain("I pass!"); ! oa.shouldHaveExitValue(0); // check the generated classlist file String content = new String(Files.readAllBytes(Paths.get(classList))); if (content.indexOf(BOOT_CLASS) >= 0) { throw new RuntimeException(BOOT_CLASS + " should not be in the classlist"); } // Case 2. A class to be loaded by the platform class loader ! // Create a class file in the module java.sql. This class file ! // will be put in the javasql.jar file. ! source = "package java.sql; " + ! "public class ResultSet { " + " static { " + ! " System.out.println(\"I pass too!\"); " + " } " + "}"; ClassFileInstaller.writeClassToDisk(PLATFORM_CLASS, ! InMemoryJavaCompiler.compile(PLATFORM_CLASS.replace('/', '.'), source, "--patch-module=java.sql"), System.getProperty("test.classes")); ! // Build the jar file that will be used for the module "java.sql". ! BasicJarBuilder.build("javasql", PLATFORM_CLASS); ! moduleJar = BasicJarBuilder.getTestJar("javasql.jar"); ! classList = "javasql.list"; pb = ProcessTools.createJavaProcessBuilder( true, "-XX:DumpLoadedClassList=" + classList, ! "--patch-module=java.sql=" + moduleJar, "PatchModuleMain", PLATFORM_CLASS.replace('/', '.')); ! OutputAnalyzer oa2 = new OutputAnalyzer(pb.start()); ! oa2.shouldContain("I pass too!"); ! oa2.shouldHaveExitValue(0); // check the generated classlist file content = new String(Files.readAllBytes(Paths.get(classList))); if (content.indexOf(PLATFORM_CLASS) >= 0) { throw new RuntimeException(PLATFORM_CLASS + " should not be in the classlist");
< prev index next >