< prev index next >

langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java

Print this page

        

*** 82,92 **** 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.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; --- 82,92 ---- 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.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,589 **** * 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); } @Override Collection<Path> getPaths() { lazy(); --- 578,588 ---- * 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.CLASS_PATH); } @Override Collection<Path> getPaths() { lazy();
*** 647,657 **** */ private boolean isDefault; BootClassPathLocationHandler() { super(StandardLocation.PLATFORM_CLASS_PATH, ! Option.BOOTCLASSPATH, Option.XBOOTCLASSPATH, Option.XBOOTCLASSPATH_PREPEND, Option.XBOOTCLASSPATH_APPEND, Option.ENDORSEDDIRS, Option.DJAVA_ENDORSED_DIRS, Option.EXTDIRS, Option.DJAVA_EXT_DIRS); } --- 646,656 ---- */ private boolean isDefault; BootClassPathLocationHandler() { super(StandardLocation.PLATFORM_CLASS_PATH, ! 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,677 **** return false; } option = canonicalize(option); optionValues.put(option, value); ! if (option == BOOTCLASSPATH) { optionValues.remove(XBOOTCLASSPATH_PREPEND); optionValues.remove(XBOOTCLASSPATH_APPEND); } searchPath = null; // reset to "uninitialized" return true; --- 666,676 ---- return false; } option = canonicalize(option); optionValues.put(option, value); ! if (option == BOOT_CLASS_PATH) { optionValues.remove(XBOOTCLASSPATH_PREPEND); optionValues.remove(XBOOTCLASSPATH_APPEND); } searchPath = null; // reset to "uninitialized" return true;
*** 680,690 **** // 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; case DJAVA_ENDORSED_DIRS: return Option.ENDORSEDDIRS; case DJAVA_EXT_DIRS: return Option.EXTDIRS; default: --- 679,689 ---- // TODO: would be better if option aliasing was handled at a higher // level private Option canonicalize(Option option) { switch (option) { case XBOOTCLASSPATH: ! return Option.BOOT_CLASS_PATH; case DJAVA_ENDORSED_DIRS: return Option.ENDORSEDDIRS; case DJAVA_EXT_DIRS: return Option.EXTDIRS; default:
*** 711,721 **** } SearchPath computePath() throws IOException { SearchPath path = new SearchPath(); ! String bootclasspathOpt = optionValues.get(BOOTCLASSPATH); 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); --- 710,720 ---- } SearchPath computePath() throws IOException { SearchPath path = new SearchPath(); ! 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,1169 **** private Map<Path, Location> pathLocations; ModuleSourcePathLocationHandler() { super(StandardLocation.MODULE_SOURCE_PATH, ! Option.MODULESOURCEPATH); } @Override boolean handleOption(Option option, String value) { init(value); --- 1158,1168 ---- private Map<Path, Location> pathLocations; ModuleSourcePathLocationHandler() { super(StandardLocation.MODULE_SOURCE_PATH, ! Option.MODULE_SOURCE_PATH); } @Override boolean handleOption(Option option, String value) { init(value);
*** 1491,1510 **** 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 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 SystemModulesLocationHandler(), }; for (BasicLocationHandler h : handlers) { handlersForLocation.put(h.location, h); --- 1490,1509 ---- handlersForOption = new EnumMap<>(Option.class); BasicLocationHandler[] handlers = { new BootClassPathLocationHandler(), new ClassPathLocationHandler(), ! 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.UPGRADE_MODULE_PATH), ! new ModulePathLocationHandler(StandardLocation.MODULE_PATH, Option.MODULE_PATH), new SystemModulesLocationHandler(), }; for (BasicLocationHandler h : handlers) { handlersForLocation.put(h.location, h);
*** 1516,1548 **** 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('='); if (eq > 0) { ! String mName = value.substring(0, eq); SearchPath mPatchPath = new SearchPath() ! .addFiles(value.substring(eq + 1)); boolean ok = true; ! 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); } } else { log.error(Errors.LocnInvalidArgForXpatch(value)); } ! patchMap = map; return true; default: LocationHandler h = handlersForOption.get(option); return (h == null ? false : h.handleOption(option, value)); } --- 1515,1560 ---- private Map<String, SearchPath> patchMap; boolean handleOption(Option option, String value) { switch (option) { ! 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 = v.substring(0, eq); SearchPath mPatchPath = new SearchPath() ! .addFiles(v.substring(eq + 1)); boolean ok = true; ! for (Path p : mPatchPath) { Path mi = p.resolve("module-info.class"); if (Files.exists(mi)) { log.error(Errors.LocnModuleInfoNotAllowedOnPatchPath(mi)); ok = false; } } ! 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)); } ! } ! } return true; default: LocationHandler h = handlersForOption.get(option); return (h == null ? false : h.handleOption(option, value)); }
< prev index next >