src/jdk.compiler/share/classes/com/sun/tools/javac/platform/JDKPlatformProvider.java
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/platform/JDKPlatformProvider.java Mon Nov 06 13:10:43 2017 +0100
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/platform/JDKPlatformProvider.java Mon Nov 06 14:10:39 2017 +0100
@@ -47,6 +47,7 @@
import java.util.NoSuchElementException;
import java.util.Set;
import java.util.TreeSet;
+import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.annotation.processing.Processor;
@@ -64,6 +65,7 @@
import com.sun.tools.javac.jvm.Target;
import com.sun.tools.javac.util.Context;
import com.sun.tools.javac.util.Log;
+import com.sun.tools.javac.util.StringUtils;
/** PlatformProvider for JDK N.
*
@@ -96,9 +98,11 @@
DirectoryStream<Path> dir =
Files.newDirectoryStream(fs.getRootDirectories().iterator().next())) {
for (Path section : dir) {
+ if (section.getFileName().toString().contains("-"))
+ continue;
for (char ver : section.getFileName().toString().toCharArray()) {
String verString = Character.toString(ver);
- Target t = Target.lookup(verString);
+ Target t = Target.lookup("" + Integer.parseInt(verString, 16));
if (t != null) {
SUPPORTED_JAVA_PLATFORM_VERSIONS.add(targetNumericVersion(t));
@@ -108,10 +112,6 @@
} catch (IOException | ProviderNotFoundException ex) {
}
}
-
- if (SUPPORTED_JAVA_PLATFORM_VERSIONS.contains("9")) {
- SUPPORTED_JAVA_PLATFORM_VERSIONS.add("10");
- }
}
private static String targetNumericVersion(Target target) {
@@ -121,10 +121,13 @@
static class PlatformDescriptionImpl implements PlatformDescription {
private final Map<Path, FileSystem> ctSym2FileSystem = new HashMap<>();
- private final String version;
+ private final String sourceVersion;
+ private final String ctSymVersion;
- PlatformDescriptionImpl(String version) {
- this.version = version;
+ PlatformDescriptionImpl(String sourceVersion) {
+ this.sourceVersion = sourceVersion;
+ this.ctSymVersion =
+ StringUtils.toUpperCase(Integer.toHexString(Integer.parseInt(sourceVersion)));
}
@Override
@@ -234,13 +237,15 @@
}
List<Path> paths = new ArrayList<>();
+ Path modules = fs.getPath(ctSymVersion + "-modules");
Path root = fs.getRootDirectories().iterator().next();
boolean pathsSet = false;
Charset utf8 = Charset.forName("UTF-8");
try (DirectoryStream<Path> dir = Files.newDirectoryStream(root)) {
for (Path section : dir) {
- if (section.getFileName().toString().contains(version)) {
+ if (section.getFileName().toString().contains(ctSymVersion) &&
+ !section.getFileName().toString().contains("-")) {
Path systemModules = section.resolve("system-modules");
if (Files.isRegularFile(systemModules)) {
@@ -263,7 +268,19 @@
}
}
- if (!pathsSet) {
+ if (Files.isDirectory(modules)) {
+ try (DirectoryStream<Path> dir = Files.newDirectoryStream(modules)) {
+ fm.handleOption("--system", Arrays.asList("none").iterator());
+
+ for (Path module : dir) {
+ fm.setLocationForModule(StandardLocation.SYSTEM_MODULES,
+ module.getFileName().toString(),
+ Stream.concat(paths.stream(),
+ Stream.of(module))
+ .collect(Collectors.toList()));
+ }
+ }
+ } else if (!pathsSet) {
fm.setLocationFromPaths(StandardLocation.PLATFORM_CLASS_PATH, paths);
}
@@ -309,12 +326,12 @@
@Override
public String getSourceVersion() {
- return version;
+ return sourceVersion;
}
@Override
public String getTargetVersion() {
- return version;
+ return sourceVersion;
}
@Override