< prev index next >
langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java
Print this page
@@ -82,11 +82,11 @@
import com.sun.tools.javac.util.Pair;
import com.sun.tools.javac.util.StringUtils;
import static javax.tools.StandardLocation.PLATFORM_CLASS_PATH;
-import static com.sun.tools.javac.main.Option.BOOTCLASSPATH;
+import static com.sun.tools.javac.main.Option.BOOT_CLASS_PATH;
import static com.sun.tools.javac.main.Option.DJAVA_ENDORSED_DIRS;
import static com.sun.tools.javac.main.Option.DJAVA_EXT_DIRS;
import static com.sun.tools.javac.main.Option.ENDORSEDDIRS;
import static com.sun.tools.javac.main.Option.EXTDIRS;
import static com.sun.tools.javac.main.Option.XBOOTCLASSPATH;
@@ -578,12 +578,11 @@
* If no value is given, a default is provided, based on system properties and other values.
*/
private class ClassPathLocationHandler extends SimpleLocationHandler {
ClassPathLocationHandler() {
- super(StandardLocation.CLASS_PATH,
- Option.CLASSPATH, Option.CP);
+ super(StandardLocation.CLASS_PATH, Option.CLASS_PATH);
}
@Override
Collection<Path> getPaths() {
lazy();
@@ -647,11 +646,11 @@
*/
private boolean isDefault;
BootClassPathLocationHandler() {
super(StandardLocation.PLATFORM_CLASS_PATH,
- Option.BOOTCLASSPATH, Option.XBOOTCLASSPATH,
+ Option.BOOT_CLASS_PATH, Option.XBOOTCLASSPATH,
Option.XBOOTCLASSPATH_PREPEND,
Option.XBOOTCLASSPATH_APPEND,
Option.ENDORSEDDIRS, Option.DJAVA_ENDORSED_DIRS,
Option.EXTDIRS, Option.DJAVA_EXT_DIRS);
}
@@ -667,11 +666,11 @@
return false;
}
option = canonicalize(option);
optionValues.put(option, value);
- if (option == BOOTCLASSPATH) {
+ if (option == BOOT_CLASS_PATH) {
optionValues.remove(XBOOTCLASSPATH_PREPEND);
optionValues.remove(XBOOTCLASSPATH_APPEND);
}
searchPath = null; // reset to "uninitialized"
return true;
@@ -680,11 +679,11 @@
// TODO: would be better if option aliasing was handled at a higher
// level
private Option canonicalize(Option option) {
switch (option) {
case XBOOTCLASSPATH:
- return Option.BOOTCLASSPATH;
+ return Option.BOOT_CLASS_PATH;
case DJAVA_ENDORSED_DIRS:
return Option.ENDORSEDDIRS;
case DJAVA_EXT_DIRS:
return Option.EXTDIRS;
default:
@@ -711,11 +710,11 @@
}
SearchPath computePath() throws IOException {
SearchPath path = new SearchPath();
- String bootclasspathOpt = optionValues.get(BOOTCLASSPATH);
+ String bootclasspathOpt = optionValues.get(BOOT_CLASS_PATH);
String endorseddirsOpt = optionValues.get(ENDORSEDDIRS);
String extdirsOpt = optionValues.get(EXTDIRS);
String xbootclasspathPrependOpt = optionValues.get(XBOOTCLASSPATH_PREPEND);
String xbootclasspathAppendOpt = optionValues.get(XBOOTCLASSPATH_APPEND);
path.addFiles(xbootclasspathPrependOpt);
@@ -1159,11 +1158,11 @@
private Map<Path, Location> pathLocations;
ModuleSourcePathLocationHandler() {
super(StandardLocation.MODULE_SOURCE_PATH,
- Option.MODULESOURCEPATH);
+ Option.MODULE_SOURCE_PATH);
}
@Override
boolean handleOption(Option option, String value) {
init(value);
@@ -1491,20 +1490,20 @@
handlersForOption = new EnumMap<>(Option.class);
BasicLocationHandler[] handlers = {
new BootClassPathLocationHandler(),
new ClassPathLocationHandler(),
- new SimpleLocationHandler(StandardLocation.SOURCE_PATH, Option.SOURCEPATH),
- new SimpleLocationHandler(StandardLocation.ANNOTATION_PROCESSOR_PATH, Option.PROCESSORPATH),
- new SimpleLocationHandler(StandardLocation.ANNOTATION_PROCESSOR_MODULE_PATH, Option.PROCESSORMODULEPATH),
+ new SimpleLocationHandler(StandardLocation.SOURCE_PATH, Option.SOURCE_PATH),
+ new SimpleLocationHandler(StandardLocation.ANNOTATION_PROCESSOR_PATH, Option.PROCESSOR_PATH),
+ new SimpleLocationHandler(StandardLocation.ANNOTATION_PROCESSOR_MODULE_PATH, Option.PROCESSOR_MODULE_PATH),
new OutputLocationHandler(StandardLocation.CLASS_OUTPUT, Option.D),
new OutputLocationHandler(StandardLocation.SOURCE_OUTPUT, Option.S),
new OutputLocationHandler(StandardLocation.NATIVE_HEADER_OUTPUT, Option.H),
new ModuleSourcePathLocationHandler(),
// TODO: should UPGRADE_MODULE_PATH be merged with SYSTEM_MODULES?
- new ModulePathLocationHandler(StandardLocation.UPGRADE_MODULE_PATH, Option.UPGRADEMODULEPATH),
- new ModulePathLocationHandler(StandardLocation.MODULE_PATH, Option.MODULEPATH, Option.MP),
+ new ModulePathLocationHandler(StandardLocation.UPGRADE_MODULE_PATH, Option.UPGRADE_MODULE_PATH),
+ new ModulePathLocationHandler(StandardLocation.MODULE_PATH, Option.MODULE_PATH),
new SystemModulesLocationHandler(),
};
for (BasicLocationHandler h : handlers) {
handlersForLocation.put(h.location, h);
@@ -1516,33 +1515,46 @@
private Map<String, SearchPath> patchMap;
boolean handleOption(Option option, String value) {
switch (option) {
- case XPATCH:
- Map<String, SearchPath> map = new LinkedHashMap<>();
- int eq = value.indexOf('=');
+ case PATCH_MODULE:
+ if (value == null) {
+ patchMap = null;
+ } else {
+ // Allow an extended syntax for --patch-module consisting of a series
+ // of values separated by NULL characters. This is to facilitate
+ // supporting deferred file manager options on the command line.
+ // See Option.PATCH_MODULE for the code that composes these multiple
+ // values.
+ for (String v : value.split("\0")) {
+ int eq = v.indexOf('=');
if (eq > 0) {
- String mName = value.substring(0, eq);
+ String mName = v.substring(0, eq);
SearchPath mPatchPath = new SearchPath()
- .addFiles(value.substring(eq + 1));
+ .addFiles(v.substring(eq + 1));
boolean ok = true;
- for (Path p: mPatchPath) {
+ for (Path p : mPatchPath) {
Path mi = p.resolve("module-info.class");
if (Files.exists(mi)) {
log.error(Errors.LocnModuleInfoNotAllowedOnPatchPath(mi));
ok = false;
}
}
- if (ok && !mPatchPath.isEmpty()) {
- map.computeIfAbsent(mName, (_x) -> new SearchPath())
- .addAll(mPatchPath);
+ if (ok) {
+ if (patchMap == null) {
+ patchMap = new LinkedHashMap<>();
+ }
+ patchMap.put(mName, mPatchPath);
}
} else {
+ // Should not be able to get here;
+ // this should be caught and handled in Option.PATCH_MODULE
log.error(Errors.LocnInvalidArgForXpatch(value));
}
- patchMap = map;
+ }
+ }
return true;
default:
LocationHandler h = handlersForOption.get(option);
return (h == null ? false : h.handleOption(option, value));
}
< prev index next >