< prev index next >

src/jdk.jdeps/share/classes/com/sun/tools/jdeps/JdepsTask.java

Print this page

        

*** 355,364 **** --- 355,369 ---- throw new BadArgs("err.command.set", task.command, opt); } task.command = task.listModuleDeps(CommandOption.PRINT_MODULE_DEPS); } }, + new Option(false, "--ignore-missing-deps") { + void process(JdepsTask task, String opt, String arg) { + task.options.ignoreMissingDeps = true; + } + }, // ---- Target filtering options ---- new Option(true, "-p", "-package", "--package") { void process(JdepsTask task, String opt, String arg) { task.options.packageNames.add(arg);
*** 399,408 **** --- 404,418 ---- task.options.filterSamePackage = false; break; } } }, + new Option(false, "--missing-deps") { + void process(JdepsTask task, String opt, String arg) { + task.options.findMissingDeps = true; + } + }, // ---- Source filtering options ---- new Option(true, "-include") { void process(JdepsTask task, String opt, String arg) throws BadArgs { task.options.includePattern = Pattern.compile(arg);
*** 609,618 **** --- 619,633 ---- } return new GenModuleInfo(dir, openModule); } private ListModuleDeps listModuleDeps(CommandOption option) throws BadArgs { + // no need to record the dependences on the same archive or same package + options.filterSameArchive = true; + options.filterSamePackage = true; + // do transitive dependence analysis + options.depth = 0; switch (option) { case LIST_DEPS: return new ListModuleDeps(option, true, false); case LIST_REDUCED_DEPS: return new ListModuleDeps(option, true, true);
*** 675,694 **** super(option); } @Override boolean checkOptions() { ! if (options.findJDKInternals) { // cannot set any filter, -verbose and -summary option if (options.showSummary || options.verbose != null) { reportError("err.invalid.options", "-summary or -verbose", ! "-jdkinternals"); return false; } if (options.hasFilter()) { reportError("err.invalid.options", "--package, --regex, --require", ! "-jdkinternals"); return false; } } if (options.showSummary) { // -summary cannot use with -verbose option --- 690,709 ---- super(option); } @Override boolean checkOptions() { ! if (options.findJDKInternals || options.findMissingDeps) { // cannot set any filter, -verbose and -summary option if (options.showSummary || options.verbose != null) { reportError("err.invalid.options", "-summary or -verbose", ! options.findJDKInternals ? "-jdkinternals" : "--missing-deps"); return false; } if (options.hasFilter()) { reportError("err.invalid.options", "--package, --regex, --require", ! options.findJDKInternals ? "-jdkinternals" : "--missing-deps"); return false; } } if (options.showSummary) { // -summary cannot use with -verbose option
*** 713,723 **** */ Type getAnalyzerType() { if (options.showSummary) return Type.SUMMARY; ! if (options.findJDKInternals) return Type.CLASS; // default to package-level verbose return options.verbose != null ? options.verbose : PACKAGE; } --- 728,738 ---- */ Type getAnalyzerType() { if (options.showSummary) return Type.SUMMARY; ! if (options.findJDKInternals || options.findMissingDeps) return Type.CLASS; // default to package-level verbose return options.verbose != null ? options.verbose : PACKAGE; }
*** 923,938 **** = new ModuleInfoBuilder(config, inputArgs, dir, openModule); boolean ok = builder.run(); if (!ok && !options.nowarning) { reportError("err.missing.dependences"); ! builder.visitMissingDeps( ! (origin, originArchive, target, targetArchive) -> { ! if (builder.notFound(targetArchive)) ! log.format(" %-50s -> %-50s %s%n", ! origin, target, targetArchive.getName()); ! }); } return ok; } private String toPackageName(String name) { --- 938,948 ---- = new ModuleInfoBuilder(config, inputArgs, dir, openModule); boolean ok = builder.run(); if (!ok && !options.nowarning) { reportError("err.missing.dependences"); ! builder.visitMissingDeps(new SimpleDepVisitor()); } return ok; } private String toPackageName(String name) {
*** 991,1007 **** } @Override boolean checkOptions() { if (options.showSummary || options.verbose != null) { ! reportError("err.invalid.options", "-summary or -verbose", ! option); return false; } if (options.findJDKInternals) { ! reportError("err.invalid.options", "-jdkinternals", ! option); return false; } if (!inputArgs.isEmpty() && !options.rootModules.isEmpty()) { reportError("err.invalid.arg.for.option", "-m"); --- 1001,1019 ---- } @Override boolean checkOptions() { if (options.showSummary || options.verbose != null) { ! reportError("err.invalid.options", "-summary or -verbose", option); return false; } if (options.findJDKInternals) { ! reportError("err.invalid.options", "-jdkinternals", option); ! return false; ! } ! if (options.findMissingDeps) { ! reportError("err.invalid.options", "--missing-deps", option); return false; } if (!inputArgs.isEmpty() && !options.rootModules.isEmpty()) { reportError("err.invalid.arg.for.option", "-m");
*** 1013,1032 **** return true; } @Override boolean run(JdepsConfiguration config) throws IOException { ! return new ModuleExportsAnalyzer(config, dependencyFilter(config), jdkinternals, reduced, log, ! separator).run(); } } - class GenDotFile extends AnalyzeDeps { final Path dotOutputDir; GenDotFile(Path dotOutputDir) { super(CommandOption.GENERATE_DOT_FILE); --- 1025,1050 ---- return true; } @Override boolean run(JdepsConfiguration config) throws IOException { ! ModuleExportsAnalyzer analyzer = new ModuleExportsAnalyzer(config, dependencyFilter(config), jdkinternals, reduced, log, ! separator); ! boolean ok = analyzer.run(options.depth, options.ignoreMissingDeps); ! if (!ok) { ! reportError("err.cant.list.module.deps"); ! log.println(); ! analyzer.visitMissingDeps(new SimpleDepVisitor()); ! } ! return ok; } } class GenDotFile extends AnalyzeDeps { final Path dotOutputDir; GenDotFile(Path dotOutputDir) { super(CommandOption.GENERATE_DOT_FILE);
*** 1051,1060 **** --- 1069,1090 ---- options.showLabel); return run(config, writer, type); } } + class SimpleDepVisitor implements Analyzer.Visitor { + private Archive source; + @Override + public void visitDependence(String origin, Archive originArchive, String target, Archive targetArchive) { + if (source != originArchive) { + source = originArchive; + log.format("%s%n", originArchive); + } + log.format(" %-50s -> %-50s %s%n", origin, target, targetArchive.getName()); + } + } + /** * Returns a filter used during dependency analysis */ private JdepsFilter dependencyFilter(JdepsConfiguration config) { // Filter specified by -filter, -package, -regex, and --require options
*** 1064,1073 **** --- 1094,1104 ---- builder.includePattern(options.includePattern); // target filters builder.filter(options.filterSamePackage, options.filterSameArchive); builder.findJDKInternals(options.findJDKInternals); + builder.findMissingDeps(options.findMissingDeps); // --require if (!options.requires.isEmpty()) { options.requires.stream() .forEach(mn -> {
*** 1156,1178 **** } private String version(String key) { // key=version: mm.nn.oo[-milestone] // key=full: mm.mm.oo[-milestone]-build - if (ResourceBundleHelper.versionRB == null) { - return System.getProperty("java.version"); - } try { ! return ResourceBundleHelper.versionRB.getString(key); } catch (MissingResourceException e) { return getMessage("version.unknown", System.getProperty("java.version")); } } static String getMessage(String key, Object... args) { try { ! return MessageFormat.format(ResourceBundleHelper.bundle.getString(key), args); } catch (MissingResourceException e) { throw new InternalError("Missing message: " + key); } } --- 1187,1206 ---- } private String version(String key) { // key=version: mm.nn.oo[-milestone] // key=full: mm.mm.oo[-milestone]-build try { ! return ResourceBundleHelper.getVersion(key); } catch (MissingResourceException e) { return getMessage("version.unknown", System.getProperty("java.version")); } } static String getMessage(String key, Object... args) { try { ! return MessageFormat.format(ResourceBundleHelper.getMessage(key), args); } catch (MissingResourceException e) { throw new InternalError("Missing message: " + key); } }
*** 1184,1193 **** --- 1212,1223 ---- boolean showModule = true; boolean showSummary; boolean apiOnly; boolean showLabel; boolean findJDKInternals; + boolean findMissingDeps; + boolean ignoreMissingDeps; boolean nowarning = false; Analyzer.Type verbose; // default filter references from same package boolean filterSamePackage = true; boolean filterSameArchive = false;
*** 1223,1232 **** --- 1253,1263 ---- return count; } } private static class ResourceBundleHelper { + static final String LS = System.lineSeparator(); static final ResourceBundle versionRB; static final ResourceBundle bundle; static final ResourceBundle jdkinternals; static {
*** 1245,1254 **** --- 1276,1300 ---- jdkinternals = ResourceBundle.getBundle("com.sun.tools.jdeps.resources.jdkinternals"); } catch (MissingResourceException e) { throw new InternalError("Cannot find jdkinternals resource bundle"); } } + + static String getMessage(String key) { + return bundle.getString(key).replace("\n", LS); + } + + static String getVersion(String key) { + if (ResourceBundleHelper.versionRB == null) { + return System.getProperty("java.version"); + } + return versionRB.getString(key).replace("\n", LS); + } + + static String getSuggestedReplacement(String key) { + return ResourceBundleHelper.jdkinternals.getString(key).replace("\n", LS); + } } /** * Returns the recommended replacement API for the given classname; * or return null if replacement API is not known.
*** 1256,1266 **** private Optional<String> replacementFor(String cn) { String name = cn; String value = null; while (value == null && name != null) { try { ! value = ResourceBundleHelper.jdkinternals.getString(name); } catch (MissingResourceException e) { // go up one subpackage level int i = name.lastIndexOf('.'); name = i > 0 ? name.substring(0, i) : null; } --- 1302,1312 ---- private Optional<String> replacementFor(String cn) { String name = cn; String value = null; while (value == null && name != null) { try { ! value = ResourceBundleHelper.getSuggestedReplacement(name); } catch (MissingResourceException e) { // go up one subpackage level int i = name.lastIndexOf('.'); name = i > 0 ? name.substring(0, i) : null; }
< prev index next >