# HG changeset patch # User jlahoda # Date 1492601854 -7200 # Node ID 55db170eda42de1cc2bd790e3217aa774fc699c1 # Parent ca162fc20601bca6c7c271058808de700439b589 8178012: Finish removal of -Xmodule: Summary: Setting jtreg to use --patch-module instead of -Xmodule:, avoiding -Xmodule: in InMemoryJavaCompiler. Reviewed-by: alanb diff -r ca162fc20601 -r 55db170eda42 test/lib/jdk/test/lib/InMemoryJavaCompiler.java --- a/test/lib/jdk/test/lib/InMemoryJavaCompiler.java Wed Apr 19 10:58:18 2017 +0200 +++ b/test/lib/jdk/test/lib/InMemoryJavaCompiler.java Wed Apr 19 13:37:34 2017 +0200 @@ -28,7 +28,9 @@ import java.io.OutputStream; import java.net.URI; +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; import javax.tools.ForwardingJavaFileManager; import javax.tools.FileObject; @@ -37,6 +39,7 @@ import javax.tools.JavaFileObject; import javax.tools.JavaFileObject.Kind; import javax.tools.SimpleJavaFileObject; +import javax.tools.StandardLocation; import javax.tools.ToolProvider; /** @@ -104,11 +107,24 @@ } private static class FileManagerWrapper extends ForwardingJavaFileManager { - private MemoryJavaFileObject file; + private static final Location PATCH_LOCATION = new Location() { + @Override + public String getName() { + return "patch module location"; + } - public FileManagerWrapper(MemoryJavaFileObject file) { + @Override + public boolean isOutputLocation() { + return false; + } + }; + private final MemoryJavaFileObject file; + private final String moduleOverride; + + public FileManagerWrapper(MemoryJavaFileObject file, String moduleOverride) { super(getCompiler().getStandardFileManager(null, null, null)); this.file = file; + this.moduleOverride = moduleOverride; } @Override @@ -121,6 +137,28 @@ } return file; } + + @Override + public Location getLocationForModule(Location location, JavaFileObject fo) throws IOException { + if (fo == file && moduleOverride != null) { + return PATCH_LOCATION; + } + return super.getLocationForModule(location, fo); + } + + @Override + public String inferModuleName(Location location) throws IOException { + if (location == PATCH_LOCATION) { + return moduleOverride; + } + return super.inferModuleName(location); + } + + @Override + public boolean hasLocation(Location location) { + return super.hasLocation(location) || location == StandardLocation.PATCH_MODULE_PATH; + } + } /** @@ -148,6 +186,15 @@ } private static CompilationTask getCompilationTask(MemoryJavaFileObject file, String... options) { - return getCompiler().getTask(null, new FileManagerWrapper(file), null, Arrays.asList(options), null, Arrays.asList(file)); + List opts = new ArrayList<>(); + String moduleOverride = null; + for (String opt : options) { + if (opt.startsWith("-Xmodule:")) { + moduleOverride = opt.substring("-Xmodule:".length()); + } else { + opts.add(opt); + } + } + return getCompiler().getTask(null, new FileManagerWrapper(file, moduleOverride), null, opts, null, Arrays.asList(file)); } }