src/jdk.jlink/share/classes/jdk/tools/jlink/internal/JlinkTask.java
changeset 48692 60c19c384333
parent 48543 7067fe4e054e
equal deleted inserted replaced
48691:554cb38e0caf 48692:60c19c384333
    41 import java.nio.file.Files;
    41 import java.nio.file.Files;
    42 import java.nio.file.Path;
    42 import java.nio.file.Path;
    43 import java.nio.file.Paths;
    43 import java.nio.file.Paths;
    44 import java.util.ArrayList;
    44 import java.util.ArrayList;
    45 import java.util.Arrays;
    45 import java.util.Arrays;
    46 import java.util.Collection;
       
    47 import java.util.Collections;
       
    48 import java.util.Comparator;
    46 import java.util.Comparator;
    49 import java.util.Date;
    47 import java.util.Date;
    50 import java.util.HashMap;
    48 import java.util.HashMap;
    51 import java.util.HashSet;
    49 import java.util.HashSet;
    52 import java.util.List;
    50 import java.util.List;
   229                    new PrintWriter(System.err, true));
   227                    new PrintWriter(System.err, true));
   230         }
   228         }
   231         try {
   229         try {
   232             List<String> remaining = optionsHelper.handleOptions(this, args);
   230             List<String> remaining = optionsHelper.handleOptions(this, args);
   233             if (remaining.size() > 0 && !options.suggestProviders) {
   231             if (remaining.size() > 0 && !options.suggestProviders) {
   234                 throw taskHelper.newBadArgs("err.orphan.arguments", toString(remaining))
   232                 throw taskHelper.newBadArgs("err.orphan.arguments",
       
   233                                             remaining.stream().collect(Collectors.joining(" ")))
   235                                 .showUsage(true);
   234                                 .showUsage(true);
   236             }
   235             }
   237             if (options.help) {
   236             if (options.help) {
   238                 optionsHelper.showHelp(PROGNAME);
   237                 optionsHelper.showHelp(PROGNAME);
   239                 return EXIT_OK;
   238                 return EXIT_OK;
   657 
   656 
   658     private void suggestProviders(JlinkConfiguration config, List<String> args)
   657     private void suggestProviders(JlinkConfiguration config, List<String> args)
   659         throws BadArgs
   658         throws BadArgs
   660     {
   659     {
   661         if (args.size() > 1) {
   660         if (args.size() > 1) {
   662             throw taskHelper.newBadArgs("err.orphan.argument",
   661             List<String> arguments = args.get(0).startsWith("-")
   663                                         toString(args.subList(1, args.size())))
   662                                         ? args
   664                             .showUsage(true);
   663                                         : args.subList(1, args.size());
       
   664             throw taskHelper.newBadArgs("err.invalid.arg.for.option",
       
   665                                         "--suggest-providers",
       
   666                                         arguments.stream().collect(Collectors.joining(" ")));
   665         }
   667         }
   666 
   668 
   667         if (options.bindServices) {
   669         if (options.bindServices) {
   668             log.println(taskHelper.getMessage("no.suggested.providers"));
   670             log.println(taskHelper.getMessage("no.suggested.providers"));
   669             return;
   671             return;
   712                  .flatMap(mref -> mref.descriptor().provides().stream()
   714                  .flatMap(mref -> mref.descriptor().provides().stream()
   713                                       .map(ModuleDescriptor.Provides::service))
   715                                       .map(ModuleDescriptor.Provides::service))
   714                  .forEach(names::remove);
   716                  .forEach(names::remove);
   715             if (!names.isEmpty()) {
   717             if (!names.isEmpty()) {
   716                 log.println(taskHelper.getMessage("warn.provider.notfound",
   718                 log.println(taskHelper.getMessage("warn.provider.notfound",
   717                                                   toString(names)));
   719                     names.stream().sorted().collect(Collectors.joining(","))));
   718             }
   720             }
   719 
   721 
   720             String msg = String.format("%n%s:", taskHelper.getMessage("suggested.providers.header"));
   722             String msg = String.format("%n%s:", taskHelper.getMessage("suggested.providers.header"));
   721             printProviders(log, msg, mrefs, uses);
   723             printProviders(log, msg, mrefs, uses);
   722         }
   724         }
   723     }
       
   724 
       
   725     private static String toString(Collection<String> collection) {
       
   726         return collection.stream().sorted()
       
   727                          .collect(Collectors.joining(","));
       
   728     }
   725     }
   729 
   726 
   730     private String getSaveOpts() {
   727     private String getSaveOpts() {
   731         StringBuilder sb = new StringBuilder();
   728         StringBuilder sb = new StringBuilder();
   732         sb.append('#').append(new Date()).append("\n");
   729         sb.append('#').append(new Date()).append("\n");