< prev index next >
test/java/lang/reflect/Layer/BasicLayerTest.java
Print this page
*** 1,7 ****
/*
! * Copyright (c) 2014, 2016, 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) 2014, 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.
*** 22,31 ****
--- 22,32 ----
*/
/**
* @test
* @library /lib/testlibrary
+ * @modules java.base/jdk.internal.misc
* @build BasicLayerTest ModuleUtils
* @compile layertest/Test.java
* @run testng BasicLayerTest
* @summary Basic tests for java.lang.reflect.Layer
*/
*** 41,57 ****
--- 42,68 ----
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
+ import jdk.internal.misc.SharedSecrets;
import org.testng.annotations.Test;
import static org.testng.Assert.*;
@Test
public class BasicLayerTest {
/**
+ * Creates a "non-strict" builder for building a module. This allows the
+ * test the create ModuleDescriptor objects that do not require java.base.
+ */
+ private static ModuleDescriptor.Builder newBuilder(String mn) {
+ return SharedSecrets.getJavaLangModuleAccess()
+ .newModuleBuilder(mn, false, Set.of());
+ }
+
+ /**
* Exercise Layer.empty()
*/
public void testEmpty() {
Layer emptyLayer = Layer.empty();
*** 107,135 ****
/**
* Exercise Layer defineModules, created with empty layer as parent
*/
public void testLayerOnEmpty() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
.requires("m2")
.exports("p1")
.build();
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2")
.requires("m3")
.build();
! ModuleDescriptor descriptor3
! = ModuleDescriptor.module("m3")
.build();
ModuleFinder finder
= ModuleUtils.finderOf(descriptor1, descriptor2, descriptor3);
! Configuration cf = resolveRequires(finder, "m1");
// map each module to its own class loader for this test
ClassLoader loader1 = new ClassLoader() { };
ClassLoader loader2 = new ClassLoader() { };
ClassLoader loader3 = new ClassLoader() { };
--- 118,143 ----
/**
* Exercise Layer defineModules, created with empty layer as parent
*/
public void testLayerOnEmpty() {
! ModuleDescriptor descriptor1 = newBuilder("m1")
.requires("m2")
.exports("p1")
.build();
! ModuleDescriptor descriptor2 = newBuilder("m2")
.requires("m3")
.build();
! ModuleDescriptor descriptor3 = newBuilder("m3")
.build();
ModuleFinder finder
= ModuleUtils.finderOf(descriptor1, descriptor2, descriptor3);
! Configuration cf = resolve(finder, "m1");
// map each module to its own class loader for this test
ClassLoader loader1 = new ClassLoader() { };
ClassLoader loader2 = new ClassLoader() { };
ClassLoader loader3 = new ClassLoader() { };
*** 189,215 ****
/**
* Exercise Layer defineModules, created with boot layer as parent
*/
public void testLayerOnBoot() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
.requires("m2")
.requires("java.base")
.exports("p1")
.build();
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2")
.requires("java.base")
.build();
ModuleFinder finder
= ModuleUtils.finderOf(descriptor1, descriptor2);
Configuration parent = Layer.boot().configuration();
! Configuration cf = resolveRequires(parent, finder, "m1");
ClassLoader loader = new ClassLoader() { };
Layer layer = Layer.boot().defineModules(cf, mn -> loader);
--- 197,221 ----
/**
* Exercise Layer defineModules, created with boot layer as parent
*/
public void testLayerOnBoot() {
! ModuleDescriptor descriptor1 = newBuilder("m1")
.requires("m2")
.requires("java.base")
.exports("p1")
.build();
! ModuleDescriptor descriptor2 = newBuilder("m2")
.requires("java.base")
.build();
ModuleFinder finder
= ModuleUtils.finderOf(descriptor1, descriptor2);
Configuration parent = Layer.boot().configuration();
! Configuration cf = resolve(parent, finder, "m1");
ClassLoader loader = new ClassLoader() { };
Layer layer = Layer.boot().defineModules(cf, mn -> loader);
*** 254,278 ****
/**
* Exercise Layer defineModules with a configuration of two modules that
* have the same module-private package.
*/
public void testPackageContainedInSelfAndOther() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
.requires("m2")
! .contains("p")
.build();
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2")
! .contains("p")
.build();
ModuleFinder finder
= ModuleUtils.finderOf(descriptor1, descriptor2);
! Configuration cf = resolveRequires(finder, "m1");
assertTrue(cf.modules().size() == 2);
// one loader per module, should be okay
Layer.empty().defineModules(cf, mn -> new ClassLoader() { });
--- 260,282 ----
/**
* Exercise Layer defineModules with a configuration of two modules that
* have the same module-private package.
*/
public void testPackageContainedInSelfAndOther() {
! ModuleDescriptor descriptor1 = newBuilder("m1")
.requires("m2")
! .packages(Set.of("p"))
.build();
! ModuleDescriptor descriptor2 = newBuilder("m2")
! .packages(Set.of("p"))
.build();
ModuleFinder finder
= ModuleUtils.finderOf(descriptor1, descriptor2);
! Configuration cf = resolve(finder, "m1");
assertTrue(cf.modules().size() == 2);
// one loader per module, should be okay
Layer.empty().defineModules(cf, mn -> new ClassLoader() { });
*** 290,325 ****
* graph. The same package is exported in both partitions.
*/
public void testSameExportInPartitionedGraph() {
// m1 reads m2, m2 exports p to m1
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
.requires("m2")
.build();
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2")
.exports("p", Set.of("m1"))
.build();
// m3 reads m4, m4 exports p to m3
! ModuleDescriptor descriptor3
! = ModuleDescriptor.module("m3")
.requires("m4")
.build();
! ModuleDescriptor descriptor4
! = ModuleDescriptor.module("m4")
.exports("p", Set.of("m3"))
.build();
ModuleFinder finder
= ModuleUtils.finderOf(descriptor1,
descriptor2,
descriptor3,
descriptor4);
! Configuration cf = resolveRequires(finder, "m1", "m3");
assertTrue(cf.modules().size() == 4);
// one loader per module
Layer.empty().defineModules(cf, mn -> new ClassLoader() { });
--- 294,325 ----
* graph. The same package is exported in both partitions.
*/
public void testSameExportInPartitionedGraph() {
// m1 reads m2, m2 exports p to m1
! ModuleDescriptor descriptor1 = newBuilder("m1")
.requires("m2")
.build();
! ModuleDescriptor descriptor2 = newBuilder("m2")
.exports("p", Set.of("m1"))
.build();
// m3 reads m4, m4 exports p to m3
! ModuleDescriptor descriptor3 = newBuilder("m3")
.requires("m4")
.build();
! ModuleDescriptor descriptor4 = newBuilder("m4")
.exports("p", Set.of("m3"))
.build();
ModuleFinder finder
= ModuleUtils.finderOf(descriptor1,
descriptor2,
descriptor3,
descriptor4);
! Configuration cf = resolve(finder, "m1", "m3");
assertTrue(cf.modules().size() == 4);
// one loader per module
Layer.empty().defineModules(cf, mn -> new ClassLoader() { });
*** 351,370 ****
// check assumption that java.base contains sun.launcher
ModuleDescriptor base = Object.class.getModule().getDescriptor();
assertTrue(base.packages().contains("sun.launcher"));
! ModuleDescriptor descriptor
! = ModuleDescriptor.module("m1")
.requires("java.base")
! .contains("sun.launcher")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor);
Configuration parent = Layer.boot().configuration();
! Configuration cf = parent.resolveRequires(finder, ModuleFinder.of(), Set.of("m1"));
assertTrue(cf.modules().size() == 1);
ClassLoader loader = new ClassLoader() { };
Layer layer = Layer.boot().defineModules(cf, mn -> loader);
assertTrue(layer.modules().size() == 1);
--- 351,369 ----
// check assumption that java.base contains sun.launcher
ModuleDescriptor base = Object.class.getModule().getDescriptor();
assertTrue(base.packages().contains("sun.launcher"));
! ModuleDescriptor descriptor = newBuilder("m1")
.requires("java.base")
! .packages(Set.of("sun.launcher"))
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor);
Configuration parent = Layer.boot().configuration();
! Configuration cf = parent.resolve(finder, ModuleFinder.of(), Set.of("m1"));
assertTrue(cf.modules().size() == 1);
ClassLoader loader = new ClassLoader() { };
Layer layer = Layer.boot().defineModules(cf, mn -> loader);
assertTrue(layer.modules().size() == 1);
*** 380,416 ****
*/
public void testImpliedReadabilityWithLayers1() {
// cf1: m1 and m2, m2 requires transitive m1
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
.build();
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2")
.requires(Set.of(Requires.Modifier.TRANSITIVE), "m1")
.build();
ModuleFinder finder1 = ModuleUtils.finderOf(descriptor1, descriptor2);
! Configuration cf1 = resolveRequires(finder1, "m2");
ClassLoader cl1 = new ClassLoader() { };
Layer layer1 = Layer.empty().defineModules(cf1, mn -> cl1);
// cf2: m3, m3 requires m2
! ModuleDescriptor descriptor3
! = ModuleDescriptor.module("m3")
.requires("m2")
.build();
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor3);
! Configuration cf2 = resolveRequires(cf1, finder2, "m3");
ClassLoader cl2 = new ClassLoader() { };
Layer layer2 = layer1.defineModules(cf2, mn -> cl2);
assertTrue(layer1.parents().size() == 1);
--- 379,412 ----
*/
public void testImpliedReadabilityWithLayers1() {
// cf1: m1 and m2, m2 requires transitive m1
! ModuleDescriptor descriptor1 = newBuilder("m1")
.build();
! ModuleDescriptor descriptor2 = newBuilder("m2")
.requires(Set.of(Requires.Modifier.TRANSITIVE), "m1")
.build();
ModuleFinder finder1 = ModuleUtils.finderOf(descriptor1, descriptor2);
! Configuration cf1 = resolve(finder1, "m2");
ClassLoader cl1 = new ClassLoader() { };
Layer layer1 = Layer.empty().defineModules(cf1, mn -> cl1);
// cf2: m3, m3 requires m2
! ModuleDescriptor descriptor3 = newBuilder("m3")
.requires("m2")
.build();
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor3);
! Configuration cf2 = resolve(cf1, finder2, "m3");
ClassLoader cl2 = new ClassLoader() { };
Layer layer2 = layer1.defineModules(cf2, mn -> cl2);
assertTrue(layer1.parents().size() == 1);
*** 454,490 ****
*/
public void testImpliedReadabilityWithLayers2() {
// cf1: m1
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
! .build();
ModuleFinder finder1 = ModuleUtils.finderOf(descriptor1);
! Configuration cf1 = resolveRequires(finder1, "m1");
ClassLoader cl1 = new ClassLoader() { };
Layer layer1 = Layer.empty().defineModules(cf1, mn -> cl1);
// cf2: m2, m3: m2 requires transitive m1, m3 requires m2
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2")
.requires(Set.of(Requires.Modifier.TRANSITIVE), "m1")
.build();
! ModuleDescriptor descriptor3
! = ModuleDescriptor.module("m3")
.requires("m2")
.build();
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor2, descriptor3);
! Configuration cf2 = resolveRequires(cf1, finder2, "m3");
ClassLoader cl2 = new ClassLoader() { };
Layer layer2 = layer1.defineModules(cf2, mn -> cl2);
assertTrue(layer1.parents().size() == 1);
--- 450,482 ----
*/
public void testImpliedReadabilityWithLayers2() {
// cf1: m1
! ModuleDescriptor descriptor1 = newBuilder("m1").build();
ModuleFinder finder1 = ModuleUtils.finderOf(descriptor1);
! Configuration cf1 = resolve(finder1, "m1");
ClassLoader cl1 = new ClassLoader() { };
Layer layer1 = Layer.empty().defineModules(cf1, mn -> cl1);
// cf2: m2, m3: m2 requires transitive m1, m3 requires m2
! ModuleDescriptor descriptor2 = newBuilder("m2")
.requires(Set.of(Requires.Modifier.TRANSITIVE), "m1")
.build();
! ModuleDescriptor descriptor3 = newBuilder("m3")
.requires("m2")
.build();
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor2, descriptor3);
! Configuration cf2 = resolve(cf1, finder2, "m3");
ClassLoader cl2 = new ClassLoader() { };
Layer layer2 = layer1.defineModules(cf2, mn -> cl2);
assertTrue(layer1.parents().size() == 1);
*** 525,571 ****
*/
public void testImpliedReadabilityWithLayers3() {
// cf1: m1
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
! .build();
ModuleFinder finder1 = ModuleUtils.finderOf(descriptor1);
! Configuration cf1 = resolveRequires(finder1, "m1");
ClassLoader cl1 = new ClassLoader() { };
Layer layer1 = Layer.empty().defineModules(cf1, mn -> cl1);
// cf2: m2 requires transitive m1
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2")
.requires(Set.of(Requires.Modifier.TRANSITIVE), "m1")
.build();
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor2);
! Configuration cf2 = resolveRequires(cf1, finder2, "m2");
ClassLoader cl2 = new ClassLoader() { };
Layer layer2 = layer1.defineModules(cf2, mn -> cl2);
// cf3: m3 requires m2
! ModuleDescriptor descriptor3
! = ModuleDescriptor.module("m3")
.requires("m2")
.build();
ModuleFinder finder3 = ModuleUtils.finderOf(descriptor3);
! Configuration cf3 = resolveRequires(cf2, finder3, "m3");
ClassLoader cl3 = new ClassLoader() { };
Layer layer3 = layer2.defineModules(cf3, mn -> cl3);
assertTrue(layer1.parents().size() == 1);
--- 517,559 ----
*/
public void testImpliedReadabilityWithLayers3() {
// cf1: m1
! ModuleDescriptor descriptor1 = newBuilder("m1").build();
ModuleFinder finder1 = ModuleUtils.finderOf(descriptor1);
! Configuration cf1 = resolve(finder1, "m1");
ClassLoader cl1 = new ClassLoader() { };
Layer layer1 = Layer.empty().defineModules(cf1, mn -> cl1);
// cf2: m2 requires transitive m1
! ModuleDescriptor descriptor2 = newBuilder("m2")
.requires(Set.of(Requires.Modifier.TRANSITIVE), "m1")
.build();
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor2);
! Configuration cf2 = resolve(cf1, finder2, "m2");
ClassLoader cl2 = new ClassLoader() { };
Layer layer2 = layer1.defineModules(cf2, mn -> cl2);
// cf3: m3 requires m2
! ModuleDescriptor descriptor3 = newBuilder("m3")
.requires("m2")
.build();
ModuleFinder finder3 = ModuleUtils.finderOf(descriptor3);
! Configuration cf3 = resolve(cf2, finder3, "m3");
ClassLoader cl3 = new ClassLoader() { };
Layer layer3 = layer2.defineModules(cf3, mn -> cl3);
assertTrue(layer1.parents().size() == 1);
*** 608,650 ****
*/
public void testImpliedReadabilityWithLayers4() {
// cf1: m1, m2 requires transitive m1
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
.build();
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2")
.requires(Set.of(Requires.Modifier.TRANSITIVE), "m1")
.build();
ModuleFinder finder1 = ModuleUtils.finderOf(descriptor1, descriptor2);
! Configuration cf1 = resolveRequires(finder1, "m2");
ClassLoader cl1 = new ClassLoader() { };
Layer layer1 = Layer.empty().defineModules(cf1, mn -> cl1);
// cf2: m3 requires transitive m2, m4 requires m3
! ModuleDescriptor descriptor3
! = ModuleDescriptor.module("m3")
.requires(Set.of(Requires.Modifier.TRANSITIVE), "m2")
.build();
! ModuleDescriptor descriptor4
! = ModuleDescriptor.module("m4")
.requires("m3")
.build();
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor3, descriptor4);
! Configuration cf2 = resolveRequires(cf1, finder2, "m3", "m4");
ClassLoader cl2 = new ClassLoader() { };
Layer layer2 = layer1.defineModules(cf2, mn -> cl2);
assertTrue(layer1.parents().size() == 1);
--- 596,634 ----
*/
public void testImpliedReadabilityWithLayers4() {
// cf1: m1, m2 requires transitive m1
! ModuleDescriptor descriptor1 = newBuilder("m1")
.build();
! ModuleDescriptor descriptor2 = newBuilder("m2")
.requires(Set.of(Requires.Modifier.TRANSITIVE), "m1")
.build();
ModuleFinder finder1 = ModuleUtils.finderOf(descriptor1, descriptor2);
! Configuration cf1 = resolve(finder1, "m2");
ClassLoader cl1 = new ClassLoader() { };
Layer layer1 = Layer.empty().defineModules(cf1, mn -> cl1);
// cf2: m3 requires transitive m2, m4 requires m3
! ModuleDescriptor descriptor3 = newBuilder("m3")
.requires(Set.of(Requires.Modifier.TRANSITIVE), "m2")
.build();
! ModuleDescriptor descriptor4 = newBuilder("m4")
.requires("m3")
.build();
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor3, descriptor4);
! Configuration cf2 = resolve(cf1, finder2, "m3", "m4");
ClassLoader cl2 = new ClassLoader() { };
Layer layer2 = layer1.defineModules(cf2, mn -> cl2);
assertTrue(layer1.parents().size() == 1);
*** 691,710 ****
* defined to the class loader.
*/
@Test(expectedExceptions = { LayerInstantiationException.class })
public void testModuleAlreadyDefinedToLoader() {
! ModuleDescriptor md
! = ModuleDescriptor.module("m")
.requires("java.base")
.build();
ModuleFinder finder = ModuleUtils.finderOf(md);
Configuration parent = Layer.boot().configuration();
! Configuration cf = parent.resolveRequires(finder, ModuleFinder.of(), Set.of("m"));
ClassLoader loader = new ClassLoader() { };
Layer.boot().defineModules(cf, mn -> loader);
--- 675,693 ----
* defined to the class loader.
*/
@Test(expectedExceptions = { LayerInstantiationException.class })
public void testModuleAlreadyDefinedToLoader() {
! ModuleDescriptor md = newBuilder("m")
.requires("java.base")
.build();
ModuleFinder finder = ModuleUtils.finderOf(md);
Configuration parent = Layer.boot().configuration();
! Configuration cf = parent.resolve(finder, ModuleFinder.of(), Set.of("m"));
ClassLoader loader = new ClassLoader() { };
Layer.boot().defineModules(cf, mn -> loader);
*** 720,738 ****
* defined to it containing package {@code p}.
*/
@Test(expectedExceptions = { LayerInstantiationException.class })
public void testPackageAlreadyInNamedModule() {
! ModuleDescriptor md1
! = ModuleDescriptor.module("m1")
! .contains("p")
.requires("java.base")
.build();
! ModuleDescriptor md2
! = ModuleDescriptor.module("m2")
! .contains("p")
.requires("java.base")
.build();
ModuleFinder finder = ModuleUtils.finderOf(md1, md2);
--- 703,719 ----
* defined to it containing package {@code p}.
*/
@Test(expectedExceptions = { LayerInstantiationException.class })
public void testPackageAlreadyInNamedModule() {
! ModuleDescriptor md1 = newBuilder("m1")
! .packages(Set.of("p"))
.requires("java.base")
.build();
! ModuleDescriptor md2 = newBuilder("m2")
! .packages(Set.of("p"))
.requires("java.base")
.build();
ModuleFinder finder = ModuleUtils.finderOf(md1, md2);
*** 740,756 ****
// define m1 containing package p to class loader
Configuration parent = Layer.boot().configuration();
! Configuration cf1 = parent.resolveRequires(finder, ModuleFinder.of(), Set.of("m1"));
Layer layer1 = Layer.boot().defineModules(cf1, mn -> loader);
// attempt to define m2 containing package p to class loader
! Configuration cf2 = parent.resolveRequires(finder, ModuleFinder.of(), Set.of("m2"));
// should throw exception because p already in m1
Layer layer2 = Layer.boot().defineModules(cf2, mn -> loader);
}
--- 721,737 ----
// define m1 containing package p to class loader
Configuration parent = Layer.boot().configuration();
! Configuration cf1 = parent.resolve(finder, ModuleFinder.of(), Set.of("m1"));
Layer layer1 = Layer.boot().defineModules(cf1, mn -> loader);
// attempt to define m2 containing package p to class loader
! Configuration cf2 = parent.resolve(finder, ModuleFinder.of(), Set.of("m2"));
// should throw exception because p already in m1
Layer layer2 = Layer.boot().defineModules(cf2, mn -> loader);
}
*** 765,803 ****
public void testPackageAlreadyInUnnamedModule() throws Exception {
Class<?> c = layertest.Test.class;
assertFalse(c.getModule().isNamed()); // in unnamed module
! ModuleDescriptor md
! = ModuleDescriptor.module("m")
! .contains(c.getPackageName())
.requires("java.base")
.build();
ModuleFinder finder = ModuleUtils.finderOf(md);
Configuration parent = Layer.boot().configuration();
! Configuration cf = parent.resolveRequires(finder, ModuleFinder.of(), Set.of("m"));
Layer.boot().defineModules(cf, mn -> c.getClassLoader());
}
/**
* Attempt to create a Layer with a module named "java.base".
*/
public void testLayerWithJavaBase() {
! ModuleDescriptor descriptor
! = ModuleDescriptor.module("java.base")
.exports("java.lang")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor);
Configuration cf = Layer.boot()
.configuration()
! .resolveRequires(finder, ModuleFinder.of(), Set.of("java.base"));
assertTrue(cf.modules().size() == 1);
ClassLoader scl = ClassLoader.getSystemClassLoader();
try {
--- 746,782 ----
public void testPackageAlreadyInUnnamedModule() throws Exception {
Class<?> c = layertest.Test.class;
assertFalse(c.getModule().isNamed()); // in unnamed module
! ModuleDescriptor md = newBuilder("m")
! .packages(Set.of(c.getPackageName()))
.requires("java.base")
.build();
ModuleFinder finder = ModuleUtils.finderOf(md);
Configuration parent = Layer.boot().configuration();
! Configuration cf = parent.resolve(finder, ModuleFinder.of(), Set.of("m"));
Layer.boot().defineModules(cf, mn -> c.getClassLoader());
}
/**
* Attempt to create a Layer with a module named "java.base".
*/
public void testLayerWithJavaBase() {
! ModuleDescriptor descriptor = newBuilder("java.base")
.exports("java.lang")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor);
Configuration cf = Layer.boot()
.configuration()
! .resolve(finder, ModuleFinder.of(), Set.of("java.base"));
assertTrue(cf.modules().size() == 1);
ClassLoader scl = ClassLoader.getSystemClassLoader();
try {
*** 822,841 ****
* This should only be allowed when the module is defined to the platform
* class loader.
*/
@Test(enabled = false)
public void testLayerWithJavaPackage() {
! ModuleDescriptor descriptor
! = ModuleDescriptor.module("foo")
! .contains("java.foo")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor);
Configuration cf = Layer.boot()
.configuration()
! .resolveRequires(finder, ModuleFinder.of(), Set.of("foo"));
assertTrue(cf.modules().size() == 1);
ClassLoader pcl = ClassLoader.getPlatformClassLoader();
ClassLoader scl = ClassLoader.getSystemClassLoader();
--- 801,819 ----
* This should only be allowed when the module is defined to the platform
* class loader.
*/
@Test(enabled = false)
public void testLayerWithJavaPackage() {
! ModuleDescriptor descriptor = newBuilder("foo")
! .packages(Set.of("java.foo"))
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor);
Configuration cf = Layer.boot()
.configuration()
! .resolve(finder, ModuleFinder.of(), Set.of("foo"));
assertTrue(cf.modules().size() == 1);
ClassLoader pcl = ClassLoader.getPlatformClassLoader();
ClassLoader scl = ClassLoader.getSystemClassLoader();
*** 868,886 ****
/**
* Attempt to create a Layer with a module defined to the boot loader
*/
@Test(expectedExceptions = { LayerInstantiationException.class })
public void testLayerWithBootLoader() {
! ModuleDescriptor descriptor
! = ModuleDescriptor.module("m1")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor);
Configuration cf = Layer.boot()
.configuration()
! .resolveRequires(finder, ModuleFinder.of(), Set.of("m1"));
assertTrue(cf.modules().size() == 1);
Layer.boot().defineModules(cf, mn -> null );
}
--- 846,863 ----
/**
* Attempt to create a Layer with a module defined to the boot loader
*/
@Test(expectedExceptions = { LayerInstantiationException.class })
public void testLayerWithBootLoader() {
! ModuleDescriptor descriptor = newBuilder("m1")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor);
Configuration cf = Layer.boot()
.configuration()
! .resolve(finder, ModuleFinder.of(), Set.of("m1"));
assertTrue(cf.modules().size() == 1);
Layer.boot().defineModules(cf, mn -> null );
}
*** 889,907 ****
* Parent of configuration != configuration of parent Layer
*/
@Test(expectedExceptions = { IllegalArgumentException.class })
public void testIncorrectParent1() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
.requires("java.base")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1);
Configuration parent = Layer.boot().configuration();
! Configuration cf = parent.resolveRequires(finder, ModuleFinder.of(), Set.of("m1"));
ClassLoader loader = new ClassLoader() { };
Layer.empty().defineModules(cf, mn -> loader);
}
--- 866,883 ----
* Parent of configuration != configuration of parent Layer
*/
@Test(expectedExceptions = { IllegalArgumentException.class })
public void testIncorrectParent1() {
! ModuleDescriptor descriptor1 = newBuilder("m1")
.requires("java.base")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1);
Configuration parent = Layer.boot().configuration();
! Configuration cf = parent.resolve(finder, ModuleFinder.of(), Set.of("m1"));
ClassLoader loader = new ClassLoader() { };
Layer.empty().defineModules(cf, mn -> loader);
}
*** 910,926 ****
* Parent of configuration != configuration of parent Layer
*/
@Test(expectedExceptions = { IllegalArgumentException.class })
public void testIncorrectParent2() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1);
! Configuration cf = resolveRequires(finder, "m1");
ClassLoader loader = new ClassLoader() { };
Layer.boot().defineModules(cf, mn -> loader);
}
--- 886,901 ----
* Parent of configuration != configuration of parent Layer
*/
@Test(expectedExceptions = { IllegalArgumentException.class })
public void testIncorrectParent2() {
! ModuleDescriptor descriptor1 = newBuilder("m1")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1);
! Configuration cf = resolve(finder, "m1");
ClassLoader loader = new ClassLoader() { };
Layer.boot().defineModules(cf, mn -> loader);
}
*** 933,943 ****
Layer.empty().defineModules(null, mn -> loader);
}
@Test(expectedExceptions = { NullPointerException.class })
public void testCreateWithNull2() {
! Configuration cf = resolveRequires(Layer.boot().configuration(), ModuleFinder.of());
Layer.boot().defineModules(cf, null);
}
@Test(expectedExceptions = { NullPointerException.class })
public void testCreateWithNull3() {
--- 908,918 ----
Layer.empty().defineModules(null, mn -> loader);
}
@Test(expectedExceptions = { NullPointerException.class })
public void testCreateWithNull2() {
! Configuration cf = resolve(Layer.boot().configuration(), ModuleFinder.of());
Layer.boot().defineModules(cf, null);
}
@Test(expectedExceptions = { NullPointerException.class })
public void testCreateWithNull3() {
*** 973,988 ****
/**
* Resolve the given modules, by name, and returns the resulting
* Configuration.
*/
! private static Configuration resolveRequires(Configuration cf,
ModuleFinder finder,
String... roots) {
! return cf.resolveRequires(finder, ModuleFinder.of(), Set.of(roots));
}
! private static Configuration resolveRequires(ModuleFinder finder,
String... roots) {
! return resolveRequires(Configuration.empty(), finder, roots);
}
}
--- 948,963 ----
/**
* Resolve the given modules, by name, and returns the resulting
* Configuration.
*/
! private static Configuration resolve(Configuration cf,
ModuleFinder finder,
String... roots) {
! return cf.resolve(finder, ModuleFinder.of(), Set.of(roots));
}
! private static Configuration resolve(ModuleFinder finder,
String... roots) {
! return resolve(Configuration.empty(), finder, roots);
}
}
< prev index next >