< prev index next >

src/jdk.jlink/share/classes/jdk/tools/jlink/builder/DefaultImageBuilder.java

Print this page

        

*** 53,62 **** --- 53,63 ---- import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.Properties; import java.util.Set; + import java.util.stream.Collectors; import jdk.tools.jlink.internal.BasicImageWriter; import jdk.tools.jlink.internal.plugins.FileCopierPlugin.SymImageFile; import jdk.tools.jlink.internal.ExecutableImage; import jdk.tools.jlink.plugin.ResourcePool; import jdk.tools.jlink.plugin.ResourcePoolEntry;
*** 157,167 **** if (i < modules.size() - 1) { builder.append(","); } i++; } ! props.setProperty("MODULES", builder.toString()); } @Override public void storeFiles(ResourcePool files) { try { --- 158,168 ---- if (i < modules.size() - 1) { builder.append(","); } i++; } ! props.setProperty("MODULES", quote(builder.toString())); } @Override public void storeFiles(ResourcePool files) { try {
*** 215,237 **** } catch (IOException ex) { throw new PluginException(ex); } } private Properties releaseProperties(ResourcePool pool) throws IOException { Properties props = new Properties(); Optional<ResourcePoolModule> javaBase = pool.moduleView().findModule("java.base"); javaBase.ifPresent(mod -> { // fill release information available from transformed "java.base" module! ModuleDescriptor desc = mod.descriptor(); ! desc.osName().ifPresent(s -> props.setProperty("OS_NAME", s)); ! desc.osVersion().ifPresent(s -> props.setProperty("OS_VERSION", s)); ! desc.osArch().ifPresent(s -> props.setProperty("OS_ARCH", s)); ! props.setProperty("JAVA_VERSION", System.getProperty("java.version")); }); - this.targetOsName = props.getProperty("OS_NAME"); if (this.targetOsName == null) { throw new PluginException("TargetPlatform attribute is missing for java.base module"); } Optional<ResourcePoolEntry> release = pool.findEntry("/java.base/release"); --- 216,257 ---- } catch (IOException ex) { throw new PluginException(ex); } } + // Parse version string and return a string that includes only version part + // leaving "pre", "build" information. See also: java.lang.Runtime.Version. + private static String parseVersion(String str) { + return Runtime.Version.parse(str). + version(). + stream(). + map(Object::toString). + collect(Collectors.joining(".")); + } + + private static String quote(String str) { + return "\"" + str + "\""; + } + private Properties releaseProperties(ResourcePool pool) throws IOException { Properties props = new Properties(); Optional<ResourcePoolModule> javaBase = pool.moduleView().findModule("java.base"); javaBase.ifPresent(mod -> { // fill release information available from transformed "java.base" module! ModuleDescriptor desc = mod.descriptor(); ! desc.osName().ifPresent(s -> { ! props.setProperty("OS_NAME", quote(s)); ! this.targetOsName = s; ! }); ! desc.osVersion().ifPresent(s -> props.setProperty("OS_VERSION", quote(s))); ! desc.osArch().ifPresent(s -> props.setProperty("OS_ARCH", quote(s))); ! desc.version().ifPresent(s -> props.setProperty("JAVA_VERSION", ! quote(parseVersion(s.toString())))); ! desc.version().ifPresent(s -> props.setProperty("JAVA_FULL_VERSION", ! quote(s.toString()))); }); if (this.targetOsName == null) { throw new PluginException("TargetPlatform attribute is missing for java.base module"); } Optional<ResourcePoolEntry> release = pool.findEntry("/java.base/release");
< prev index next >