8177530: Module system implementation refresh (4/2017)

Reviewed-by: mchung
This commit is contained in:
Alan Bateman 2017-04-07 08:05:40 +00:00
parent f5dfbbb852
commit 57509f3cd5
6 changed files with 24 additions and 32 deletions

View File

@ -99,7 +99,7 @@ public interface Constants extends InstructionConstants {
= com.sun.org.apache.bcel.internal.Constants.ACC_STATIC;
public static final String MODULE_SIG
= "Ljava/lang/reflect/Module;";
= "Ljava/lang/Module;";
public static final String CLASS_SIG
= "Ljava/lang/Class;";
public static final String STRING_SIG
@ -255,7 +255,7 @@ public interface Constants extends InstructionConstants {
public static final String CLASS_CLASS
= "java.lang.Class";
public static final String MODULE_CLASS
= "java.lang.reflect.Module";
= "java.lang.Module";
public static final String STRING_CLASS
= "java.lang.String";
public static final String OBJECT_CLASS

View File

@ -43,8 +43,6 @@ import java.lang.module.ModuleDescriptor;
import java.lang.module.ModuleFinder;
import java.lang.module.ModuleReference;
import java.lang.module.ModuleReader;
import java.lang.reflect.Layer;
import java.lang.reflect.Module;
import java.security.AccessController;
import java.security.CodeSigner;
import java.security.CodeSource;
@ -435,13 +433,13 @@ public final class TemplatesImpl implements Templates, Serializable {
}
};
Layer bootLayer = Layer.boot();
ModuleLayer bootLayer = ModuleLayer.boot();
Configuration cf = bootLayer.configuration()
.resolve(finder, ModuleFinder.of(), Set.of(mn));
PrivilegedAction<Layer> pa = () -> bootLayer.defineModules(cf, name -> loader);
Layer layer = AccessController.doPrivileged(pa);
PrivilegedAction<ModuleLayer> pa = () -> bootLayer.defineModules(cf, name -> loader);
ModuleLayer layer = AccessController.doPrivileged(pa);
Module m = layer.findModule(mn).get();
assert m.getLayer() == layer;

View File

@ -23,7 +23,7 @@ modules=java.xml
groups=TEST.groups
# Minimum jtreg version
requiredVersion=4.2 b04
requiredVersion=4.2 b07
# Use new module options
useNewOptions=true

View File

@ -27,8 +27,6 @@ import static org.testng.Assert.assertSame;
import java.io.StringReader;
import java.io.StringWriter;
import java.lang.reflect.Layer;
import java.lang.reflect.Module;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.parsers.DocumentBuilderFactory;
@ -52,7 +50,7 @@ import org.testng.annotations.Test;
* @summary test customized provider wraps the built-in system-default implementation of JAXP factories
*/
public class DefaultFactoryWrapperTest {
private static final Module XML_MODULE = Layer.boot().findModule("java.xml").get();
private static final Module XML_MODULE = ModuleLayer.boot().findModule("java.xml").get();
private static final String PROVIDER_PACKAGE = "xwp";

View File

@ -29,9 +29,7 @@ import java.lang.String;
import java.lang.System;
import java.lang.module.Configuration;
import java.lang.module.ModuleFinder;
import java.lang.reflect.Layer;
import java.lang.reflect.Method;
import java.lang.reflect.Module;
import java.nio.file.Paths;
import java.nio.file.Path;
import java.util.Collections;
@ -95,23 +93,23 @@ public class LayerModularXMLParserTest {
*/
public void testOneLayer() throws Exception {
ModuleFinder finder1 = ModuleFinder.of(MOD_DIR1);
Configuration cf1 = Layer.boot().configuration()
Configuration cf1 = ModuleLayer.boot().configuration()
.resolveAndBind(finder1, ModuleFinder.of(), Set.of("test"));
ClassLoader scl = ClassLoader.getSystemClassLoader();
Layer layer1 = Layer.boot().defineModulesWithManyLoaders(cf1, scl);
ModuleLayer layer1 = ModuleLayer.boot().defineModulesWithManyLoaders(cf1, scl);
ClassLoader cl1 = layer1.findLoader("test");
Method m = cl1.loadClass("test.XMLFactoryHelper").getMethod("instantiateXMLService", String.class);
for (String service : services1) {
Object o = m.invoke(null, service);
Layer providerLayer = o.getClass().getModule().getLayer();
ModuleLayer providerLayer = o.getClass().getModule().getLayer();
assertSame(providerLayer, layer1);
}
for (String service : services2) {
Object o = m.invoke(null, service);
Layer providerLayer = o.getClass().getModule().getLayer();
assertSame(providerLayer, Layer.boot());
ModuleLayer providerLayer = o.getClass().getModule().getLayer();
assertSame(providerLayer, ModuleLayer.boot());
}
}
@ -125,26 +123,26 @@ public class LayerModularXMLParserTest {
*/
public void testTwoLayer() throws Exception {
ModuleFinder finder1 = ModuleFinder.of(MOD_DIR1);
Configuration cf1 = Layer.boot().configuration()
Configuration cf1 = ModuleLayer.boot().configuration()
.resolveAndBind(finder1, ModuleFinder.of(), Set.of("test"));
ClassLoader scl = ClassLoader.getSystemClassLoader();
Layer layer1 = Layer.boot().defineModulesWithManyLoaders(cf1, scl);
ModuleLayer layer1 = ModuleLayer.boot().defineModulesWithManyLoaders(cf1, scl);
ModuleFinder finder2 = ModuleFinder.of(MOD_DIR2);
Configuration cf2 = cf1.resolveAndBind(finder2, ModuleFinder.of(), Set.of("test"));
Layer layer2 = layer1.defineModulesWithOneLoader(cf2, layer1.findLoader("test"));
ModuleLayer layer2 = layer1.defineModulesWithOneLoader(cf2, layer1.findLoader("test"));
ClassLoader cl2 = layer2.findLoader("test");
Method m = cl2.loadClass("test.XMLFactoryHelper").getMethod("instantiateXMLService", String.class);
for (String service : services1) {
Object o = m.invoke(null, service);
Layer providerLayer = o.getClass().getModule().getLayer();
ModuleLayer providerLayer = o.getClass().getModule().getLayer();
assertSame(providerLayer, layer1);
}
for (String service : services2) {
Object o = m.invoke(null, service);
Layer providerLayer = o.getClass().getModule().getLayer();
ModuleLayer providerLayer = o.getClass().getModule().getLayer();
assertSame(providerLayer, layer2);
}
@ -159,26 +157,26 @@ public class LayerModularXMLParserTest {
*/
public void testTwoLayerWithDuplicate() throws Exception {
ModuleFinder finder1 = ModuleFinder.of(MOD_DIR1, MOD_DIR2);
Configuration cf1 = Layer.boot().configuration()
Configuration cf1 = ModuleLayer.boot().configuration()
.resolveAndBind(finder1, ModuleFinder.of(), Set.of("test"));
ClassLoader scl = ClassLoader.getSystemClassLoader();
Layer layer1 = Layer.boot().defineModulesWithManyLoaders(cf1, scl);
ModuleLayer layer1 = ModuleLayer.boot().defineModulesWithManyLoaders(cf1, scl);
ModuleFinder finder2 = ModuleFinder.of(MOD_DIR2);
Configuration cf2 = cf1.resolveAndBind(finder2, ModuleFinder.of(), Set.of("test"));
Layer layer2 = layer1.defineModulesWithOneLoader(cf2, layer1.findLoader("test"));
ModuleLayer layer2 = layer1.defineModulesWithOneLoader(cf2, layer1.findLoader("test"));
ClassLoader cl2 = layer2.findLoader("test");
Method m = cl2.loadClass("test.XMLFactoryHelper").getMethod("instantiateXMLService", String.class);
for (String service : services1) {
Object o = m.invoke(null, service);
Layer providerLayer = o.getClass().getModule().getLayer();
ModuleLayer providerLayer = o.getClass().getModule().getLayer();
assertSame(providerLayer, layer1);
}
for (String service : services2) {
Object o = m.invoke(null, service);
Layer providerLayer = o.getClass().getModule().getLayer();
ModuleLayer providerLayer = o.getClass().getModule().getLayer();
assertSame(providerLayer, layer2);
}

View File

@ -24,8 +24,6 @@
import static javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI;
import java.lang.module.ModuleDescriptor.Provides;
import java.lang.reflect.Layer;
import java.lang.reflect.Module;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
@ -38,7 +36,7 @@ public class Main {
* @param args, the names of provider modules, which have been loaded
*/
public static void main(String[] args) throws Exception {
Module xml = Layer.boot().findModule("java.xml").get();
Module xml = ModuleLayer.boot().findModule("java.xml").get();
Set<String> allServices = new HashSet<>(Arrays.asList(expectedAllServices));
if (!allServices.equals(xml.getDescriptor().uses()))
@ -46,7 +44,7 @@ public class Main {
+ xml.getDescriptor().uses());
long violationCount = Stream.of(args)
.map(xmlProviderName -> Layer.boot().findModule(xmlProviderName).get())
.map(xmlProviderName -> ModuleLayer.boot().findModule(xmlProviderName).get())
.mapToLong(
// services provided by the implementation in provider module
provider -> provider.getDescriptor().provides().stream()