jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/JlinkTask.java
changeset 39125 e97953d38291
parent 38869 4bac8f3bce74
child 39156 92844b32bcec
--- a/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/JlinkTask.java	Wed Jul 05 21:52:00 2017 +0200
+++ b/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/JlinkTask.java	Sun Jun 19 16:46:49 2016 -0700
@@ -39,15 +39,7 @@
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.util.Date;
-import java.util.Formatter;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import jdk.internal.module.ConfigurableModuleFinder;
@@ -96,11 +88,9 @@
         }, "--help"),
         new Option<JlinkTask>(true, (task, opt, arg) -> {
             String[] dirs = arg.split(File.pathSeparator);
-            task.options.modulePath = new Path[dirs.length];
-            int i = 0;
-            for (String dir : dirs) {
-                task.options.modulePath[i++] = Paths.get(dir);
-            }
+            Arrays.stream(dirs)
+                  .map(Paths::get)
+                  .forEach(task.options.modulePath::add);
         }, "--modulepath", "--mp"),
         new Option<JlinkTask>(true, (task, opt, arg) -> {
             for (String mn : arg.split(",")) {
@@ -176,7 +166,7 @@
         String  saveoptsfile;
         boolean version;
         boolean fullVersion;
-        Path[] modulePath;
+        List<Path> modulePath = new ArrayList<>();
         Set<String> limitMods = new HashSet<>();
         Set<String> addMods = new HashSet<>();
         Path output;
@@ -203,7 +193,7 @@
                 return EXIT_OK;
             }
             if (taskHelper.getExistingImage() == null) {
-                if (options.modulePath == null || options.modulePath.length == 0) {
+                if (options.modulePath == null || options.modulePath.isEmpty()) {
                     throw taskHelper.newBadArgs("err.modulepath.must.be.specified").showUsage(true);
                 }
                 createImage();
@@ -245,7 +235,7 @@
      * Jlink API entry point.
      */
     public static void createImage(JlinkConfiguration config,
-            PluginsConfiguration plugins)
+                                   PluginsConfiguration plugins)
             throws Exception {
         Objects.requireNonNull(config);
         Objects.requireNonNull(config.getOutput());
@@ -254,10 +244,9 @@
         if (config.getModulepaths().isEmpty()) {
             throw new Exception("Empty module paths");
         }
-        Path[] arr = new Path[config.getModulepaths().size()];
-        arr = config.getModulepaths().toArray(arr);
+
         ModuleFinder finder
-                = newModuleFinder(arr, config.getLimitmods(), config.getModules());
+                = newModuleFinder(config.getModulepaths(), config.getLimitmods(), config.getModules());
 
         // First create the image provider
         ImageProvider imageProvider
@@ -332,10 +321,12 @@
         return addMods;
     }
 
-    private static ModuleFinder newModuleFinder(Path[] paths,
-            Set<String> limitMods,
-            Set<String> addMods) {
-        ModuleFinder finder = ModuleFinder.of(paths);
+    public static ModuleFinder newModuleFinder(List<Path> paths,
+                                               Set<String> limitMods,
+                                               Set<String> addMods)
+    {
+
+        ModuleFinder finder = ModuleFinder.of(paths.toArray(new Path[0]));
 
         // jmods are located at link-time
         if (finder instanceof ConfigurableModuleFinder) {