< prev index next >

test/java/util/ServiceLoader/ModulesTest.java

Print this page

        

*** 31,40 **** --- 31,41 ---- * classpath/pearscript/org/pear/PearScript.java * @run testng/othervm ModulesTest * @summary Basic test for ServiceLoader with a provider deployed as a module. */ + import java.io.File; import java.lang.module.Configuration; import java.lang.module.ModuleFinder; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths;
*** 47,56 **** --- 48,58 ---- import java.util.Optional; import java.util.ServiceLoader; import java.util.ServiceLoader.Provider; import java.util.Set; import java.util.stream.Collectors; + import java.util.stream.Stream; import javax.script.ScriptEngineFactory; import org.testng.annotations.Test; import org.testng.annotations.BeforeTest; import static org.testng.Assert.*;
*** 234,245 **** * Basic test of ServiceLoader.load where the service provider module is an * automatic module. */ @Test public void testWithAutomaticModule() throws Exception { Path classes = Paths.get(System.getProperty("test.classes")); ! Path jar = Files.createTempDirectory("lib").resolve("pearscript.jar"); JarUtils.createJarFile(jar, classes, "META-INF", "org"); ModuleFinder finder = ModuleFinder.of(jar); ModuleLayer bootLayer = ModuleLayer.boot(); Configuration parent = bootLayer.configuration(); --- 236,249 ---- * Basic test of ServiceLoader.load where the service provider module is an * automatic module. */ @Test public void testWithAutomaticModule() throws Exception { + Path here = Paths.get(""); + Path jar = Files.createTempDirectory(here, "lib").resolve("pearscript.jar"); Path classes = Paths.get(System.getProperty("test.classes")); ! JarUtils.createJarFile(jar, classes, "META-INF", "org"); ModuleFinder finder = ModuleFinder.of(jar); ModuleLayer bootLayer = ModuleLayer.boot(); Configuration parent = bootLayer.configuration();
*** 351,362 **** .filter("BananaScriptEngine"::equals) .findAny() .isPresent()); ClassLoader scl = ClassLoader.getSystemClassLoader(); ! Path dir = Paths.get(System.getProperty("test.classes", "."), "modules"); ! ModuleFinder finder = ModuleFinder.of(dir); // layer1 Configuration cf1 = cf0.resolveAndBind(finder, ModuleFinder.of(), Set.of()); ModuleLayer layer1 = bootLayer.defineModulesWithOneLoader(cf1, scl); assertTrue(layer1.modules().size() == 1); --- 355,365 ---- .filter("BananaScriptEngine"::equals) .findAny() .isPresent()); ClassLoader scl = ClassLoader.getSystemClassLoader(); ! ModuleFinder finder = ModuleFinder.of(testModulePath()); // layer1 Configuration cf1 = cf0.resolveAndBind(finder, ModuleFinder.of(), Set.of()); ModuleLayer layer1 = bootLayer.defineModulesWithOneLoader(cf1, scl); assertTrue(layer1.modules().size() == 1);
*** 449,463 **** ServiceLoader.loadInstalled(null); } /** * Create a custom layer by resolving the given module names. The modules ! * are located in the {@code ${test.classes}/modules} directory. */ private ModuleLayer createCustomLayer(String... modules) { ! Path dir = Paths.get(System.getProperty("test.classes", "."), "modules"); ! ModuleFinder finder = ModuleFinder.of(dir); Set<String> roots = new HashSet<>(); Collections.addAll(roots, modules); ModuleLayer bootLayer = ModuleLayer.boot(); Configuration parent = bootLayer.configuration(); Configuration cf = parent.resolve(finder, ModuleFinder.of(), roots); --- 452,465 ---- ServiceLoader.loadInstalled(null); } /** * Create a custom layer by resolving the given module names. The modules ! * are located on the test module path ({@code ${test.module.path}}). */ private ModuleLayer createCustomLayer(String... modules) { ! ModuleFinder finder = ModuleFinder.of(testModulePath()); Set<String> roots = new HashSet<>(); Collections.addAll(roots, modules); ModuleLayer bootLayer = ModuleLayer.boot(); Configuration parent = bootLayer.configuration(); Configuration cf = parent.resolve(finder, ModuleFinder.of(), roots);
*** 465,474 **** --- 467,483 ---- ModuleLayer layer = bootLayer.defineModulesWithOneLoader(cf, scl); assertTrue(layer.modules().size() == 1); return layer; } + private Path[] testModulePath() { + String mp = System.getProperty("test.module.path"); + return Stream.of(mp.split(File.pathSeparator)) + .map(Paths::get) + .toArray(Path[]::new); + } + private <E> List<E> collectAll(ServiceLoader<E> loader) { List<E> list = new ArrayList<>(); Iterator<E> iterator = loader.iterator(); while (iterator.hasNext()) { list.add(iterator.next());
< prev index next >