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