41 import java.util.HashSet;
42 import java.util.List;
43 import java.util.Locale;
44 import java.util.Map;
45 import java.util.Map.Entry;
46 import java.util.MissingResourceException;
47 import java.util.ResourceBundle;
48 import java.util.Set;
49 import java.util.stream.Stream;
50
51 import jdk.tools.jlink.internal.plugins.ExcludeJmodSectionPlugin;
52 import jdk.tools.jlink.plugin.Plugin;
53 import jdk.tools.jlink.plugin.Plugin.Category;
54 import jdk.tools.jlink.builder.DefaultImageBuilder;
55 import jdk.tools.jlink.builder.ImageBuilder;
56 import jdk.tools.jlink.plugin.PluginException;
57 import jdk.tools.jlink.internal.Jlink.PluginsConfiguration;
58 import jdk.tools.jlink.internal.plugins.PluginsResourceBundle;
59 import jdk.tools.jlink.internal.plugins.DefaultCompressPlugin;
60 import jdk.tools.jlink.internal.plugins.StripDebugPlugin;
61 import jdk.internal.misc.SharedSecrets;
62
63 /**
64 *
65 * JLink and JImage tools shared helper.
66 */
67 public final class TaskHelper {
68
69 public static final String JLINK_BUNDLE = "jdk.tools.jlink.resources.jlink";
70 public static final String JIMAGE_BUNDLE = "jdk.tools.jimage.resources.jimage";
71
72 private static final String DEFAULTS_PROPERTY = "jdk.jlink.defaults";
73
74 public final class BadArgs extends Exception {
75
76 static final long serialVersionUID = 8765093759964640721L;
77
78 private BadArgs(String key, Object... args) {
79 super(bundleHelper.getMessage(key, args));
80 this.key = key;
81 this.args = args;
748 public PluginsConfiguration getPluginsConfig(Path output)
749 throws IOException, BadArgs {
750 return pluginOptions.getPluginsConfig(output);
751 }
752
753 public Path getExistingImage() {
754 return pluginOptions.existingImage;
755 }
756
757 public void showVersion(boolean full) {
758 log.println(version(full ? "full" : "release"));
759 }
760
761 public String version(String key) {
762 return System.getProperty("java.version");
763 }
764
765 static Layer createPluginsLayer(List<Path> paths) {
766
767 Path[] dirs = paths.toArray(new Path[0]);
768 ModuleFinder finder = SharedSecrets.getJavaLangModuleAccess()
769 .newModulePath(Runtime.version(), true, dirs);
770
771 Configuration bootConfiguration = Layer.boot().configuration();
772 try {
773 Configuration cf = bootConfiguration
774 .resolveRequiresAndUses(ModuleFinder.of(),
775 finder,
776 Collections.emptySet());
777 ClassLoader scl = ClassLoader.getSystemClassLoader();
778 return Layer.boot().defineModulesWithOneLoader(cf, scl);
779 } catch (Exception ex) {
780 // Malformed plugin modules (e.g.: same package in multiple modules).
781 throw new PluginException("Invalid modules in the plugins path: " + ex);
782 }
783 }
784
785 // Display all plugins
786 private static boolean showsPlugin(Plugin plugin) {
787 return (!Utils.isDisabled(plugin) && plugin.getOption() != null);
788 }
789 }
|
41 import java.util.HashSet;
42 import java.util.List;
43 import java.util.Locale;
44 import java.util.Map;
45 import java.util.Map.Entry;
46 import java.util.MissingResourceException;
47 import java.util.ResourceBundle;
48 import java.util.Set;
49 import java.util.stream.Stream;
50
51 import jdk.tools.jlink.internal.plugins.ExcludeJmodSectionPlugin;
52 import jdk.tools.jlink.plugin.Plugin;
53 import jdk.tools.jlink.plugin.Plugin.Category;
54 import jdk.tools.jlink.builder.DefaultImageBuilder;
55 import jdk.tools.jlink.builder.ImageBuilder;
56 import jdk.tools.jlink.plugin.PluginException;
57 import jdk.tools.jlink.internal.Jlink.PluginsConfiguration;
58 import jdk.tools.jlink.internal.plugins.PluginsResourceBundle;
59 import jdk.tools.jlink.internal.plugins.DefaultCompressPlugin;
60 import jdk.tools.jlink.internal.plugins.StripDebugPlugin;
61 import jdk.internal.module.ModulePath;
62
63 /**
64 *
65 * JLink and JImage tools shared helper.
66 */
67 public final class TaskHelper {
68
69 public static final String JLINK_BUNDLE = "jdk.tools.jlink.resources.jlink";
70 public static final String JIMAGE_BUNDLE = "jdk.tools.jimage.resources.jimage";
71
72 private static final String DEFAULTS_PROPERTY = "jdk.jlink.defaults";
73
74 public final class BadArgs extends Exception {
75
76 static final long serialVersionUID = 8765093759964640721L;
77
78 private BadArgs(String key, Object... args) {
79 super(bundleHelper.getMessage(key, args));
80 this.key = key;
81 this.args = args;
748 public PluginsConfiguration getPluginsConfig(Path output)
749 throws IOException, BadArgs {
750 return pluginOptions.getPluginsConfig(output);
751 }
752
753 public Path getExistingImage() {
754 return pluginOptions.existingImage;
755 }
756
757 public void showVersion(boolean full) {
758 log.println(version(full ? "full" : "release"));
759 }
760
761 public String version(String key) {
762 return System.getProperty("java.version");
763 }
764
765 static Layer createPluginsLayer(List<Path> paths) {
766
767 Path[] dirs = paths.toArray(new Path[0]);
768 ModuleFinder finder = new ModulePath(Runtime.version(), true, dirs);
769 Configuration bootConfiguration = Layer.boot().configuration();
770 try {
771 Configuration cf = bootConfiguration
772 .resolveRequiresAndUses(ModuleFinder.of(),
773 finder,
774 Collections.emptySet());
775 ClassLoader scl = ClassLoader.getSystemClassLoader();
776 return Layer.boot().defineModulesWithOneLoader(cf, scl);
777 } catch (Exception ex) {
778 // Malformed plugin modules (e.g.: same package in multiple modules).
779 throw new PluginException("Invalid modules in the plugins path: " + ex);
780 }
781 }
782
783 // Display all plugins
784 private static boolean showsPlugin(Plugin plugin) {
785 return (!Utils.isDisabled(plugin) && plugin.getOption() != null);
786 }
787 }
|