< prev index next >
test/java/lang/module/ConfigurationTest.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,79 ****
*/
/**
* @test
* @library /lib/testlibrary
* @build ConfigurationTest ModuleUtils
* @run testng ConfigurationTest
* @summary Basic tests for java.lang.module.Configuration
*/
import java.lang.module.Configuration;
import java.lang.module.ModuleDescriptor;
import java.lang.module.ModuleDescriptor.Requires;
import java.lang.module.ModuleFinder;
import java.lang.module.ResolutionException;
import java.lang.module.ResolvedModule;
import java.lang.reflect.Layer;
- import java.util.HashSet;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import static org.testng.Assert.*;
@Test
public class ConfigurationTest {
/**
* Basic test of resolver
* m1 requires m2, m2 requires m3
*/
public void testBasic() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
.requires("m2")
.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");
assertTrue(cf.modules().size() == 3);
assertTrue(cf.findModule("m1").isPresent());
assertTrue(cf.findModule("m2").isPresent());
--- 22,87 ----
*/
/**
* @test
* @library /lib/testlibrary
+ * @modules java.base/jdk.internal.misc
* @build ConfigurationTest ModuleUtils
* @run testng ConfigurationTest
* @summary Basic tests for java.lang.module.Configuration
*/
import java.lang.module.Configuration;
+ import java.lang.module.FindException;
import java.lang.module.ModuleDescriptor;
+ import java.lang.module.ModuleDescriptor.Builder;
import java.lang.module.ModuleDescriptor.Requires;
import java.lang.module.ModuleFinder;
import java.lang.module.ResolutionException;
import java.lang.module.ResolvedModule;
import java.lang.reflect.Layer;
import java.util.List;
import java.util.Optional;
import java.util.Set;
+ import jdk.internal.misc.SharedSecrets;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import static org.testng.Assert.*;
@Test
public class ConfigurationTest {
+ /**
+ * 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());
+ }
/**
* Basic test of resolver
* m1 requires m2, m2 requires m3
*/
public void testBasic() {
! ModuleDescriptor descriptor1 = newBuilder("m1")
.requires("m2")
.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");
assertTrue(cf.modules().size() == 3);
assertTrue(cf.findModule("m1").isPresent());
assertTrue(cf.findModule("m2").isPresent());
*** 108,135 ****
* Basic test of "requires transitive":
* m1 requires m2, m2 requires transitive m3
*/
public void testRequiresTransitive1() {
// m1 requires m2, m2 requires transitive m3
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
.requires("m2")
.build();
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2")
.requires(Set.of(Requires.Modifier.TRANSITIVE), "m3")
.build();
! ModuleDescriptor descriptor3
! = ModuleDescriptor.module("m3")
.build();
ModuleFinder finder
= ModuleUtils.finderOf(descriptor1, descriptor2, descriptor3);
! Configuration cf = resolveRequires(finder, "m1");
assertTrue(cf.modules().size() == 3);
assertTrue(cf.findModule("m1").isPresent());
assertTrue(cf.findModule("m2").isPresent());
--- 116,140 ----
* Basic test of "requires transitive":
* m1 requires m2, m2 requires transitive m3
*/
public void testRequiresTransitive1() {
// m1 requires m2, m2 requires transitive m3
! ModuleDescriptor descriptor1 = newBuilder("m1")
.requires("m2")
.build();
! ModuleDescriptor descriptor2 = newBuilder("m2")
.requires(Set.of(Requires.Modifier.TRANSITIVE), "m3")
.build();
! ModuleDescriptor descriptor3 = newBuilder("m3")
.build();
ModuleFinder finder
= ModuleUtils.finderOf(descriptor1, descriptor2, descriptor3);
! Configuration cf = resolve(finder, "m1");
assertTrue(cf.modules().size() == 3);
assertTrue(cf.findModule("m1").isPresent());
assertTrue(cf.findModule("m2").isPresent());
*** 165,186 ****
*/
public void testRequiresTransitive2() {
// 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");
assertTrue(cf1.modules().size() == 2);
assertTrue(cf1.findModule("m1").isPresent());
assertTrue(cf1.findModule("m2").isPresent());
assertTrue(cf1.parents().size() == 1);
--- 170,189 ----
*/
public void testRequiresTransitive2() {
// 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");
assertTrue(cf1.modules().size() == 2);
assertTrue(cf1.findModule("m1").isPresent());
assertTrue(cf1.findModule("m2").isPresent());
assertTrue(cf1.parents().size() == 1);
*** 194,211 ****
assertTrue(m2.reads().contains(m1));
// cf2: m3, m3 requires m2
! ModuleDescriptor descriptor3
! = ModuleDescriptor.module("m3")
.requires("m2")
.build();
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor3);
! Configuration cf2 = resolveRequires(cf1, finder2, "m3");
assertTrue(cf2.modules().size() == 1);
assertTrue(cf2.findModule("m1").isPresent()); // in parent
assertTrue(cf2.findModule("m2").isPresent()); // in parent
assertTrue(cf2.findModule("m3").isPresent());
--- 197,213 ----
assertTrue(m2.reads().contains(m1));
// cf2: m3, m3 requires m2
! ModuleDescriptor descriptor3 = newBuilder("m3")
.requires("m2")
.build();
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor3);
! Configuration cf2 = resolve(cf1, finder2, "m3");
assertTrue(cf2.modules().size() == 1);
assertTrue(cf2.findModule("m1").isPresent()); // in parent
assertTrue(cf2.findModule("m2").isPresent()); // in parent
assertTrue(cf2.findModule("m3").isPresent());
*** 229,245 ****
*/
public void testRequiresTransitive3() {
// cf1: m1
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
! .build();
ModuleFinder finder1 = ModuleUtils.finderOf(descriptor1);
! Configuration cf1 = resolveRequires(finder1, "m1");
assertTrue(cf1.modules().size() == 1);
assertTrue(cf1.findModule("m1").isPresent());
assertTrue(cf1.parents().size() == 1);
assertTrue(cf1.parents().get(0) == Configuration.empty());
--- 231,245 ----
*/
public void testRequiresTransitive3() {
// cf1: m1
! ModuleDescriptor descriptor1 = newBuilder("m1").build();
ModuleFinder finder1 = ModuleUtils.finderOf(descriptor1);
! Configuration cf1 = resolve(finder1, "m1");
assertTrue(cf1.modules().size() == 1);
assertTrue(cf1.findModule("m1").isPresent());
assertTrue(cf1.parents().size() == 1);
assertTrue(cf1.parents().get(0) == Configuration.empty());
*** 248,270 ****
assertTrue(m1.reads().size() == 0);
// 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");
assertTrue(cf2.modules().size() == 2);
assertTrue(cf2.findModule("m1").isPresent()); // in parent
assertTrue(cf2.findModule("m2").isPresent());
assertTrue(cf2.findModule("m3").isPresent());
--- 248,268 ----
assertTrue(m1.reads().size() == 0);
// 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");
assertTrue(cf2.modules().size() == 2);
assertTrue(cf2.findModule("m1").isPresent()); // in parent
assertTrue(cf2.findModule("m2").isPresent());
assertTrue(cf2.findModule("m3").isPresent());
*** 295,311 ****
*/
public void testRequiresTransitive4() {
// cf1: m1
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
! .build();
ModuleFinder finder1 = ModuleUtils.finderOf(descriptor1);
! Configuration cf1 = resolveRequires(finder1, "m1");
assertTrue(cf1.modules().size() == 1);
assertTrue(cf1.findModule("m1").isPresent());
assertTrue(cf1.parents().size() == 1);
assertTrue(cf1.parents().get(0) == Configuration.empty());
--- 293,307 ----
*/
public void testRequiresTransitive4() {
// cf1: m1
! ModuleDescriptor descriptor1 = newBuilder("m1").build();
ModuleFinder finder1 = ModuleUtils.finderOf(descriptor1);
! Configuration cf1 = resolve(finder1, "m1");
assertTrue(cf1.modules().size() == 1);
assertTrue(cf1.findModule("m1").isPresent());
assertTrue(cf1.parents().size() == 1);
assertTrue(cf1.parents().get(0) == Configuration.empty());
*** 314,331 ****
assertTrue(m1.reads().size() == 0);
// 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");
assertTrue(cf2.modules().size() == 1);
assertTrue(cf2.findModule("m1").isPresent()); // in parent
assertTrue(cf2.findModule("m2").isPresent());
assertTrue(cf2.parents().size() == 1);
--- 310,326 ----
assertTrue(m1.reads().size() == 0);
// 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");
assertTrue(cf2.modules().size() == 1);
assertTrue(cf2.findModule("m1").isPresent()); // in parent
assertTrue(cf2.findModule("m2").isPresent());
assertTrue(cf2.parents().size() == 1);
*** 338,355 ****
assertTrue(m2.reads().contains(m1));
// cf3: m3 requires m2
! ModuleDescriptor descriptor3
! = ModuleDescriptor.module("m3")
.requires("m2")
.build();
ModuleFinder finder3 = ModuleUtils.finderOf(descriptor3);
! Configuration cf3 = resolveRequires(cf2, finder3, "m3");
assertTrue(cf3.modules().size() == 1);
assertTrue(cf3.findModule("m1").isPresent()); // in parent
assertTrue(cf3.findModule("m2").isPresent()); // in parent
assertTrue(cf3.findModule("m3").isPresent());
--- 333,349 ----
assertTrue(m2.reads().contains(m1));
// cf3: m3 requires m2
! ModuleDescriptor descriptor3 = newBuilder("m3")
.requires("m2")
.build();
ModuleFinder finder3 = ModuleUtils.finderOf(descriptor3);
! Configuration cf3 = resolve(cf2, finder3, "m3");
assertTrue(cf3.modules().size() == 1);
assertTrue(cf3.findModule("m1").isPresent()); // in parent
assertTrue(cf3.findModule("m2").isPresent()); // in parent
assertTrue(cf3.findModule("m3").isPresent());
*** 374,395 ****
*/
public void testRequiresTransitive5() {
// 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");
assertTrue(cf1.modules().size() == 2);
assertTrue(cf1.findModule("m1").isPresent());
assertTrue(cf1.findModule("m2").isPresent());
assertTrue(cf1.parents().size() == 1);
--- 368,387 ----
*/
public void testRequiresTransitive5() {
// 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");
assertTrue(cf1.modules().size() == 2);
assertTrue(cf1.findModule("m1").isPresent());
assertTrue(cf1.findModule("m2").isPresent());
assertTrue(cf1.parents().size() == 1);
*** 406,429 ****
assertTrue(m2.reads().contains(m1));
// 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");
assertTrue(cf2.modules().size() == 2);
assertTrue(cf2.findModule("m1").isPresent()); // in parent
assertTrue(cf2.findModule("m2").isPresent()); // in parent
assertTrue(cf2.findModule("m3").isPresent());
--- 398,419 ----
assertTrue(m2.reads().contains(m1));
// 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");
assertTrue(cf2.modules().size() == 2);
assertTrue(cf2.findModule("m1").isPresent()); // in parent
assertTrue(cf2.findModule("m2").isPresent()); // in parent
assertTrue(cf2.findModule("m3").isPresent());
*** 454,501 ****
* - Configuration cf1: m1, m2 requires transitive m1
* - Configuration cf2: m1, m3 requires transitive m1
* - Configuration cf3(cf1,cf2): m4 requires m2, m3
*/
public void testRequiresTransitive6() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
.build();
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2")
.requires(Set.of(Requires.Modifier.TRANSITIVE), "m1")
.build();
! ModuleDescriptor descriptor3
! = ModuleDescriptor.module("m3")
.requires(Set.of(Requires.Modifier.TRANSITIVE), "m1")
.build();
! ModuleDescriptor descriptor4
! = ModuleDescriptor.module("m4")
.requires("m2")
.requires("m3")
.build();
ModuleFinder finder1 = ModuleUtils.finderOf(descriptor1, descriptor2);
! Configuration cf1 = resolveRequires(finder1, "m2");
assertTrue(cf1.modules().size() == 2);
assertTrue(cf1.findModule("m1").isPresent());
assertTrue(cf1.findModule("m2").isPresent());
assertTrue(cf1.parents().size() == 1);
assertTrue(cf1.parents().get(0) == Configuration.empty());
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor1, descriptor3);
! Configuration cf2 = resolveRequires(finder2, "m3");
assertTrue(cf2.modules().size() == 2);
assertTrue(cf2.findModule("m3").isPresent());
assertTrue(cf2.findModule("m1").isPresent());
assertTrue(cf2.parents().size() == 1);
assertTrue(cf2.parents().get(0) == Configuration.empty());
ModuleFinder finder3 = ModuleUtils.finderOf(descriptor4);
! Configuration cf3 = Configuration.resolveRequires(finder3,
List.of(cf1, cf2),
ModuleFinder.of(),
Set.of("m4"));
assertTrue(cf3.modules().size() == 1);
assertTrue(cf3.findModule("m4").isPresent());
--- 444,487 ----
* - Configuration cf1: m1, m2 requires transitive m1
* - Configuration cf2: m1, m3 requires transitive m1
* - Configuration cf3(cf1,cf2): m4 requires m2, m3
*/
public void testRequiresTransitive6() {
! ModuleDescriptor descriptor1 = newBuilder("m1")
.build();
! ModuleDescriptor descriptor2 = newBuilder("m2")
.requires(Set.of(Requires.Modifier.TRANSITIVE), "m1")
.build();
! ModuleDescriptor descriptor3 = newBuilder("m3")
.requires(Set.of(Requires.Modifier.TRANSITIVE), "m1")
.build();
! ModuleDescriptor descriptor4 = newBuilder("m4")
.requires("m2")
.requires("m3")
.build();
ModuleFinder finder1 = ModuleUtils.finderOf(descriptor1, descriptor2);
! Configuration cf1 = resolve(finder1, "m2");
assertTrue(cf1.modules().size() == 2);
assertTrue(cf1.findModule("m1").isPresent());
assertTrue(cf1.findModule("m2").isPresent());
assertTrue(cf1.parents().size() == 1);
assertTrue(cf1.parents().get(0) == Configuration.empty());
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor1, descriptor3);
! Configuration cf2 = resolve(finder2, "m3");
assertTrue(cf2.modules().size() == 2);
assertTrue(cf2.findModule("m3").isPresent());
assertTrue(cf2.findModule("m1").isPresent());
assertTrue(cf2.parents().size() == 1);
assertTrue(cf2.parents().get(0) == Configuration.empty());
ModuleFinder finder3 = ModuleUtils.finderOf(descriptor4);
! Configuration cf3 = Configuration.resolve(finder3,
List.of(cf1, cf2),
ModuleFinder.of(),
Set.of("m4"));
assertTrue(cf3.modules().size() == 1);
assertTrue(cf3.findModule("m4").isPresent());
*** 520,537 ****
* m1 requires static m2
* m2 is not observable
* resolve m1
*/
public void testRequiresStatic1() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
.requires(Set.of(Requires.Modifier.STATIC), "m2")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1);
! Configuration cf = resolveRequires(finder, "m1");
assertTrue(cf.modules().size() == 1);
ResolvedModule m1 = cf.findModule("m1").get();
assertTrue(m1.reads().size() == 0);
--- 506,522 ----
* m1 requires static m2
* m2 is not observable
* resolve m1
*/
public void testRequiresStatic1() {
! ModuleDescriptor descriptor1 = newBuilder("m1")
.requires(Set.of(Requires.Modifier.STATIC), "m2")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1);
! Configuration cf = resolve(finder, "m1");
assertTrue(cf.modules().size() == 1);
ResolvedModule m1 = cf.findModule("m1").get();
assertTrue(m1.reads().size() == 0);
*** 543,564 ****
* m1 requires static m2
* m2
* resolve m1
*/
public void testRequiresStatic2() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
.requires(Set.of(Requires.Modifier.STATIC), "m2")
.build();
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1, descriptor2);
! Configuration cf = resolveRequires(finder, "m1");
assertTrue(cf.modules().size() == 1);
ResolvedModule m1 = cf.findModule("m1").get();
assertTrue(m1.reads().size() == 0);
--- 528,547 ----
* m1 requires static m2
* m2
* resolve m1
*/
public void testRequiresStatic2() {
! ModuleDescriptor descriptor1 = newBuilder("m1")
.requires(Set.of(Requires.Modifier.STATIC), "m2")
.build();
! ModuleDescriptor descriptor2 = newBuilder("m2")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1, descriptor2);
! Configuration cf = resolve(finder, "m1");
assertTrue(cf.modules().size() == 1);
ResolvedModule m1 = cf.findModule("m1").get();
assertTrue(m1.reads().size() == 0);
*** 570,591 ****
* m1 requires static m2
* m2
* resolve m1, m2
*/
public void testRequiresStatic3() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
.requires(Set.of(Requires.Modifier.STATIC), "m2")
.build();
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1, descriptor2);
! Configuration cf = resolveRequires(finder, "m1", "m2");
assertTrue(cf.modules().size() == 2);
ResolvedModule m1 = cf.findModule("m1").get();
ResolvedModule m2 = cf.findModule("m2").get();
--- 553,572 ----
* m1 requires static m2
* m2
* resolve m1, m2
*/
public void testRequiresStatic3() {
! ModuleDescriptor descriptor1 = newBuilder("m1")
.requires(Set.of(Requires.Modifier.STATIC), "m2")
.build();
! ModuleDescriptor descriptor2 = newBuilder("m2")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1, descriptor2);
! Configuration cf = resolve(finder, "m1", "m2");
assertTrue(cf.modules().size() == 2);
ResolvedModule m1 = cf.findModule("m1").get();
ResolvedModule m2 = cf.findModule("m2").get();
*** 602,630 ****
* m1 requires m2, m3
* m2 requires static m2
* m3
*/
public void testRequiresStatic4() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
.requires("m2")
.requires("m3")
.build();
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2")
.requires(Set.of(Requires.Modifier.STATIC), "m3")
.build();
! ModuleDescriptor descriptor3
! = ModuleDescriptor.module("m3")
.build();
ModuleFinder finder
= ModuleUtils.finderOf(descriptor1, descriptor2, descriptor3);
! Configuration cf = resolveRequires(finder, "m1");
assertTrue(cf.modules().size() == 3);
ResolvedModule m1 = cf.findModule("m1").get();
ResolvedModule m2 = cf.findModule("m2").get();
--- 583,608 ----
* m1 requires m2, m3
* m2 requires static m2
* m3
*/
public void testRequiresStatic4() {
! ModuleDescriptor descriptor1 = newBuilder("m1")
.requires("m2")
.requires("m3")
.build();
! ModuleDescriptor descriptor2 = newBuilder("m2")
.requires(Set.of(Requires.Modifier.STATIC), "m3")
.build();
! ModuleDescriptor descriptor3 = newBuilder("m3")
.build();
ModuleFinder finder
= ModuleUtils.finderOf(descriptor1, descriptor2, descriptor3);
! Configuration cf = resolve(finder, "m1");
assertTrue(cf.modules().size() == 3);
ResolvedModule m1 = cf.findModule("m1").get();
ResolvedModule m2 = cf.findModule("m2").get();
*** 646,680 ****
* The test consists of three configurations:
* - Configuration cf1: m1, m2
* - Configuration cf2: m3 requires m1, requires static m2
*/
public void testRequiresStatic5() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
.build();
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2")
.build();
ModuleFinder finder1 = ModuleUtils.finderOf(descriptor1, descriptor2);
! Configuration cf1 = resolveRequires(finder1, "m1", "m2");
assertTrue(cf1.modules().size() == 2);
assertTrue(cf1.findModule("m1").isPresent());
assertTrue(cf1.findModule("m2").isPresent());
! ModuleDescriptor descriptor3
! = ModuleDescriptor.module("m3")
.requires("m1")
.requires(Set.of(Requires.Modifier.STATIC), "m2")
.build();
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor3);
! Configuration cf2 = resolveRequires(cf1, finder2, "m3");
assertTrue(cf2.modules().size() == 1);
assertTrue(cf2.findModule("m3").isPresent());
ResolvedModule m1 = cf1.findModule("m1").get();
--- 624,655 ----
* The test consists of three configurations:
* - Configuration cf1: m1, m2
* - Configuration cf2: m3 requires m1, requires static m2
*/
public void testRequiresStatic5() {
! ModuleDescriptor descriptor1 = newBuilder("m1")
.build();
! ModuleDescriptor descriptor2 = newBuilder("m2")
.build();
ModuleFinder finder1 = ModuleUtils.finderOf(descriptor1, descriptor2);
! Configuration cf1 = resolve(finder1, "m1", "m2");
assertTrue(cf1.modules().size() == 2);
assertTrue(cf1.findModule("m1").isPresent());
assertTrue(cf1.findModule("m2").isPresent());
! ModuleDescriptor descriptor3 = newBuilder("m3")
.requires("m1")
.requires(Set.of(Requires.Modifier.STATIC), "m2")
.build();
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor3);
! Configuration cf2 = resolve(cf1, finder2, "m3");
assertTrue(cf2.modules().size() == 1);
assertTrue(cf2.findModule("m3").isPresent());
ResolvedModule m1 = cf1.findModule("m1").get();
*** 692,721 ****
* The test consists of three configurations:
* - Configuration cf1: m1
* - Configuration cf2: m3 requires m1, requires static m2
*/
public void testRequiresStatic6() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
.build();
ModuleFinder finder1 = ModuleUtils.finderOf(descriptor1);
! Configuration cf1 = resolveRequires(finder1, "m1");
assertTrue(cf1.modules().size() == 1);
assertTrue(cf1.findModule("m1").isPresent());
! ModuleDescriptor descriptor3
! = ModuleDescriptor.module("m3")
.requires("m1")
.requires(Set.of(Requires.Modifier.STATIC), "m2")
.build();
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor3);
! Configuration cf2 = resolveRequires(cf1, finder2, "m3");
assertTrue(cf2.modules().size() == 1);
assertTrue(cf2.findModule("m3").isPresent());
ResolvedModule m1 = cf1.findModule("m1").get();
--- 667,694 ----
* The test consists of three configurations:
* - Configuration cf1: m1
* - Configuration cf2: m3 requires m1, requires static m2
*/
public void testRequiresStatic6() {
! ModuleDescriptor descriptor1 = newBuilder("m1")
.build();
ModuleFinder finder1 = ModuleUtils.finderOf(descriptor1);
! Configuration cf1 = resolve(finder1, "m1");
assertTrue(cf1.modules().size() == 1);
assertTrue(cf1.findModule("m1").isPresent());
! ModuleDescriptor descriptor3 = newBuilder("m3")
.requires("m1")
.requires(Set.of(Requires.Modifier.STATIC), "m2")
.build();
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor3);
! Configuration cf2 = resolve(cf1, finder2, "m3");
assertTrue(cf2.modules().size() == 1);
assertTrue(cf2.findModule("m3").isPresent());
ResolvedModule m1 = cf1.findModule("m1").get();
*** 733,757 ****
* m3 requires m2
*/
public void testRequiresStatic7() {
ModuleDescriptor descriptor1 = null; // not observable
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2")
.requires(Set.of(Requires.Modifier.TRANSITIVE,
Requires.Modifier.STATIC),
"m1")
.build();
! ModuleDescriptor descriptor3
! = ModuleDescriptor.module("m3")
.requires("m2")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor2, descriptor3);
! Configuration cf = resolveRequires(finder, "m3");
assertTrue(cf.modules().size() == 2);
assertTrue(cf.findModule("m2").isPresent());
assertTrue(cf.findModule("m3").isPresent());
ResolvedModule m2 = cf.findModule("m2").get();
--- 706,728 ----
* m3 requires m2
*/
public void testRequiresStatic7() {
ModuleDescriptor descriptor1 = null; // not observable
! ModuleDescriptor descriptor2 = newBuilder("m2")
.requires(Set.of(Requires.Modifier.TRANSITIVE,
Requires.Modifier.STATIC),
"m1")
.build();
! ModuleDescriptor descriptor3 = newBuilder("m3")
.requires("m2")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor2, descriptor3);
! Configuration cf = resolve(finder, "m3");
assertTrue(cf.modules().size() == 2);
assertTrue(cf.findModule("m2").isPresent());
assertTrue(cf.findModule("m3").isPresent());
ResolvedModule m2 = cf.findModule("m2").get();
*** 768,801 ****
* - Configuration cf2: m3 requires m2
*/
public void testRequiresStatic8() {
ModuleDescriptor descriptor1 = null; // not observable
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2")
.requires(Set.of(Requires.Modifier.TRANSITIVE,
Requires.Modifier.STATIC),
"m1")
.build();
ModuleFinder finder1 = ModuleUtils.finderOf(descriptor2);
! Configuration cf1 = resolveRequires(finder1, "m2");
assertTrue(cf1.modules().size() == 1);
assertTrue(cf1.findModule("m2").isPresent());
ResolvedModule m2 = cf1.findModule("m2").get();
assertTrue(m2.reads().isEmpty());
! ModuleDescriptor descriptor3
! = ModuleDescriptor.module("m3")
.requires("m2")
.build();
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor3);
! Configuration cf2 = resolveRequires(cf1, finder2, "m3");
assertTrue(cf2.modules().size() == 1);
assertTrue(cf2.findModule("m3").isPresent());
ResolvedModule m3 = cf2.findModule("m3").get();
assertTrue(m3.reads().size() == 1);
--- 739,770 ----
* - Configuration cf2: m3 requires m2
*/
public void testRequiresStatic8() {
ModuleDescriptor descriptor1 = null; // not observable
! ModuleDescriptor descriptor2 = newBuilder("m2")
.requires(Set.of(Requires.Modifier.TRANSITIVE,
Requires.Modifier.STATIC),
"m1")
.build();
ModuleFinder finder1 = ModuleUtils.finderOf(descriptor2);
! Configuration cf1 = resolve(finder1, "m2");
assertTrue(cf1.modules().size() == 1);
assertTrue(cf1.findModule("m2").isPresent());
ResolvedModule m2 = cf1.findModule("m2").get();
assertTrue(m2.reads().isEmpty());
! ModuleDescriptor descriptor3 = newBuilder("m3")
.requires("m2")
.build();
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor3);
! Configuration cf2 = resolve(cf1, finder2, "m3");
assertTrue(cf2.modules().size() == 1);
assertTrue(cf2.findModule("m3").isPresent());
ResolvedModule m3 = cf2.findModule("m3").get();
assertTrue(m3.reads().size() == 1);
*** 808,833 ****
* m1 uses p.S
* m2 provides p.S
*/
public void testServiceBinding1() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
.exports("p")
.uses("p.S")
.build();
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2")
.requires("m1")
! .contains("q")
! .provides("p.S", "q.T")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1, descriptor2);
! Configuration cf = resolveRequiresAndUses(finder, "m1");
assertTrue(cf.modules().size() == 2);
assertTrue(cf.findModule("m1").isPresent());
assertTrue(cf.findModule("m2").isPresent());
assertTrue(cf.parents().size() == 1);
--- 777,799 ----
* m1 uses p.S
* m2 provides p.S
*/
public void testServiceBinding1() {
! ModuleDescriptor descriptor1 = newBuilder("m1")
.exports("p")
.uses("p.S")
.build();
! ModuleDescriptor descriptor2 = newBuilder("m2")
.requires("m1")
! .provides("p.S", List.of("q.T"))
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1, descriptor2);
! Configuration cf = resolveAndBind(finder, "m1");
assertTrue(cf.modules().size() == 2);
assertTrue(cf.findModule("m1").isPresent());
assertTrue(cf.findModule("m2").isPresent());
assertTrue(cf.parents().size() == 1);
*** 851,885 ****
* m2 provides p.S1, m2 uses p.S2
* m3 provides p.S2
*/
public void testServiceBinding2() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
.exports("p")
.uses("p.S1")
.build();
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2")
.requires("m1")
.uses("p.S2")
! .contains("q")
! .provides("p.S1", "q.Service1Impl")
.build();
! ModuleDescriptor descriptor3
! = ModuleDescriptor.module("m3")
.requires("m1")
! .contains("q")
! .provides("p.S2", "q.Service2Impl")
.build();
ModuleFinder finder
= ModuleUtils.finderOf(descriptor1, descriptor2, descriptor3);
! Configuration cf = resolveRequiresAndUses(finder, "m1");
assertTrue(cf.modules().size() == 3);
assertTrue(cf.findModule("m1").isPresent());
assertTrue(cf.findModule("m2").isPresent());
assertTrue(cf.findModule("m3").isPresent());
--- 817,846 ----
* m2 provides p.S1, m2 uses p.S2
* m3 provides p.S2
*/
public void testServiceBinding2() {
! ModuleDescriptor descriptor1 = newBuilder("m1")
.exports("p")
.uses("p.S1")
.build();
! ModuleDescriptor descriptor2 = newBuilder("m2")
.requires("m1")
.uses("p.S2")
! .provides("p.S1", List.of("q.Service1Impl"))
.build();
! ModuleDescriptor descriptor3 = newBuilder("m3")
.requires("m1")
! .provides("p.S2", List.of("q.Service2Impl"))
.build();
ModuleFinder finder
= ModuleUtils.finderOf(descriptor1, descriptor2, descriptor3);
! Configuration cf = resolveAndBind(finder, "m1");
assertTrue(cf.modules().size() == 3);
assertTrue(cf.findModule("m1").isPresent());
assertTrue(cf.findModule("m2").isPresent());
assertTrue(cf.findModule("m3").isPresent());
*** 910,942 ****
* - Configuration cf1: m1 uses p.S
* - Configuration cf2: m2 provides p.S
*/
public void testServiceBindingWithConfigurations1() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
.exports("p")
.uses("p.S")
.build();
ModuleFinder finder1 = ModuleUtils.finderOf(descriptor1);
! Configuration cf1 = resolveRequires(finder1, "m1");
assertTrue(cf1.modules().size() == 1);
assertTrue(cf1.findModule("m1").isPresent());
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2")
.requires("m1")
! .contains("q")
! .provides("p.S", "q.T")
.build();
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor2);
! Configuration cf2 = resolveRequiresAndUses(cf1, finder2); // no roots
assertTrue(cf2.parents().size() == 1);
assertTrue(cf2.parents().get(0) == cf1);
assertTrue(cf2.modules().size() == 1);
--- 871,900 ----
* - Configuration cf1: m1 uses p.S
* - Configuration cf2: m2 provides p.S
*/
public void testServiceBindingWithConfigurations1() {
! ModuleDescriptor descriptor1 = newBuilder("m1")
.exports("p")
.uses("p.S")
.build();
ModuleFinder finder1 = ModuleUtils.finderOf(descriptor1);
! Configuration cf1 = resolve(finder1, "m1");
assertTrue(cf1.modules().size() == 1);
assertTrue(cf1.findModule("m1").isPresent());
! ModuleDescriptor descriptor2 = newBuilder("m2")
.requires("m1")
! .provides("p.S", List.of("q.T"))
.build();
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor2);
! Configuration cf2 = resolveAndBind(cf1, finder2); // no roots
assertTrue(cf2.parents().size() == 1);
assertTrue(cf2.parents().get(0) == cf1);
assertTrue(cf2.modules().size() == 1);
*** 959,1009 ****
* - Configuration cf2: m3 provides p.S
* m4 provides p.S
*/
public void testServiceBindingWithConfigurations2() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
.exports("p")
.uses("p.S")
! .contains("p1")
! .provides("p.S", "p1.ServiceImpl")
.build();
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2")
.requires("m1")
! .contains("p2")
! .provides("p.S", "p2.ServiceImpl")
.build();
ModuleFinder finder1 = ModuleUtils.finderOf(descriptor1, descriptor2);
! Configuration cf1 = resolveRequiresAndUses(finder1, "m1");
assertTrue(cf1.modules().size() == 2);
assertTrue(cf1.findModule("m1").isPresent());
assertTrue(cf1.findModule("m2").isPresent());
! ModuleDescriptor descriptor3
! = ModuleDescriptor.module("m3")
.requires("m1")
! .contains("p3")
! .provides("p.S", "p3.ServiceImpl")
.build();
! ModuleDescriptor descriptor4
! = ModuleDescriptor.module("m4")
.requires("m1")
! .contains("p4")
! .provides("p.S", "p4.ServiceImpl")
.build();
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor3, descriptor4);
! Configuration cf2 = resolveRequiresAndUses(cf1, finder2); // no roots
assertTrue(cf2.parents().size() == 1);
assertTrue(cf2.parents().get(0) == cf1);
assertTrue(cf2.modules().size() == 2);
--- 917,959 ----
* - Configuration cf2: m3 provides p.S
* m4 provides p.S
*/
public void testServiceBindingWithConfigurations2() {
! ModuleDescriptor descriptor1 = newBuilder("m1")
.exports("p")
.uses("p.S")
! .provides("p.S", List.of("p1.ServiceImpl"))
.build();
! ModuleDescriptor descriptor2 = newBuilder("m2")
.requires("m1")
! .provides("p.S", List.of("p2.ServiceImpl"))
.build();
ModuleFinder finder1 = ModuleUtils.finderOf(descriptor1, descriptor2);
! Configuration cf1 = resolveAndBind(finder1, "m1");
assertTrue(cf1.modules().size() == 2);
assertTrue(cf1.findModule("m1").isPresent());
assertTrue(cf1.findModule("m2").isPresent());
! ModuleDescriptor descriptor3 = newBuilder("m3")
.requires("m1")
! .provides("p.S", List.of("p3.ServiceImpl"))
.build();
! ModuleDescriptor descriptor4 = newBuilder("m4")
.requires("m1")
! .provides("p.S", List.of("p4.ServiceImpl"))
.build();
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor3, descriptor4);
! Configuration cf2 = resolveAndBind(cf1, finder2); // no roots
assertTrue(cf2.parents().size() == 1);
assertTrue(cf2.parents().get(0) == cf1);
assertTrue(cf2.modules().size() == 2);
*** 1035,1090 ****
* Test configuration cf2: m1 uses p.S, p@2.0 provides p.S
* Test configuration cf2: m1 uses p.S
*/
public void testServiceBindingWithConfigurations3() {
! ModuleDescriptor service
! = ModuleDescriptor.module("s")
.exports("p")
.build();
! ModuleDescriptor provider_v1
! = ModuleDescriptor.module("p")
.version("1.0")
.requires("s")
! .contains("q")
! .provides("p.S", "q.T")
.build();
ModuleFinder finder1 = ModuleUtils.finderOf(service, provider_v1);
! Configuration cf1 = resolveRequires(finder1, "p");
assertTrue(cf1.modules().size() == 2);
assertTrue(cf1.findModule("s").isPresent());
assertTrue(cf1.findModule("p").isPresent());
// p@1.0 in cf1
ResolvedModule p = cf1.findModule("p").get();
assertEquals(p.reference().descriptor(), provider_v1);
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
.requires("s")
.uses("p.S")
.build();
! ModuleDescriptor provider_v2
! = ModuleDescriptor.module("p")
.version("2.0")
.requires("s")
! .contains("q")
! .provides("p.S", "q.T")
.build();
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor1, provider_v2);
// finder2 is the before ModuleFinder and so p@2.0 should be located
! Configuration cf2 = resolveRequiresAndUses(cf1, finder2, "m1");
assertTrue(cf2.parents().size() == 1);
assertTrue(cf2.parents().get(0) == cf1);
assertTrue(cf2.modules().size() == 2);
--- 985,1034 ----
* Test configuration cf2: m1 uses p.S, p@2.0 provides p.S
* Test configuration cf2: m1 uses p.S
*/
public void testServiceBindingWithConfigurations3() {
! ModuleDescriptor service = newBuilder("s")
.exports("p")
.build();
! ModuleDescriptor provider_v1 = newBuilder("p")
.version("1.0")
.requires("s")
! .provides("p.S", List.of("q.T"))
.build();
ModuleFinder finder1 = ModuleUtils.finderOf(service, provider_v1);
! Configuration cf1 = resolve(finder1, "p");
assertTrue(cf1.modules().size() == 2);
assertTrue(cf1.findModule("s").isPresent());
assertTrue(cf1.findModule("p").isPresent());
// p@1.0 in cf1
ResolvedModule p = cf1.findModule("p").get();
assertEquals(p.reference().descriptor(), provider_v1);
! ModuleDescriptor descriptor1 = newBuilder("m1")
.requires("s")
.uses("p.S")
.build();
! ModuleDescriptor provider_v2 = newBuilder("p")
.version("2.0")
.requires("s")
! .provides("p.S", List.of("q.T"))
.build();
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor1, provider_v2);
// finder2 is the before ModuleFinder and so p@2.0 should be located
! Configuration cf2 = resolveAndBind(cf1, finder2, "m1");
assertTrue(cf2.parents().size() == 1);
assertTrue(cf2.parents().get(0) == cf1);
assertTrue(cf2.modules().size() == 2);
*** 1095,1105 ****
// finder2 is the after ModuleFinder and so p@2.0 should not be located
// as module p is in parent configuration.
! cf2 = resolveRequiresAndUses(cf1, ModuleFinder.of(), finder2, "m1");
assertTrue(cf2.parents().size() == 1);
assertTrue(cf2.parents().get(0) == cf1);
assertTrue(cf2.modules().size() == 1);
--- 1039,1049 ----
// finder2 is the after ModuleFinder and so p@2.0 should not be located
// as module p is in parent configuration.
! cf2 = resolveAndBind(cf1, ModuleFinder.of(), finder2, "m1");
assertTrue(cf2.parents().size() == 1);
assertTrue(cf2.parents().get(0) == cf1);
assertTrue(cf2.modules().size() == 1);
*** 1115,1143 ****
*
* Module m2 can be found by both the before and after finders.
*/
public void testWithTwoFinders1() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
.requires("m2")
.build();
! ModuleDescriptor descriptor2_v1
! = ModuleDescriptor.module("m2")
.version("1.0")
.build();
! ModuleDescriptor descriptor2_v2
! = ModuleDescriptor.module("m2")
.version("2.0")
.build();
ModuleFinder finder1 = ModuleUtils.finderOf(descriptor2_v1);
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor1, descriptor2_v2);
! Configuration cf = resolveRequires(finder1, finder2, "m1");
assertTrue(cf.modules().size() == 2);
assertTrue(cf.findModule("m1").isPresent());
assertTrue(cf.findModule("m2").isPresent());
--- 1059,1084 ----
*
* Module m2 can be found by both the before and after finders.
*/
public void testWithTwoFinders1() {
! ModuleDescriptor descriptor1 = newBuilder("m1")
.requires("m2")
.build();
! ModuleDescriptor descriptor2_v1 = newBuilder("m2")
.version("1.0")
.build();
! ModuleDescriptor descriptor2_v2 = newBuilder("m2")
.version("2.0")
.build();
ModuleFinder finder1 = ModuleUtils.finderOf(descriptor2_v1);
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor1, descriptor2_v2);
! Configuration cf = resolve(finder1, finder2, "m1");
assertTrue(cf.modules().size() == 2);
assertTrue(cf.findModule("m1").isPresent());
assertTrue(cf.findModule("m2").isPresent());
*** 1155,1188 ****
* The before and after ModuleFinders both locate a service provider module
* named "m2" that provide implementations of the same service type.
*/
public void testWithTwoFinders2() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
.exports("p")
.uses("p.S")
.build();
! ModuleDescriptor descriptor2_v1
! = ModuleDescriptor.module("m2")
.requires("m1")
! .contains("q")
! .provides("p.S", "q.T")
.build();
! ModuleDescriptor descriptor2_v2
! = ModuleDescriptor.module("m2")
.requires("m1")
! .contains("q")
! .provides("p.S", "q.T")
.build();
ModuleFinder finder1 = ModuleUtils.finderOf(descriptor1, descriptor2_v1);
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor2_v2);
! Configuration cf = resolveRequiresAndUses(finder1, finder2, "m1");
assertTrue(cf.modules().size() == 2);
assertTrue(cf.findModule("m1").isPresent());
assertTrue(cf.findModule("m2").isPresent());
--- 1096,1124 ----
* The before and after ModuleFinders both locate a service provider module
* named "m2" that provide implementations of the same service type.
*/
public void testWithTwoFinders2() {
! ModuleDescriptor descriptor1 = newBuilder("m1")
.exports("p")
.uses("p.S")
.build();
! ModuleDescriptor descriptor2_v1 = newBuilder("m2")
.requires("m1")
! .provides("p.S", List.of("q.T"))
.build();
! ModuleDescriptor descriptor2_v2 = newBuilder("m2")
.requires("m1")
! .provides("p.S", List.of("q.T"))
.build();
ModuleFinder finder1 = ModuleUtils.finderOf(descriptor1, descriptor2_v1);
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor2_v2);
! Configuration cf = resolveAndBind(finder1, finder2, "m1");
assertTrue(cf.modules().size() == 2);
assertTrue(cf.findModule("m1").isPresent());
assertTrue(cf.findModule("m2").isPresent());
*** 1198,1219 ****
* Basic test for resolving a module that is located in the parent
* configuration.
*/
public void testResolvedInParent1() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1);
! Configuration cf1 = resolveRequires(finder, "m1");
assertTrue(cf1.modules().size() == 1);
assertTrue(cf1.findModule("m1").isPresent());
! Configuration cf2 = resolveRequires(cf1, finder, "m1");
assertTrue(cf2.modules().size() == 1);
}
--- 1134,1154 ----
* Basic test for resolving a module that is located in the parent
* configuration.
*/
public void testResolvedInParent1() {
! ModuleDescriptor descriptor1 = newBuilder("m1")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1);
! Configuration cf1 = resolve(finder, "m1");
assertTrue(cf1.modules().size() == 1);
assertTrue(cf1.findModule("m1").isPresent());
! Configuration cf2 = resolve(cf1, finder, "m1");
assertTrue(cf2.modules().size() == 1);
}
*** 1221,1250 ****
* Basic test for resolving a module that has a dependency on a module
* in the parent configuration.
*/
public void testResolvedInParent2() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
! .build();
ModuleFinder finder1 = ModuleUtils.finderOf(descriptor1);
! Configuration cf1 = resolveRequires(finder1, "m1");
assertTrue(cf1.modules().size() == 1);
assertTrue(cf1.findModule("m1").isPresent());
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2")
.requires("m1")
.build();
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor2);
! Configuration cf2 = resolveRequires(cf1, ModuleFinder.of(), finder2, "m2");
assertTrue(cf2.modules().size() == 1);
assertTrue(cf2.findModule("m2").isPresent());
ResolvedModule m1 = cf2.findModule("m1").get(); // find in parent
--- 1156,1182 ----
* Basic test for resolving a module that has a dependency on a module
* in the parent configuration.
*/
public void testResolvedInParent2() {
! ModuleDescriptor descriptor1 = newBuilder("m1").build();
ModuleFinder finder1 = ModuleUtils.finderOf(descriptor1);
! Configuration cf1 = resolve(finder1, "m1");
assertTrue(cf1.modules().size() == 1);
assertTrue(cf1.findModule("m1").isPresent());
! ModuleDescriptor descriptor2 = newBuilder("m2")
.requires("m1")
.build();
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor2);
! Configuration cf2 = resolve(cf1, ModuleFinder.of(), finder2, "m2");
assertTrue(cf2.modules().size() == 1);
assertTrue(cf2.findModule("m2").isPresent());
ResolvedModule m1 = cf2.findModule("m1").get(); // find in parent
*** 1266,1298 ****
* - Configuration cf3(cf1,cf2): m3 requires m1, m2
*/
public void testResolvedInMultipleParents1() {
// Configuration cf1: m1
! ModuleDescriptor descriptor1 = ModuleDescriptor.module("m1").build();
! Configuration cf1 = resolveRequires(ModuleUtils.finderOf(descriptor1), "m1");
assertEquals(cf1.parents(), List.of(Configuration.empty()));
assertTrue(cf1.findModule("m1").isPresent());
ResolvedModule m1 = cf1.findModule("m1").get();
assertTrue(m1.configuration() == cf1);
// Configuration cf2: m2
! ModuleDescriptor descriptor2 = ModuleDescriptor.module("m2").build();
! Configuration cf2 = resolveRequires(ModuleUtils.finderOf(descriptor2), "m2");
assertEquals(cf2.parents(), List.of(Configuration.empty()));
assertTrue(cf2.findModule("m2").isPresent());
ResolvedModule m2 = cf2.findModule("m2").get();
assertTrue(m2.configuration() == cf2);
// Configuration cf3(cf1,cf2): m3 requires m1 and m2
! ModuleDescriptor descriptor3
! = ModuleDescriptor.module("m3")
.requires("m1")
.requires("m2")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor3);
! Configuration cf3 = Configuration.resolveRequires(
finder,
List.of(cf1, cf2), // parents
ModuleFinder.of(),
Set.of("m3"));
assertEquals(cf3.parents(), List.of(cf1, cf2));
--- 1198,1229 ----
* - Configuration cf3(cf1,cf2): m3 requires m1, m2
*/
public void testResolvedInMultipleParents1() {
// Configuration cf1: m1
! ModuleDescriptor descriptor1 = newBuilder("m1").build();
! Configuration cf1 = resolve(ModuleUtils.finderOf(descriptor1), "m1");
assertEquals(cf1.parents(), List.of(Configuration.empty()));
assertTrue(cf1.findModule("m1").isPresent());
ResolvedModule m1 = cf1.findModule("m1").get();
assertTrue(m1.configuration() == cf1);
// Configuration cf2: m2
! ModuleDescriptor descriptor2 = newBuilder("m2").build();
! Configuration cf2 = resolve(ModuleUtils.finderOf(descriptor2), "m2");
assertEquals(cf2.parents(), List.of(Configuration.empty()));
assertTrue(cf2.findModule("m2").isPresent());
ResolvedModule m2 = cf2.findModule("m2").get();
assertTrue(m2.configuration() == cf2);
// Configuration cf3(cf1,cf2): m3 requires m1 and m2
! ModuleDescriptor descriptor3 = newBuilder("m3")
.requires("m1")
.requires("m2")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor3);
! Configuration cf3 = Configuration.resolve(
finder,
List.of(cf1, cf2), // parents
ModuleFinder.of(),
Set.of("m3"));
assertEquals(cf3.parents(), List.of(cf1, cf2));
*** 1317,1371 ****
* - Configuration cf3(cf3): m3 requires m1
* - Configuration cf4(cf2,cf3): m4 requires m1,m2,m3
*/
public void testResolvedInMultipleParents2() {
// Configuration cf1: m1
! ModuleDescriptor descriptor1 = ModuleDescriptor.module("m1").build();
! Configuration cf1 = resolveRequires(ModuleUtils.finderOf(descriptor1), "m1");
assertEquals(cf1.parents(), List.of(Configuration.empty()));
assertTrue(cf1.findModule("m1").isPresent());
ResolvedModule m1 = cf1.findModule("m1").get();
assertTrue(m1.configuration() == cf1);
// Configuration cf2(cf1): m2 requires m1
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2")
.requires("m1")
.build();
! Configuration cf2 = Configuration.resolveRequires(
ModuleUtils.finderOf(descriptor2),
List.of(cf1), // parents
ModuleFinder.of(),
Set.of("m2"));
assertEquals(cf2.parents(), List.of(cf1));
assertTrue(cf2.findModule("m2").isPresent());
ResolvedModule m2 = cf2.findModule("m2").get();
assertTrue(m2.configuration() == cf2);
// Configuration cf3(cf1): m3 requires m1
! ModuleDescriptor descriptor3
! = ModuleDescriptor.module("m3")
.requires("m1")
.build();
! Configuration cf3 = Configuration.resolveRequires(
ModuleUtils.finderOf(descriptor3),
List.of(cf1), // parents
ModuleFinder.of(),
Set.of("m3"));
assertEquals(cf3.parents(), List.of(cf1));
assertTrue(cf3.findModule("m3").isPresent());
ResolvedModule m3 = cf3.findModule("m3").get();
assertTrue(m3.configuration() == cf3);
// Configuration cf4(cf2,cf3): m4 requires m1,m2,m3
! ModuleDescriptor descriptor4
! = ModuleDescriptor.module("m4")
.requires("m1")
.requires("m2")
.requires("m3")
.build();
! Configuration cf4 = Configuration.resolveRequires(
ModuleUtils.finderOf(descriptor4),
List.of(cf2, cf3), // parents
ModuleFinder.of(),
Set.of("m4"));
assertEquals(cf4.parents(), List.of(cf2, cf3));
--- 1248,1299 ----
* - Configuration cf3(cf3): m3 requires m1
* - Configuration cf4(cf2,cf3): m4 requires m1,m2,m3
*/
public void testResolvedInMultipleParents2() {
// Configuration cf1: m1
! ModuleDescriptor descriptor1 = newBuilder("m1").build();
! Configuration cf1 = resolve(ModuleUtils.finderOf(descriptor1), "m1");
assertEquals(cf1.parents(), List.of(Configuration.empty()));
assertTrue(cf1.findModule("m1").isPresent());
ResolvedModule m1 = cf1.findModule("m1").get();
assertTrue(m1.configuration() == cf1);
// Configuration cf2(cf1): m2 requires m1
! ModuleDescriptor descriptor2 = newBuilder("m2")
.requires("m1")
.build();
! Configuration cf2 = Configuration.resolve(
ModuleUtils.finderOf(descriptor2),
List.of(cf1), // parents
ModuleFinder.of(),
Set.of("m2"));
assertEquals(cf2.parents(), List.of(cf1));
assertTrue(cf2.findModule("m2").isPresent());
ResolvedModule m2 = cf2.findModule("m2").get();
assertTrue(m2.configuration() == cf2);
// Configuration cf3(cf1): m3 requires m1
! ModuleDescriptor descriptor3 = newBuilder("m3")
.requires("m1")
.build();
! Configuration cf3 = Configuration.resolve(
ModuleUtils.finderOf(descriptor3),
List.of(cf1), // parents
ModuleFinder.of(),
Set.of("m3"));
assertEquals(cf3.parents(), List.of(cf1));
assertTrue(cf3.findModule("m3").isPresent());
ResolvedModule m3 = cf3.findModule("m3").get();
assertTrue(m3.configuration() == cf3);
// Configuration cf4(cf2,cf3): m4 requires m1,m2,m3
! ModuleDescriptor descriptor4 = newBuilder("m4")
.requires("m1")
.requires("m2")
.requires("m3")
.build();
! Configuration cf4 = Configuration.resolve(
ModuleUtils.finderOf(descriptor4),
List.of(cf2, cf3), // parents
ModuleFinder.of(),
Set.of("m4"));
assertEquals(cf4.parents(), List.of(cf2, cf3));
*** 1393,1431 ****
*/
public void testResolvedInMultipleParents3() {
ModuleDescriptor descriptor1, descriptor2, descriptor3;
// Configuration cf1: m1@1
! descriptor1 = ModuleDescriptor.module("m1").version("1").build();
! Configuration cf1 = resolveRequires(ModuleUtils.finderOf(descriptor1), "m1");
assertEquals(cf1.parents(), List.of(Configuration.empty()));
// Configuration cf2: m1@2, m2@2
! descriptor1 = ModuleDescriptor.module("m1").version("2").build();
! descriptor2 = ModuleDescriptor.module("m2").version("2").build();
! Configuration cf2 = resolveRequires(
ModuleUtils.finderOf(descriptor1, descriptor2),
"m1", "m2");
assertEquals(cf2.parents(), List.of(Configuration.empty()));
// Configuration cf3: m1@3, m2@3, m3@3
! descriptor1 = ModuleDescriptor.module("m1").version("3").build();
! descriptor2 = ModuleDescriptor.module("m2").version("3").build();
! descriptor3 = ModuleDescriptor.module("m3").version("3").build();
! Configuration cf3 = resolveRequires(
ModuleUtils.finderOf(descriptor1, descriptor2, descriptor3),
"m1", "m2", "m3");
assertEquals(cf3.parents(), List.of(Configuration.empty()));
// Configuration cf4(cf1,cf2,cf3): m4 requires m1,m2,m3
! ModuleDescriptor descriptor4
! = ModuleDescriptor.module("m4")
.requires("m1")
.requires("m2")
.requires("m3")
.build();
! Configuration cf4 = Configuration.resolveRequires(
ModuleUtils.finderOf(descriptor4),
List.of(cf1, cf2, cf3), // parents
ModuleFinder.of(),
Set.of("m4"));
assertEquals(cf4.parents(), List.of(cf1, cf2, cf3));
--- 1321,1358 ----
*/
public void testResolvedInMultipleParents3() {
ModuleDescriptor descriptor1, descriptor2, descriptor3;
// Configuration cf1: m1@1
! descriptor1 = newBuilder("m1").version("1").build();
! Configuration cf1 = resolve(ModuleUtils.finderOf(descriptor1), "m1");
assertEquals(cf1.parents(), List.of(Configuration.empty()));
// Configuration cf2: m1@2, m2@2
! descriptor1 = newBuilder("m1").version("2").build();
! descriptor2 = newBuilder("m2").version("2").build();
! Configuration cf2 = resolve(
ModuleUtils.finderOf(descriptor1, descriptor2),
"m1", "m2");
assertEquals(cf2.parents(), List.of(Configuration.empty()));
// Configuration cf3: m1@3, m2@3, m3@3
! descriptor1 = newBuilder("m1").version("3").build();
! descriptor2 = newBuilder("m2").version("3").build();
! descriptor3 = newBuilder("m3").version("3").build();
! Configuration cf3 = resolve(
ModuleUtils.finderOf(descriptor1, descriptor2, descriptor3),
"m1", "m2", "m3");
assertEquals(cf3.parents(), List.of(Configuration.empty()));
// Configuration cf4(cf1,cf2,cf3): m4 requires m1,m2,m3
! ModuleDescriptor descriptor4 = newBuilder("m4")
.requires("m1")
.requires("m2")
.requires("m3")
.build();
! Configuration cf4 = Configuration.resolve(
ModuleUtils.finderOf(descriptor4),
List.of(cf1, cf2, cf3), // parents
ModuleFinder.of(),
Set.of("m4"));
assertEquals(cf4.parents(), List.of(cf1, cf2, cf3));
*** 1468,1515 ****
/**
* Basic test of using the beforeFinder to override a module in a parent
* configuration.
*/
public void testOverriding1() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
! .build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1);
! Configuration cf1 = resolveRequires(finder, "m1");
assertTrue(cf1.modules().size() == 1);
assertTrue(cf1.findModule("m1").isPresent());
! Configuration cf2 = resolveRequires(cf1, finder, "m1");
assertTrue(cf2.modules().size() == 1);
assertTrue(cf2.findModule("m1").isPresent());
}
/**
* Basic test of using the beforeFinder to override a module in a parent
* configuration.
*/
public void testOverriding2() {
! ModuleDescriptor descriptor1 = ModuleDescriptor.module("m1").build();
! Configuration cf1 = resolveRequires(ModuleUtils.finderOf(descriptor1), "m1");
assertTrue(cf1.modules().size() == 1);
assertTrue(cf1.findModule("m1").isPresent());
! ModuleDescriptor descriptor2 = ModuleDescriptor.module("m2").build();
! Configuration cf2 = resolveRequires(ModuleUtils.finderOf(descriptor2), "m2");
assertTrue(cf2.modules().size() == 1);
assertTrue(cf2.findModule("m2").isPresent());
! ModuleDescriptor descriptor3 = ModuleDescriptor.module("m3").build();
! Configuration cf3 = resolveRequires(ModuleUtils.finderOf(descriptor3), "m3");
assertTrue(cf3.modules().size() == 1);
assertTrue(cf3.findModule("m3").isPresent());
// override m2, m1 and m3 should be found in parent configurations
ModuleFinder finder = ModuleUtils.finderOf(descriptor2);
! Configuration cf4 = Configuration.resolveRequires(
finder,
List.of(cf1, cf2, cf3),
ModuleFinder.of(),
Set.of("m1", "m2", "m3"));
assertTrue(cf4.modules().size() == 1);
--- 1395,1440 ----
/**
* Basic test of using the beforeFinder to override a module in a parent
* configuration.
*/
public void testOverriding1() {
! ModuleDescriptor descriptor1 = newBuilder("m1").build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1);
! Configuration cf1 = resolve(finder, "m1");
assertTrue(cf1.modules().size() == 1);
assertTrue(cf1.findModule("m1").isPresent());
! Configuration cf2 = resolve(cf1, finder, "m1");
assertTrue(cf2.modules().size() == 1);
assertTrue(cf2.findModule("m1").isPresent());
}
/**
* Basic test of using the beforeFinder to override a module in a parent
* configuration.
*/
public void testOverriding2() {
! ModuleDescriptor descriptor1 = newBuilder("m1").build();
! Configuration cf1 = resolve(ModuleUtils.finderOf(descriptor1), "m1");
assertTrue(cf1.modules().size() == 1);
assertTrue(cf1.findModule("m1").isPresent());
! ModuleDescriptor descriptor2 = newBuilder("m2").build();
! Configuration cf2 = resolve(ModuleUtils.finderOf(descriptor2), "m2");
assertTrue(cf2.modules().size() == 1);
assertTrue(cf2.findModule("m2").isPresent());
! ModuleDescriptor descriptor3 = newBuilder("m3").build();
! Configuration cf3 = resolve(ModuleUtils.finderOf(descriptor3), "m3");
assertTrue(cf3.modules().size() == 1);
assertTrue(cf3.findModule("m3").isPresent());
// override m2, m1 and m3 should be found in parent configurations
ModuleFinder finder = ModuleUtils.finderOf(descriptor2);
! Configuration cf4 = Configuration.resolve(
finder,
List.of(cf1, cf2, cf3),
ModuleFinder.of(),
Set.of("m1", "m2", "m3"));
assertTrue(cf4.modules().size() == 1);
*** 1528,1564 ****
* - Configuration cf1: m1, m2 requires transitive m1
* - Configuration cf2: m1, m3 requires m2
*/
public void testOverriding3() {
! 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");
assertTrue(cf1.modules().size() == 2);
assertTrue(cf1.findModule("m1").isPresent());
assertTrue(cf1.findModule("m2").isPresent());
// cf2: m3 requires m2, m1
! ModuleDescriptor descriptor3
! = ModuleDescriptor.module("m3")
.requires("m2")
.build();
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor1, descriptor3);
! Configuration cf2 = resolveRequires(cf1, finder2, "m1", "m3");
assertTrue(cf2.parents().size() == 1);
assertTrue(cf2.parents().get(0) == cf1);
assertTrue(cf2.modules().size() == 2);
--- 1453,1486 ----
* - Configuration cf1: m1, m2 requires transitive m1
* - Configuration cf2: m1, m3 requires m2
*/
public void testOverriding3() {
! 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");
assertTrue(cf1.modules().size() == 2);
assertTrue(cf1.findModule("m1").isPresent());
assertTrue(cf1.findModule("m2").isPresent());
// cf2: m3 requires m2, m1
! ModuleDescriptor descriptor3 = newBuilder("m3")
.requires("m2")
.build();
ModuleFinder finder2 = ModuleUtils.finderOf(descriptor1, descriptor3);
! Configuration cf2 = resolve(cf1, finder2, "m1", "m3");
assertTrue(cf2.parents().size() == 1);
assertTrue(cf2.parents().get(0) == cf1);
assertTrue(cf2.modules().size() == 2);
*** 1583,1774 ****
/**
* Root module not found
*/
! @Test(expectedExceptions = { ResolutionException.class })
public void testRootNotFound() {
! resolveRequires(ModuleFinder.of(), "m1");
}
/**
* Direct dependency not found
*/
! @Test(expectedExceptions = { ResolutionException.class })
public void testDirectDependencyNotFound() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1").requires("m2").build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1);
! resolveRequires(finder, "m1");
}
/**
* Transitive dependency not found
*/
! @Test(expectedExceptions = { ResolutionException.class })
public void testTransitiveDependencyNotFound() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1").requires("m2").build();
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2").requires("m3").build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1, descriptor2);
! resolveRequires(finder, "m1");
}
/**
* Service provider dependency not found
*/
! @Test(expectedExceptions = { ResolutionException.class })
public void testServiceProviderDependencyNotFound() {
// service provider dependency (on m3) not found
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
.exports("p")
.uses("p.S")
.build();
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2")
.requires("m1")
.requires("m3")
! .contains("q")
! .provides("p.S", "q.T")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1, descriptor2);
// should throw ResolutionException because m3 is not found
! Configuration cf = resolveRequiresAndUses(finder, "m1");
}
/**
* Simple cycle.
*/
@Test(expectedExceptions = { ResolutionException.class })
public void testSimpleCycle() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1").requires("m2").build();
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2").requires("m3").build();
! ModuleDescriptor descriptor3
! = ModuleDescriptor.module("m3").requires("m1").build();
ModuleFinder finder
= ModuleUtils.finderOf(descriptor1, descriptor2, descriptor3);
! resolveRequires(finder, "m1");
}
/**
* Basic test for detecting cycles involving a service provider module
*/
@Test(expectedExceptions = { ResolutionException.class })
public void testCycleInProvider() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
.exports("p")
.uses("p.S")
.build();
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2")
.requires("m1")
.requires("m3")
! .contains("q")
! .provides("p.S", "q.T")
.build();
! ModuleDescriptor descriptor3
! = ModuleDescriptor.module("m3")
.requires("m2")
.build();
ModuleFinder finder
= ModuleUtils.finderOf(descriptor1, descriptor2, descriptor3);
// should throw ResolutionException because of the m2 <--> m3 cycle
! resolveRequiresAndUses(finder, "m1");
}
/**
* Test two modules exporting package p to a module that reads both.
*/
@Test(expectedExceptions = { ResolutionException.class })
public void testPackageSuppliedByTwoOthers() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
.requires("m2")
.requires("m3")
.build();
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2")
.exports("p")
.build();
! ModuleDescriptor descriptor3
! = ModuleDescriptor.module("m3")
.exports("p", Set.of("m1"))
.build();
ModuleFinder finder
= ModuleUtils.finderOf(descriptor1, descriptor2, descriptor3);
// m2 and m3 export package p to module m1
! resolveRequires(finder, "m1");
}
/**
* Test the scenario where a module contains a package p and reads
* a module that exports package p.
*/
@Test(expectedExceptions = { ResolutionException.class })
public void testPackageSuppliedBySelfAndOther() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
.requires("m2")
! .contains("p")
.build();
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2")
.exports("p")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1, descriptor2);
// m1 contains package p, module m2 exports package p to m1
! resolveRequires(finder, "m1");
}
/**
* Test the scenario where a module contains a package p and reads
* a module that also contains a package p.
*/
public void testContainsPackageInSelfAndOther() {
! 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);
assertTrue(cf.findModule("m1").isPresent());
assertTrue(cf.findModule("m2").isPresent());
--- 1505,1676 ----
/**
* Root module not found
*/
! @Test(expectedExceptions = { FindException.class })
public void testRootNotFound() {
! resolve(ModuleFinder.of(), "m1");
}
/**
* Direct dependency not found
*/
! @Test(expectedExceptions = { FindException.class })
public void testDirectDependencyNotFound() {
! ModuleDescriptor descriptor1 = newBuilder("m1").requires("m2").build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1);
! resolve(finder, "m1");
}
/**
* Transitive dependency not found
*/
! @Test(expectedExceptions = { FindException.class })
public void testTransitiveDependencyNotFound() {
! ModuleDescriptor descriptor1 = newBuilder("m1").requires("m2").build();
! ModuleDescriptor descriptor2 = newBuilder("m2").requires("m3").build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1, descriptor2);
! resolve(finder, "m1");
}
/**
* Service provider dependency not found
*/
! @Test(expectedExceptions = { FindException.class })
public void testServiceProviderDependencyNotFound() {
// service provider dependency (on m3) not found
! ModuleDescriptor descriptor1 = newBuilder("m1")
.exports("p")
.uses("p.S")
.build();
! ModuleDescriptor descriptor2 = newBuilder("m2")
.requires("m1")
.requires("m3")
! .provides("p.S", List.of("q.T"))
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1, descriptor2);
// should throw ResolutionException because m3 is not found
! Configuration cf = resolveAndBind(finder, "m1");
}
/**
* Simple cycle.
*/
@Test(expectedExceptions = { ResolutionException.class })
public void testSimpleCycle() {
! ModuleDescriptor descriptor1 = newBuilder("m1").requires("m2").build();
! ModuleDescriptor descriptor2 = newBuilder("m2").requires("m3").build();
! ModuleDescriptor descriptor3 = newBuilder("m3").requires("m1").build();
ModuleFinder finder
= ModuleUtils.finderOf(descriptor1, descriptor2, descriptor3);
! resolve(finder, "m1");
}
/**
* Basic test for detecting cycles involving a service provider module
*/
@Test(expectedExceptions = { ResolutionException.class })
public void testCycleInProvider() {
! ModuleDescriptor descriptor1 = newBuilder("m1")
.exports("p")
.uses("p.S")
.build();
! ModuleDescriptor descriptor2 = newBuilder("m2")
.requires("m1")
.requires("m3")
! .provides("p.S", List.of("q.T"))
.build();
! ModuleDescriptor descriptor3 = newBuilder("m3")
.requires("m2")
.build();
ModuleFinder finder
= ModuleUtils.finderOf(descriptor1, descriptor2, descriptor3);
// should throw ResolutionException because of the m2 <--> m3 cycle
! resolveAndBind(finder, "m1");
}
/**
* Test two modules exporting package p to a module that reads both.
*/
@Test(expectedExceptions = { ResolutionException.class })
public void testPackageSuppliedByTwoOthers() {
! ModuleDescriptor descriptor1 = newBuilder("m1")
.requires("m2")
.requires("m3")
.build();
! ModuleDescriptor descriptor2 = newBuilder("m2")
.exports("p")
.build();
! ModuleDescriptor descriptor3 = newBuilder("m3")
.exports("p", Set.of("m1"))
.build();
ModuleFinder finder
= ModuleUtils.finderOf(descriptor1, descriptor2, descriptor3);
// m2 and m3 export package p to module m1
! resolve(finder, "m1");
}
/**
* Test the scenario where a module contains a package p and reads
* a module that exports package p.
*/
@Test(expectedExceptions = { ResolutionException.class })
public void testPackageSuppliedBySelfAndOther() {
! ModuleDescriptor descriptor1 = newBuilder("m1")
.requires("m2")
! .packages(Set.of("p"))
.build();
! ModuleDescriptor descriptor2 = newBuilder("m2")
.exports("p")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1, descriptor2);
// m1 contains package p, module m2 exports package p to m1
! resolve(finder, "m1");
}
/**
* Test the scenario where a module contains a package p and reads
* a module that also contains a package p.
*/
public void testContainsPackageInSelfAndOther() {
! 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);
assertTrue(cf.findModule("m1").isPresent());
assertTrue(cf.findModule("m2").isPresent());
*** 1785,1822 ****
* Test the scenario where a module that exports a package that is also
* exported by a module that it reads in a parent layer.
*/
@Test(expectedExceptions = { ResolutionException.class })
public void testExportSamePackageAsBootLayer() {
! ModuleDescriptor descriptor
! = ModuleDescriptor.module("m1")
.requires("java.base")
.exports("java.lang")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor);
Configuration bootConfiguration = Layer.boot().configuration();
// m1 contains package java.lang, java.base exports package java.lang to m1
! resolveRequires(bootConfiguration, finder, "m1");
}
/**
* Test "uses p.S" where p is contained in the same module.
*/
public void testContainsService1() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
! .contains("p")
.uses("p.S")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1);
! Configuration cf = resolveRequires(finder, "m1");
assertTrue(cf.modules().size() == 1);
assertTrue(cf.findModule("m1").isPresent());
}
--- 1687,1722 ----
* Test the scenario where a module that exports a package that is also
* exported by a module that it reads in a parent layer.
*/
@Test(expectedExceptions = { ResolutionException.class })
public void testExportSamePackageAsBootLayer() {
! ModuleDescriptor descriptor = newBuilder("m1")
.requires("java.base")
.exports("java.lang")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor);
Configuration bootConfiguration = Layer.boot().configuration();
// m1 contains package java.lang, java.base exports package java.lang to m1
! resolve(bootConfiguration, finder, "m1");
}
/**
* Test "uses p.S" where p is contained in the same module.
*/
public void testContainsService1() {
! ModuleDescriptor descriptor1 = newBuilder("m1")
! .packages(Set.of("p"))
.uses("p.S")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1);
! Configuration cf = resolve(finder, "m1");
assertTrue(cf.modules().size() == 1);
assertTrue(cf.findModule("m1").isPresent());
}
*** 1824,1865 ****
/**
* Test "uses p.S" where p is contained in a different module.
*/
@Test(expectedExceptions = { ResolutionException.class })
public void testContainsService2() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
! .contains("p")
.build();
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2")
.requires("m1")
.uses("p.S")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1, descriptor2);
// m2 does not read a module that exports p
! resolveRequires(finder, "m2");
}
/**
* Test "provides p.S" where p is contained in the same module.
*/
public void testContainsService3() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
! .contains("p")
! .contains("q")
! .provides("p.S", "q.S1")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1);
! Configuration cf = resolveRequires(finder, "m1");
assertTrue(cf.modules().size() == 1);
assertTrue(cf.findModule("m1").isPresent());
}
--- 1724,1761 ----
/**
* Test "uses p.S" where p is contained in a different module.
*/
@Test(expectedExceptions = { ResolutionException.class })
public void testContainsService2() {
! ModuleDescriptor descriptor1 = newBuilder("m1")
! .packages(Set.of("p"))
.build();
! ModuleDescriptor descriptor2 = newBuilder("m2")
.requires("m1")
.uses("p.S")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1, descriptor2);
// m2 does not read a module that exports p
! resolve(finder, "m2");
}
/**
* Test "provides p.S" where p is contained in the same module.
*/
public void testContainsService3() {
! ModuleDescriptor descriptor1 = newBuilder("m1")
! .packages(Set.of("p", "q"))
! .provides("p.S", List.of("q.S1"))
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1);
! Configuration cf = resolve(finder, "m1");
assertTrue(cf.modules().size() == 1);
assertTrue(cf.findModule("m1").isPresent());
}
*** 1867,1951 ****
/**
* Test "provides p.S" where p is contained in a different module.
*/
@Test(expectedExceptions = { ResolutionException.class })
public void testContainsService4() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
! .contains("p")
.build();
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2")
.requires("m1")
! .contains("q")
! .provides("p.S", "q.S1")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1, descriptor2);
// m2 does not read a module that exports p
! resolveRequires(finder, "m2");
}
/**
* Test "uses p.S" where p is not exported to the module.
*/
@Test(expectedExceptions = { ResolutionException.class })
public void testServiceTypePackageNotExported1() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
.uses("p.S")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1);
// m1 does not read a module that exports p
! resolveRequires(finder, "m1");
}
/**
* Test "provides p.S" where p is not exported to the module.
*/
@Test(expectedExceptions = { ResolutionException.class })
public void testServiceTypePackageNotExported2() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
! .contains("q")
! .provides("p.S", "q.T")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1);
// m1 does not read a module that exports p
! resolveRequires(finder, "m1");
! }
!
!
! /**
! * Test "provides p.S with q.T" where q.T is not local
! */
! @Test(expectedExceptions = { ResolutionException.class })
! public void testProviderPackageNotLocal() {
! ModuleDescriptor descriptor1
! = ModuleDescriptor.module("m1")
! .exports("p")
! .exports("q")
! .build();
!
! ModuleDescriptor descriptor2
! = ModuleDescriptor.module("m2")
! .requires("m1")
! .provides("p.S", "q.T")
! .build();
!
! ModuleFinder finder = ModuleUtils.finderOf(descriptor1, descriptor2);
!
! // q.T not in module m2
! resolveRequires(finder, "m2");
}
/**
* Test the empty configuration.
--- 1763,1817 ----
/**
* Test "provides p.S" where p is contained in a different module.
*/
@Test(expectedExceptions = { ResolutionException.class })
public void testContainsService4() {
! ModuleDescriptor descriptor1 = newBuilder("m1")
! .packages(Set.of("p"))
.build();
! ModuleDescriptor descriptor2 = newBuilder("m2")
.requires("m1")
! .provides("p.S", List.of("q.S1"))
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1, descriptor2);
// m2 does not read a module that exports p
! resolve(finder, "m2");
}
/**
* Test "uses p.S" where p is not exported to the module.
*/
@Test(expectedExceptions = { ResolutionException.class })
public void testServiceTypePackageNotExported1() {
! ModuleDescriptor descriptor1 = newBuilder("m1")
.uses("p.S")
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1);
// m1 does not read a module that exports p
! resolve(finder, "m1");
}
/**
* Test "provides p.S" where p is not exported to the module.
*/
@Test(expectedExceptions = { ResolutionException.class })
public void testServiceTypePackageNotExported2() {
! ModuleDescriptor descriptor1 = newBuilder("m1")
! .provides("p.S", List.of("q.T"))
.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1);
// m1 does not read a module that exports p
! resolve(finder, "m1");
}
/**
* Test the empty configuration.
*** 2005,2042 ****
* Test creating a configuration containing platform specific modules.
*/
@Test(dataProvider = "platformmatch")
public void testPlatformMatch(String s1, String s2) {
! ModuleDescriptor.Builder builder
! = ModuleDescriptor.module("m1").requires("m2");
!
! String[] s = s1.split("-");
! if (!s[0].equals("*"))
! builder.osName(s[0]);
! if (!s[1].equals("*"))
! builder.osArch(s[1]);
! if (!s[2].equals("*"))
! builder.osVersion(s[2]);
!
ModuleDescriptor descriptor1 = builder.build();
! builder = ModuleDescriptor.module("m2");
!
! s = s2.split("-");
! if (!s[0].equals("*"))
! builder.osName(s[0]);
! if (!s[1].equals("*"))
! builder.osArch(s[1]);
! if (!s[2].equals("*"))
! builder.osVersion(s[2]);
!
ModuleDescriptor descriptor2 = builder.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1, descriptor2);
! Configuration cf = resolveRequires(finder, "m1");
assertTrue(cf.modules().size() == 2);
assertTrue(cf.findModule("m1").isPresent());
assertTrue(cf.findModule("m2").isPresent());
}
--- 1871,1891 ----
* Test creating a configuration containing platform specific modules.
*/
@Test(dataProvider = "platformmatch")
public void testPlatformMatch(String s1, String s2) {
! Builder builder = newBuilder("m1").requires("m2");
! addPlatformConstraints(builder, s1);
ModuleDescriptor descriptor1 = builder.build();
! builder = newBuilder("m2");
! addPlatformConstraints(builder, s2);
ModuleDescriptor descriptor2 = builder.build();
ModuleFinder finder = ModuleUtils.finderOf(descriptor1, descriptor2);
! Configuration cf = resolve(finder, "m1");
assertTrue(cf.modules().size() == 2);
assertTrue(cf.findModule("m1").isPresent());
assertTrue(cf.findModule("m2").isPresent());
}
*** 2044,2147 ****
/**
* Test attempting to create a configuration with modules for different
* platforms.
*/
@Test(dataProvider = "platformmismatch",
! expectedExceptions = ResolutionException.class )
public void testPlatformMisMatch(String s1, String s2) {
testPlatformMatch(s1, s2);
}
// no parents
@Test(expectedExceptions = { IllegalArgumentException.class })
public void testResolveRequiresWithNoParents() {
ModuleFinder empty = ModuleFinder.of();
! Configuration.resolveRequires(empty, List.of(), empty, Set.of());
}
@Test(expectedExceptions = { IllegalArgumentException.class })
public void testResolveRequiresAndUsesWithNoParents() {
ModuleFinder empty = ModuleFinder.of();
! Configuration.resolveRequiresAndUses(empty, List.of(), empty, Set.of());
}
// null handling
// finder1, finder2, roots
@Test(expectedExceptions = { NullPointerException.class })
public void testResolveRequiresWithNull1() {
! resolveRequires((ModuleFinder)null, ModuleFinder.of());
}
@Test(expectedExceptions = { NullPointerException.class })
public void testResolveRequiresWithNull2() {
! resolveRequires(ModuleFinder.of(), (ModuleFinder)null);
}
@Test(expectedExceptions = { NullPointerException.class })
public void testResolveRequiresWithNull3() {
Configuration empty = Configuration.empty();
! Configuration.resolveRequires(null, List.of(empty), ModuleFinder.of(), Set.of());
}
@Test(expectedExceptions = { NullPointerException.class })
public void testResolveRequiresWithNull4() {
ModuleFinder empty = ModuleFinder.of();
! Configuration.resolveRequires(empty, null, empty, Set.of());
}
@Test(expectedExceptions = { NullPointerException.class })
public void testResolveRequiresWithNull5() {
Configuration cf = Layer.boot().configuration();
! Configuration.resolveRequires(ModuleFinder.of(), List.of(cf), null, Set.of());
}
@Test(expectedExceptions = { NullPointerException.class })
public void testResolveRequiresWithNull6() {
ModuleFinder empty = ModuleFinder.of();
Configuration cf = Layer.boot().configuration();
! Configuration.resolveRequires(empty, List.of(cf), empty, null);
}
@Test(expectedExceptions = { NullPointerException.class })
public void testResolveRequiresAndUsesWithNull1() {
! resolveRequiresAndUses((ModuleFinder) null, ModuleFinder.of());
}
@Test(expectedExceptions = { NullPointerException.class })
public void testResolveRequiresAndUsesWithNull2() {
! resolveRequiresAndUses(ModuleFinder.of(), (ModuleFinder) null);
}
@Test(expectedExceptions = { NullPointerException.class })
public void testResolveRequiresAndUsesWithNull3() {
Configuration empty = Configuration.empty();
! Configuration.resolveRequiresAndUses(null, List.of(empty), ModuleFinder.of(), Set.of());
}
@Test(expectedExceptions = { NullPointerException.class })
public void testResolveRequiresAndUsesWithNull4() {
ModuleFinder empty = ModuleFinder.of();
! Configuration.resolveRequiresAndUses(empty, null, empty, Set.of());
}
@Test(expectedExceptions = { NullPointerException.class })
public void testResolveRequiresAndUsesWithNull5() {
Configuration cf = Layer.boot().configuration();
! Configuration.resolveRequiresAndUses(ModuleFinder.of(), List.of(cf), null, Set.of());
}
@Test(expectedExceptions = { NullPointerException.class })
public void testResolveRequiresAndUsesWithNull6() {
ModuleFinder empty = ModuleFinder.of();
Configuration cf = Layer.boot().configuration();
! Configuration.resolveRequiresAndUses(empty, List.of(cf), empty, null);
}
@Test(expectedExceptions = { NullPointerException.class })
public void testFindModuleWithNull() {
Configuration.empty().findModule(null);
--- 1893,2047 ----
/**
* Test attempting to create a configuration with modules for different
* platforms.
*/
@Test(dataProvider = "platformmismatch",
! expectedExceptions = FindException.class )
public void testPlatformMisMatch(String s1, String s2) {
testPlatformMatch(s1, s2);
}
// no parents
@Test(expectedExceptions = { IllegalArgumentException.class })
public void testResolveRequiresWithNoParents() {
ModuleFinder empty = ModuleFinder.of();
! Configuration.resolve(empty, List.of(), empty, Set.of());
}
@Test(expectedExceptions = { IllegalArgumentException.class })
public void testResolveRequiresAndUsesWithNoParents() {
ModuleFinder empty = ModuleFinder.of();
! Configuration.resolveAndBind(empty, List.of(), empty, Set.of());
! }
!
!
! // parents with modules for specific platforms
!
! @Test(dataProvider = "platformmatch")
! public void testResolveRequiresWithCompatibleParents(String s1, String s2) {
! Builder builder = newBuilder("m1");
! addPlatformConstraints(builder, s1);
! ModuleDescriptor descriptor1 = builder.build();
!
! builder = newBuilder("m2");
! addPlatformConstraints(builder, s2);
! ModuleDescriptor descriptor2 = builder.build();
!
! ModuleFinder finder1 = ModuleUtils.finderOf(descriptor1);
! Configuration cf1 = resolve(finder1, "m1");
!
! ModuleFinder finder2 = ModuleUtils.finderOf(descriptor2);
! Configuration cf2 = resolve(finder2, "m2");
!
! Configuration cf3 = Configuration.resolve(ModuleFinder.of(),
! List.of(cf1, cf2),
! ModuleFinder.of(),
! Set.of());
! assertTrue(cf3.parents().size() == 2);
! }
!
! @Test(dataProvider = "platformmismatch",
! expectedExceptions = IllegalArgumentException.class )
! public void testResolveRequiresWithConflictingParents(String s1, String s2) {
! Builder builder = newBuilder("m1");
! addPlatformConstraints(builder, s1);
! ModuleDescriptor descriptor1 = builder.build();
!
! builder = newBuilder("m2");
! addPlatformConstraints(builder, s2);
! ModuleDescriptor descriptor2 = builder.build();
!
! ModuleFinder finder1 = ModuleUtils.finderOf(descriptor1);
! Configuration cf1 = resolve(finder1, "m1");
!
! ModuleFinder finder2 = ModuleUtils.finderOf(descriptor2);
! Configuration cf2 = resolve(finder2, "m2");
!
! // should throw IAE
! Configuration.resolve(ModuleFinder.of(),
! List.of(cf1, cf2),
! ModuleFinder.of(),
! Set.of());
}
+
// null handling
// finder1, finder2, roots
@Test(expectedExceptions = { NullPointerException.class })
public void testResolveRequiresWithNull1() {
! resolve((ModuleFinder)null, ModuleFinder.of());
}
@Test(expectedExceptions = { NullPointerException.class })
public void testResolveRequiresWithNull2() {
! resolve(ModuleFinder.of(), (ModuleFinder)null);
}
@Test(expectedExceptions = { NullPointerException.class })
public void testResolveRequiresWithNull3() {
Configuration empty = Configuration.empty();
! Configuration.resolve(null, List.of(empty), ModuleFinder.of(), Set.of());
}
@Test(expectedExceptions = { NullPointerException.class })
public void testResolveRequiresWithNull4() {
ModuleFinder empty = ModuleFinder.of();
! Configuration.resolve(empty, null, empty, Set.of());
}
@Test(expectedExceptions = { NullPointerException.class })
public void testResolveRequiresWithNull5() {
Configuration cf = Layer.boot().configuration();
! Configuration.resolve(ModuleFinder.of(), List.of(cf), null, Set.of());
}
@Test(expectedExceptions = { NullPointerException.class })
public void testResolveRequiresWithNull6() {
ModuleFinder empty = ModuleFinder.of();
Configuration cf = Layer.boot().configuration();
! Configuration.resolve(empty, List.of(cf), empty, null);
}
@Test(expectedExceptions = { NullPointerException.class })
public void testResolveRequiresAndUsesWithNull1() {
! resolveAndBind((ModuleFinder) null, ModuleFinder.of());
}
@Test(expectedExceptions = { NullPointerException.class })
public void testResolveRequiresAndUsesWithNull2() {
! resolveAndBind(ModuleFinder.of(), (ModuleFinder) null);
}
@Test(expectedExceptions = { NullPointerException.class })
public void testResolveRequiresAndUsesWithNull3() {
Configuration empty = Configuration.empty();
! Configuration.resolveAndBind(null, List.of(empty), ModuleFinder.of(), Set.of());
}
@Test(expectedExceptions = { NullPointerException.class })
public void testResolveRequiresAndUsesWithNull4() {
ModuleFinder empty = ModuleFinder.of();
! Configuration.resolveAndBind(empty, null, empty, Set.of());
}
@Test(expectedExceptions = { NullPointerException.class })
public void testResolveRequiresAndUsesWithNull5() {
Configuration cf = Layer.boot().configuration();
! Configuration.resolveAndBind(ModuleFinder.of(), List.of(cf), null, Set.of());
}
@Test(expectedExceptions = { NullPointerException.class })
public void testResolveRequiresAndUsesWithNull6() {
ModuleFinder empty = ModuleFinder.of();
Configuration cf = Layer.boot().configuration();
! Configuration.resolveAndBind(empty, List.of(cf), empty, null);
}
@Test(expectedExceptions = { NullPointerException.class })
public void testFindModuleWithNull() {
Configuration.empty().findModule(null);
*** 2163,2224 ****
base.reads().add(base);
}
/**
! * Invokes parent.resolveRequires(...)
*/
! private Configuration resolveRequires(Configuration parent,
ModuleFinder before,
ModuleFinder after,
String... roots) {
! return parent.resolveRequires(before, after, Set.of(roots));
}
! private Configuration resolveRequires(Configuration parent,
ModuleFinder before,
String... roots) {
! return resolveRequires(parent, before, ModuleFinder.of(), roots);
}
! private Configuration resolveRequires(ModuleFinder before,
ModuleFinder after,
String... roots) {
! return resolveRequires(Configuration.empty(), before, after, roots);
}
! private Configuration resolveRequires(ModuleFinder before,
String... roots) {
! return resolveRequires(Configuration.empty(), before, roots);
}
/**
! * Invokes parent.resolveRequiresAndUses(...)
*/
! private Configuration resolveRequiresAndUses(Configuration parent,
ModuleFinder before,
ModuleFinder after,
String... roots) {
! return parent.resolveRequiresAndUses(before, after, Set.of(roots));
}
! private Configuration resolveRequiresAndUses(Configuration parent,
ModuleFinder before,
String... roots) {
! return resolveRequiresAndUses(parent, before, ModuleFinder.of(), roots);
}
! private Configuration resolveRequiresAndUses(ModuleFinder before,
ModuleFinder after,
String... roots) {
! return resolveRequiresAndUses(Configuration.empty(), before, after, roots);
}
! private Configuration resolveRequiresAndUses(ModuleFinder before,
String... roots) {
! return resolveRequiresAndUses(Configuration.empty(), before, roots);
}
/**
* Returns {@code true} if the configuration contains module mn1
--- 2063,2124 ----
base.reads().add(base);
}
/**
! * Invokes parent.resolve(...)
*/
! private Configuration resolve(Configuration parent,
ModuleFinder before,
ModuleFinder after,
String... roots) {
! return parent.resolve(before, after, Set.of(roots));
}
! private Configuration resolve(Configuration parent,
ModuleFinder before,
String... roots) {
! return resolve(parent, before, ModuleFinder.of(), roots);
}
! private Configuration resolve(ModuleFinder before,
ModuleFinder after,
String... roots) {
! return resolve(Configuration.empty(), before, after, roots);
}
! private Configuration resolve(ModuleFinder before,
String... roots) {
! return resolve(Configuration.empty(), before, roots);
}
/**
! * Invokes parent.resolveAndBind(...)
*/
! private Configuration resolveAndBind(Configuration parent,
ModuleFinder before,
ModuleFinder after,
String... roots) {
! return parent.resolveAndBind(before, after, Set.of(roots));
}
! private Configuration resolveAndBind(Configuration parent,
ModuleFinder before,
String... roots) {
! return resolveAndBind(parent, before, ModuleFinder.of(), roots);
}
! private Configuration resolveAndBind(ModuleFinder before,
ModuleFinder after,
String... roots) {
! return resolveAndBind(Configuration.empty(), before, after, roots);
}
! private Configuration resolveAndBind(ModuleFinder before,
String... roots) {
! return resolveAndBind(Configuration.empty(), before, roots);
}
/**
* Returns {@code true} if the configuration contains module mn1
*** 2232,2238 ****
return om1.get().reads().stream()
.map(ResolvedModule::name)
.anyMatch(mn2::equals);
}
!
}
--- 2132,2150 ----
return om1.get().reads().stream()
.map(ResolvedModule::name)
.anyMatch(mn2::equals);
}
! /**
! * Decodes the platform string and calls the builder osName/osArch/osVersion
! * methods to set the platform constraints.
! */
! static void addPlatformConstraints(Builder builder, String platformString) {
! String[] s = platformString.split("-");
! if (!s[0].equals("*"))
! builder.osName(s[0]);
! if (!s[1].equals("*"))
! builder.osArch(s[1]);
! if (!s[2].equals("*"))
! builder.osVersion(s[2]);
! }
}
< prev index next >