< 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 >