8212048: Cleanup source code and fix issues discussed in preliminary review
Reviewed-by: almatvee
--- a/src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceImpl.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceImpl.java Wed Oct 17 13:50:11 2018 -0400
@@ -50,11 +50,11 @@
class SingleInstanceImpl {
static final String SI_FILEDIR = getTmpDir() + File.separator
- + "si" + File.separator;
- static final String SI_MAGICWORD = "javapackager.singleinstance.init";
- static final String SI_ACK = "javapackager.singleinstance.ack";
- static final String SI_STOP = "javapackager.singleinstance.stop";
- static final String SI_EOF = "javapackager.singleinstance.EOF";
+ + "si" + File.separator;
+ static final String SI_MAGICWORD = "jpackager.singleinstance.init";
+ static final String SI_ACK = "jpackager.singleinstance.ack";
+ static final String SI_STOP = "jpackager.singleinstance.stop";
+ static final String SI_EOF = "jpackager.singleinstance.EOF";
private final ArrayList<SingleInstanceListener> siListeners =
new ArrayList<>();
@@ -118,7 +118,6 @@
siListeners.add(sil);
}
}
-
}
class SingleInstanceServer {
--- a/src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceListener.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceListener.java Wed Oct 17 13:50:11 2018 -0400
@@ -29,7 +29,7 @@
* The {@code SingleInstanceListener} interface is used for implementing
* Single Instance functionality for Java Packager.
*
- * @since 10
+ * @since 12
*/
public interface SingleInstanceListener {
--- a/src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceNewActivation.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceNewActivation.java Wed Oct 17 13:50:11 2018 -0400
@@ -27,7 +27,7 @@
import java.util.Arrays;
-// This class is used for notifying Single Instance for Java Packager.
+// This class is used for notifying Single Instance for JPackager.
public class SingleInstanceNewActivation {
--- a/src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceService.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager.services/share/classes/jdk/packager/services/singleton/SingleInstanceService.java Wed Oct 17 13:50:11 2018 -0400
@@ -38,9 +38,9 @@
/**
* The {@code SingleInstanceService} class provides public methods for using
* Single Instance functionality for Java Packager. To use these methods,
- * the option named "-singleton" must be specified on javapackager command line.
+ * the option named "-singleton" must be specified on jpackager command line.
*
- * @since 10
+ * @since 12
*/
public class SingleInstanceService {
@@ -59,7 +59,7 @@
static final String ENCODING_PLATFORM_NAME = "UTF-8";
static final String ENCODING_UNICODE_NAME = "UTF-16LE";
- static final String APP_ID_PREFIX = "javapackager.si.";
+ static final String APP_ID_PREFIX = "jpackager.si.";
private SingleInstanceService() {}
--- a/src/jdk.packager.services/share/classes/module-info.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager.services/share/classes/module-info.java Wed Oct 17 13:50:11 2018 -0400
@@ -27,7 +27,7 @@
* Defines the services used by the jpackager tool.
*
* @moduleGraph
- * @since 11
+ * @since 12
*/
module jdk.packager.services {
exports jdk.packager.services.singleton;
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/builders/linux/LinuxAppImageBuilder.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/builders/linux/LinuxAppImageBuilder.java Wed Oct 17 13:50:11 2018 -0400
@@ -25,7 +25,6 @@
package jdk.packager.internal.builders.linux;
-
import jdk.packager.internal.BundlerParamInfo;
import jdk.packager.internal.IOUtils;
import jdk.packager.internal.Log;
@@ -164,7 +163,7 @@
}
- //it is static for the sake of sharing with "installer" bundlers
+ // it is static for the sake of sharing with "installer" bundlers
// that may skip calls to validate/bundle in this class!
public static File getRootDir(File outDir, Map<String, ? super Object> p) {
return new File(outDir, APP_FS_NAME.fetchFrom(p));
@@ -248,12 +247,8 @@
}
private void copyApplication() throws IOException {
- List<RelativeFileSet> appResourcesList =
- APP_RESOURCES_LIST.fetchFrom(params);
- if (appResourcesList == null) {
- throw new RuntimeException("Null app resources?");
- }
- for (RelativeFileSet appResources : appResourcesList) {
+ for (RelativeFileSet appResources :
+ APP_RESOURCES_LIST.fetchFrom(params)) {
if (appResources == null) {
throw new RuntimeException("Null app resources?");
}
@@ -264,9 +259,4 @@
}
}
- @Override
- protected String getCacheLocation(Map<String, ? super Object> params) {
- return "$CACHEDIR/";
- }
-
}
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/linux/LinuxAppBundler.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/linux/LinuxAppBundler.java Wed Oct 17 13:50:11 2018 -0400
@@ -40,8 +40,8 @@
import jdk.packager.internal.bundlers.BundleParams;
import jdk.packager.internal.builders.linux.LinuxAppImageBuilder;
import jdk.packager.internal.resources.linux.LinuxResources;
-
import jdk.packager.internal.JLinkBundlerHelper;
+import jdk.packager.internal.builders.AbstractAppImageBuilder;
import java.io.File;
import java.io.IOException;
@@ -54,13 +54,11 @@
import java.util.ResourceBundle;
import static jdk.packager.internal.StandardBundlerParam.*;
-import jdk.packager.internal.builders.AbstractAppImageBuilder;
public class LinuxAppBundler extends AbstractImageBundler {
- private static final ResourceBundle I18N =
- ResourceBundle.getBundle(
- "jdk.packager.internal.resources.linux.LinuxAppBundler");
+ private static final ResourceBundle I18N = ResourceBundle.getBundle(
+ "jdk.packager.internal.resources.linux.LinuxAppBundler");
protected static final String LINUX_BUNDLER_PREFIX =
BUNDLER_PREFIX + "linux" + File.separator;
@@ -83,58 +81,6 @@
},
(s, p) -> new File(s));
- public static final BundlerParamInfo<URL> RAW_EXECUTABLE_URL =
- new StandardBundlerParam<>(
- I18N.getString("param.raw-executable-url.name"),
- I18N.getString("param.raw-executable-url.description"),
- "linux.launcher.url",
- URL.class,
- params -> LinuxResources.class.getResource(EXECUTABLE_NAME),
- (s, p) -> {
- try {
- return new URL(s);
- } catch (MalformedURLException e) {
- Log.info(e.toString());
- return null;
- }
- });
-
- //Subsetting of JRE is restricted.
- //JRE README defines what is allowed to strip:
- // http://www.oracle.com/technetwork/java/javase/jre-8-readme-2095710.html
- //
- public static final BundlerParamInfo<Rule[]> LINUX_JRE_RULES =
- new StandardBundlerParam<>(
- "",
- "",
- ".linux.runtime.rules",
- Rule[].class,
- params -> new Rule[]{
- Rule.prefixNeg("/bin"),
- Rule.prefixNeg("/plugin"),
- //Rule.prefixNeg("/lib/ext"),
- //need some of jars there for https to work
- Rule.suffix("deploy.jar"), //take deploy.jar
- Rule.prefixNeg("/lib/deploy"),
- Rule.prefixNeg("/lib/desktop"),
- Rule.substrNeg("libnpjp2.so")
- },
- (s, p) -> null
- );
-
- public static final BundlerParamInfo<RelativeFileSet> LINUX_RUNTIME =
- new StandardBundlerParam<>(
- I18N.getString("param.runtime.name"),
- I18N.getString("param.runtime.description"),
- BundleParams.PARAM_RUNTIME,
- RelativeFileSet.class,
- params -> JreUtils.extractJreAsRelativeFileSet(
- System.getProperty("java.home"),
- LINUX_JRE_RULES.fetchFrom(params)),
- (s, p) -> JreUtils.extractJreAsRelativeFileSet(s,
- LINUX_JRE_RULES.fetchFrom(p))
- );
-
public static final BundlerParamInfo<String> LINUX_INSTALL_DIR =
new StandardBundlerParam<>(
I18N.getString("param.linux-install-dir.name"),
@@ -196,7 +142,7 @@
return true;
}
- //it is static for the sake of sharing with "installer" bundlers
+ // it is static for the sake of sharing with "installer" bundlers
// that may skip calls to validate/bundle in this class!
public static File getRootDir(File outDir, Map<String, ? super Object> p) {
return new File(outDir, APP_FS_NAME.fetchFrom(p));
@@ -228,10 +174,6 @@
return predefined;
}
return rootDirectory;
- } catch (IOException ex) {
- Log.info("Exception: "+ex);
- Log.debug(ex);
- return null;
} catch (Exception ex) {
Log.info("Exception: "+ex);
Log.debug(ex);
@@ -251,10 +193,6 @@
StandardBundlerParam.copyPredefinedRuntimeImage(p, appBuilder);
}
return rootDirectory;
- } catch (IOException ex) {
- Log.info("Exception: "+ex);
- Log.debug(ex);
- return null;
} catch (Exception ex) {
Log.info("Exception: "+ex);
Log.debug(ex);
@@ -327,11 +265,9 @@
CLASSPATH,
JVM_OPTIONS,
JVM_PROPERTIES,
- LINUX_RUNTIME,
MAIN_CLASS,
MAIN_JAR,
PREFERENCES_ID,
- PRELOADER_CLASS,
VERSION,
VERBOSE
);
@@ -345,8 +281,6 @@
@Override
public boolean supported() {
- // TODO: check that it really works on Solaris (in case we need it)
- return (Platform.getPlatform() == Platform.LINUX) ||
- (Platform.getPlatform() == Platform.SOLARIS);
+ return (Platform.getPlatform() == Platform.LINUX);
}
}
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/linux/LinuxDebBundler.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/linux/LinuxDebBundler.java Wed Oct 17 13:50:11 2018 -0400
@@ -66,8 +66,8 @@
// Debian rules for package naming are used here
// https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Source
//
- // Package names must consist only of lower case letters (a-z), digits (0-9),
- // plus (+) and minus (-) signs, and periods (.).
+ // Package names must consist only of lower case letters (a-z),
+ // digits (0-9), plus (+) and minus (-) signs, and periods (.).
// They must be at least two characters long and
// must start with an alphanumeric character.
//
@@ -191,9 +191,9 @@
for (RelativeFileSet rfs :
APP_RESOURCES_LIST.fetchFrom(params)) {
if (rfs.contains(licFileStr)) {
- return new String(IOUtils.readFully(
+ return new String(Files.readAllBytes((
new File(rfs.getBaseDirectory(),
- licFileStr)));
+ licFileStr)).toPath()));
}
}
}
@@ -378,7 +378,7 @@
outdir.getAbsolutePath()));
}
- //we want to create following structure
+ // we want to create following structure
// <package-name>
// DEBIAN
// control (file with main package details)
@@ -431,7 +431,7 @@
/*
* set permissions with a string like "rwxr-xr-x"
*
- * This cannot be directly backport to 22u which is unfortunately built with 1.6
+ * This cannot be directly backport to 22u which is built with 1.6
*/
private void setPermissions(File file, String permissions) {
Set<PosixFilePermission> filePermissions =
@@ -550,7 +550,7 @@
File iconTarget = getConfig_IconFile(rootDir, params);
File icon = ICON_PNG.fetchFrom(params);
if (!Arguments.CREATE_JRE_INSTALLER.fetchFrom(params)) {
- // prepare installer icon
+ // prepare installer icon
if (icon == null || !icon.exists()) {
fetchResource(LinuxAppBundler.LINUX_BUNDLER_PREFIX
+ iconTarget.getName(),
@@ -598,7 +598,7 @@
w.close();
}
- //prepare installer icon
+ // prepare installer icon
iconTarget = getConfig_IconFile(rootDir, secondaryLauncher);
icon = ICON_PNG.fetchFrom(secondaryLauncher);
if (icon == null || !icon.exists()) {
@@ -619,7 +619,7 @@
DROP_IN_RESOURCES_ROOT.fetchFrom(params));
}
- //postinst copying of desktop icon
+ // postinst copying of desktop icon
installScripts.append(
" xdg-desktop-menu install --novendor ");
installScripts.append(LINUX_INSTALL_DIR.fetchFrom(params));
@@ -672,11 +672,11 @@
}
String description = FA_DESCRIPTION.fetchFrom(assoc);
- File faIcon = FA_ICON.fetchFrom(assoc); //TODO FA_ICON_PNG
+ File faIcon = FA_ICON.fetchFrom(assoc);
List<String> extensions = FA_EXTENSIONS.fetchFrom(assoc);
if (extensions == null) {
Log.info(I18N.getString(
- "message.creating-association-with-null-extension"));
+ "message.creating-association-with-null-extension"));
}
List<String> mimes = FA_CONTENT_TYPE.fetchFrom(assoc);
@@ -752,7 +752,7 @@
.append(dashMime)
.append("\n");
- //x dg-icon-resource uninstall --context mimetypes
+ // x dg-icon-resource uninstall --context mimetypes
// --size 64 awesomeapp_fa_1.png
// application-x.vnd-awesome
deregistrations.append(
@@ -800,7 +800,7 @@
w.write(content);
w.close();
}
- //prepare control file
+ // prepare control file
Writer w = new BufferedWriter(new FileWriter(
getConfig_ControlFile(params)));
String content = preprocessTextResource(
@@ -841,7 +841,8 @@
w.close();
setPermissions(getConfig_PrermFile(params), "rwxr-xr-x");
- w = new BufferedWriter(new FileWriter(getConfig_PostinstallFile(params)));
+ w = new BufferedWriter(new FileWriter(
+ getConfig_PostinstallFile(params)));
content = preprocessTextResource(
LinuxAppBundler.LINUX_BUNDLER_PREFIX
+ getConfig_PostinstallFile(params).getName(),
@@ -964,7 +965,7 @@
outFile.getParentFile().mkdirs();
- //run dpkg
+ // run dpkg
ProcessBuilder pb = new ProcessBuilder(
"fakeroot", TOOL_DPKG, "-b",
FULL_PACKAGE_NAME.fetchFrom(params),
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/linux/LinuxRpmBundler.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/linux/LinuxRpmBundler.java Wed Oct 17 13:50:11 2018 -0400
@@ -144,7 +144,7 @@
if (params.containsKey(VENDOR.getID())) {
vendor = VENDOR.fetchFrom(params);
} else {
- vendor = "javapackager";
+ vendor = "jpackager";
}
String appName = APP_FS_NAME.fetchFrom(params);
@@ -160,7 +160,8 @@
private final static String DEFAULT_ICON = "javalogo_white_32.png";
private final static String DEFAULT_SPEC_TEMPLATE = "template.spec";
- private final static String DEFAULT_DESKTOP_FILE_TEMPLATE = "template.desktop";
+ private final static String DEFAULT_DESKTOP_FILE_TEMPLATE =
+ "template.desktop";
public final static String TOOL_RPMBUILD = "rpmbuild";
public final static double TOOL_RPMBUILD_MIN_VERSION = 4.0d;
@@ -202,8 +203,8 @@
I18N.getString("error.parameters-null"),
I18N.getString("error.parameters-null.advice"));
- //run basic validation to ensure requirements are met
- //we are not interested in return code, only possible exception
+ // run basic validation to ensure requirements are met
+ // we are not interested in return code, only possible exception
APP_BUNDLER.fetchFrom(p).doValidate(p);
// validate license file, if used, exists in the proper place
@@ -225,7 +226,7 @@
}
}
- //validate presense of required tools
+ // validate presense of required tools
if (!testTool(TOOL_RPMBUILD, TOOL_RPMBUILD_MIN_VERSION)){
throw new ConfigException(
MessageFormat.format(
@@ -332,7 +333,7 @@
imageDir.getAbsolutePath()));
}
} catch (IOException ex) {
- //noinspection ReturnInsideFinallyBlock
+ // noinspection ReturnInsideFinallyBlock
Log.debug(ex.getMessage());
return null;
}
@@ -409,7 +410,7 @@
File rootDir =
LinuxAppBundler.getRootDir(RPM_IMAGE_DIR.fetchFrom(params), params);
- //prepare installer icon
+ // prepare installer icon
File iconTarget = getConfig_IconFile(rootDir, params);
File icon = LinuxAppBundler.ICON_PNG.fetchFrom(params);
if (!Arguments.CREATE_JRE_INSTALLER.fetchFrom(params)) {
@@ -442,7 +443,7 @@
data.get("APPLICATION_FS_NAME"));
secondaryLauncherData.put("DESKTOP_MIMES", "");
- //prepare desktop shortcut
+ // prepare desktop shortcut
Writer w = new BufferedWriter(new FileWriter(
getConfig_DesktopShortcutFile(rootDir, secondaryLauncher)));
String content = preprocessTextResource(
@@ -456,7 +457,7 @@
w.write(content);
w.close();
- //prepare installer icon
+ // prepare installer icon
iconTarget = getConfig_IconFile(rootDir, secondaryLauncher);
icon = LinuxAppBundler.ICON_PNG.fetchFrom(secondaryLauncher);
if (icon == null || !icon.exists()) {
@@ -477,7 +478,7 @@
DROP_IN_RESOURCES_ROOT.fetchFrom(params));
}
- //post copying of desktop icon
+ // post copying of desktop icon
installScripts.append("xdg-desktop-menu install --novendor ");
installScripts.append(LINUX_INSTALL_DIR.fetchFrom(params));
installScripts.append("/");
@@ -487,7 +488,7 @@
"APPLICATION_LAUNCHER_FILENAME"));
installScripts.append(".desktop\n");
- //preun cleanup of desktop icon
+ // preun cleanup of desktop icon
removeScripts.append("xdg-desktop-menu uninstall --novendor ");
removeScripts.append(LINUX_INSTALL_DIR.fetchFrom(params));
removeScripts.append("/");
@@ -600,7 +601,8 @@
// --size 64 awesomeapp_fa_1.png
// application-x.vnd-awesome
registrations.append(
- "xdg-icon-resource install --context mimetypes --size ")
+ "xdg-icon-resource install "
+ + "--context mimetypes --size ")
.append(size)
.append(" ")
.append(LINUX_INSTALL_DIR.fetchFrom(params))
@@ -616,7 +618,8 @@
// --size 64 awesomeapp_fa_1.png
// application-x.vnd-awesome
deregistrations.append(
- "xdg-icon-resource uninstall --context mimetypes --size ")
+ "xdg-icon-resource uninstall "
+ + "--context mimetypes --size ")
.append(size)
.append(" ")
.append(LINUX_INSTALL_DIR.fetchFrom(params))
@@ -659,7 +662,7 @@
w.close();
}
- //prepare spec file
+ // prepare spec file
Writer w = new BufferedWriter(
new FileWriter(getConfig_SpecFile(params)));
String content = preprocessTextResource(
@@ -688,7 +691,8 @@
APP_FS_NAME.fetchFrom(params));
data.put("INSTALLATION_DIRECTORY", LINUX_INSTALL_DIR.fetchFrom(params));
data.put("XDG_PREFIX", XDG_FILE_PREFIX.fetchFrom(params));
- data.put("DEPLOY_BUNDLE_CATEGORY", CATEGORY.fetchFrom(params)); //TODO rpm categories
+ data.put("DEPLOY_BUNDLE_CATEGORY", CATEGORY.fetchFrom(params));
+ // TODO rpm categories
data.put("APPLICATION_DESCRIPTION", DESCRIPTION.fetchFrom(params));
data.put("APPLICATION_SUMMARY", TITLE.fetchFrom(params));
data.put("APPLICATION_LICENSE_TYPE", LICENSE_TYPE.fetchFrom(params));
@@ -732,13 +736,11 @@
ProcessBuilder pb = new ProcessBuilder(
TOOL_RPMBUILD,
"-bb", getConfig_SpecFile(params).getAbsolutePath(),
-// "--define", "%__jar_repack %{nil}",
-//debug: improves build time (but will require unpack to install?)
"--define", "%_sourcedir "
+ RPM_IMAGE_DIR.fetchFrom(params).getAbsolutePath(),
- //save result to output dir
+ // save result to output dir
"--define", "%_rpmdir " + outdir.getAbsolutePath(),
- //do not use other system directories to build as current user
+ // do not use other system directories to build as current user
"--define", "%_topdir " + broot.getAbsolutePath()
);
pb = pb.directory(RPM_IMAGE_DIR.fetchFrom(params));
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/builders/linux/LinuxAppImageBuilder.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/builders/linux/LinuxAppImageBuilder.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,28 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
param.icon-png.name=.png Icon
param.icon-png.description=Icon for the application, in PNG format.
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/builders/linux/LinuxAppImageBuilder_ja.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/builders/linux/LinuxAppImageBuilder_ja.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
param.icon-png.name=.png\u30A2\u30A4\u30B3\u30F3
param.icon-png.description=PNG\u5F62\u5F0F\u3067\u306E\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u30A2\u30A4\u30B3\u30F3\u3002
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/builders/linux/LinuxAppImageBuilder_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/builders/linux/LinuxAppImageBuilder_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
param.icon-png.name=.png \u56FE\u6807
param.icon-png.description=\u5E94\u7528\u7A0B\u5E8F\u7684\u56FE\u6807, \u91C7\u7528 PNG \u683C\u5F0F\u3002
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxAppBundler.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxAppBundler.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,15 +1,35 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=Linux Application Image
bundler.description=A Directory based image of a linux Application with an optionally co-bundled JRE. Used as a base for the Installer bundlers.
-param.raw-executable-url.name=Launcher URL
-param.raw-executable-url.description=Override the packager default launcher with a custom launcher.
-
param.icon-png.name=.png Icon
param.icon-png.description=Icon for the application, in PNG format.
-param.runtime.name=JRE
-param.runtime.description=The Java Runtime to co-bundle. The default value is the current JRE running the bundler. A value of null will cause no JRE to be co-bundled and the system JRE will be used to launch the application.
-
param.linux-install-dir.name=Linux Installation Directory
param.linux-install-dir.description=Installation directory of the application on Linux.
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxAppBundler_ja.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxAppBundler_ja.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,15 +1,35 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=Linux\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30A4\u30E1\u30FC\u30B8
bundler.description=\u30AA\u30D7\u30B7\u30E7\u30F3\u3067JRE\u304C\u30D0\u30F3\u30C9\u30EB\u3055\u308C\u3066\u3044\u308BLinux\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u30FB\u30D9\u30FC\u30B9\u306E\u30A4\u30E1\u30FC\u30B8\u3002\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9\u30FB\u30D0\u30F3\u30C9\u30E9\u306E\u30D9\u30FC\u30B9\u3068\u3057\u3066\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002
-param.raw-executable-url.name=\u30E9\u30F3\u30C1\u30E3URL
-param.raw-executable-url.description=\u30D1\u30C3\u30B1\u30FC\u30B8\u30E3\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30E9\u30F3\u30C1\u30E3\u3092\u30AB\u30B9\u30BF\u30E0\u30FB\u30E9\u30F3\u30C1\u30E3\u3067\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u307E\u3059\u3002
-
param.icon-png.name=.png\u30A2\u30A4\u30B3\u30F3
param.icon-png.description=PNG\u5F62\u5F0F\u3067\u306E\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u30A2\u30A4\u30B3\u30F3\u3002
-param.runtime.name=JRE
-param.runtime.description=\u30D0\u30F3\u30C9\u30EB\u3059\u308BJava\u30E9\u30F3\u30BF\u30A4\u30E0\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u306F\u3001\u30D0\u30F3\u30C9\u30E9\u3092\u5B9F\u884C\u3057\u3066\u3044\u308B\u73FE\u5728\u306EJRE\u3067\u3059\u3002\u5024\u304Cnull\u306E\u5834\u5408\u3001JRE\u306F\u30D0\u30F3\u30C9\u30EB\u3055\u308C\u305A\u3001\u30B7\u30B9\u30C6\u30E0\u306EJRE\u304C\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u8D77\u52D5\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002
-
error.parameters-null=\u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30DE\u30C3\u30D7\u304Cnull\u3067\u3059\u3002
error.parameters-null.advice=\u975Enull\u30D1\u30E9\u30E1\u30FC\u30BF\u30FB\u30DE\u30C3\u30D7\u3067\u6E21\u3057\u3066\u304F\u3060\u3055\u3044\u3002
error.no-linux-resources=Java\u30D1\u30C3\u30B1\u30FC\u30B8\u30E3\u306FLinux\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u307E\u305B\u3093\u3002
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxAppBundler_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxAppBundler_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,15 +1,35 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=Linux \u5E94\u7528\u7A0B\u5E8F\u6620\u50CF
bundler.description=\u4E00\u4E2A\u57FA\u4E8E\u76EE\u5F55\u7684 linux \u5E94\u7528\u7A0B\u5E8F\u6620\u50CF, \u53EF\u4EE5\u9009\u62E9\u6027\u5730\u5E26\u6709\u5171\u540C\u6253\u5305\u7684 JRE\u3002\u7528\u4F5C\u5B89\u88C5\u7A0B\u5E8F\u6253\u5305\u7A0B\u5E8F\u7684\u57FA\u7840\u3002
-param.raw-executable-url.name=\u542F\u52A8\u7A0B\u5E8F URL
-param.raw-executable-url.description=\u4F7F\u7528\u5B9A\u5236\u542F\u52A8\u7A0B\u5E8F\u8986\u76D6\u6253\u5305\u7A0B\u5E8F\u9ED8\u8BA4\u542F\u52A8\u7A0B\u5E8F\u3002
-
param.icon-png.name=.png \u56FE\u6807
param.icon-png.description=\u5E94\u7528\u7A0B\u5E8F\u7684\u56FE\u6807, \u91C7\u7528 PNG \u683C\u5F0F\u3002
-param.runtime.name=JRE
-param.runtime.description=\u8981\u5171\u540C\u6253\u5305\u7684 Java \u8FD0\u884C\u65F6\u3002\u9ED8\u8BA4\u503C\u4E3A\u8FD0\u884C\u6253\u5305\u7A0B\u5E8F\u7684\u5F53\u524D JRE\u3002\u503C\u4E3A\u7A7A\u503C\u5C06\u5BFC\u81F4\u4E0D\u4F1A\u5171\u540C\u6253\u5305\u4EFB\u4F55 JRE, \u5E76\u4E14\u5C06\u4F7F\u7528\u7CFB\u7EDF JRE \u6765\u542F\u52A8\u5E94\u7528\u7A0B\u5E8F\u3002
-
error.parameters-null=\u53C2\u6570\u6620\u5C04\u4E3A\u7A7A\u503C\u3002
error.parameters-null.advice=\u8BF7\u4F20\u5165\u975E\u7A7A\u53C2\u6570\u6620\u5C04\u3002
error.no-linux-resources=Java \u6253\u5305\u7A0B\u5E8F\u4E0D\u652F\u6301 Linux\u3002
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxDebBundler.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxDebBundler.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=DEB Installer
bundler.description=Linux Debian Bundle.
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxDebBundler_ja.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxDebBundler_ja.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=DEB\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9
bundler.description=Linux Debian\u30D0\u30F3\u30C9\u30EB\u3002
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxDebBundler_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxDebBundler_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=DEB \u5B89\u88C5\u7A0B\u5E8F
bundler.description=Linux Debian \u5305\u3002
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxRpmBundler.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxRpmBundler.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=RPM Bundle
bundler.description=Redhat Package Manager (RPM) bundler.
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxRpmBundler_ja.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxRpmBundler_ja.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=RPM\u30D0\u30F3\u30C9\u30EB
bundler.description=RedHat Package Manager (RPM)\u306E\u30D0\u30F3\u30C9\u30E9\u3002
--- a/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxRpmBundler_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/classes/jdk/packager/internal/resources/linux/LinuxRpmBundler_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=RPM \u5305
bundler.description=Redhat Package Manager (RPM) \u6253\u5305\u7A0B\u5E8F\u3002
--- a/src/jdk.packager/linux/native/launcher/launcher.cpp Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/linux/native/launcher/launcher.cpp Wed Oct 17 13:50:11 2018 -0400
@@ -70,12 +70,14 @@
start_launcher start = (start_launcher)dlsym(library, "start_launcher");
stop_launcher stop = (stop_launcher)dlsym(library, "stop_launcher");
- if (start(argc, argv) == true) {
- result = 0;
-
- if (stop != NULL) {
+ if (start != NULL && stop != NULL) {
+ if (start(argc, argv) == true) {
+ result = 0;
stop();
}
+ } else {
+ fprintf(stderr,
+ "cannot find start_launcher and stop_launcher in libpackager.so");
}
dlclose(library);
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/builders/mac/MacAppImageBuilder.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/builders/mac/MacAppImageBuilder.java Wed Oct 17 13:50:11 2018 -0400
@@ -25,17 +25,14 @@
package jdk.packager.internal.builders.mac;
-
import jdk.packager.internal.BundlerParamInfo;
import jdk.packager.internal.IOUtils;
import jdk.packager.internal.Log;
import jdk.packager.internal.Platform;
import jdk.packager.internal.RelativeFileSet;
import jdk.packager.internal.StandardBundlerParam;
-
import jdk.packager.internal.Arguments;
import jdk.packager.internal.resources.mac.MacResources;
-
import jdk.packager.internal.builders.AbstractAppImageBuilder;
import java.io.BufferedWriter;
@@ -71,7 +68,6 @@
import static jdk.packager.internal.mac.MacBaseInstallerBundler.*;
import static jdk.packager.internal.mac.MacAppBundler.*;
-
public class MacAppImageBuilder extends AbstractAppImageBuilder {
private static final ResourceBundle I18N =
@@ -100,54 +96,6 @@
private static List<String> keyChains;
- private static Map<String, String> getMacCategories() {
- Map<String, String> map = new HashMap<>();
- map.put("Business", "public.app-category.business");
- map.put("Developer Tools", "public.app-category.developer-tools");
- map.put("Education", "public.app-category.education");
- map.put("Entertainment", "public.app-category.entertainment");
- map.put("Finance", "public.app-category.finance");
- map.put("Games", "public.app-category.games");
- map.put("Graphics & Design", "public.app-category.graphics-design");
- map.put("Healthcare & Fitness",
- "public.app-category.healthcare-fitness");
- map.put("Lifestyle", "public.app-category.lifestyle");
- map.put("Medical", "public.app-category.medical");
- map.put("Music", "public.app-category.music");
- map.put("News", "public.app-category.news");
- map.put("Photography", "public.app-category.photography");
- map.put("Productivity", "public.app-category.productivity");
- map.put("Reference", "public.app-category.reference");
- map.put("Social Networking", "public.app-category.social-networking");
- map.put("Sports", "public.app-category.sports");
- map.put("Travel", "public.app-category.travel");
- map.put("Utilities", "public.app-category.utilities");
- map.put("Video", "public.app-category.video");
- map.put("Weather", "public.app-category.weather");
-
- map.put("Action Games", "public.app-category.action-games");
- map.put("Adventure Games", "public.app-category.adventure-games");
- map.put("Arcade Games", "public.app-category.arcade-games");
- map.put("Board Games", "public.app-category.board-games");
- map.put("Card Games", "public.app-category.card-games");
- map.put("Casino Games", "public.app-category.casino-games");
- map.put("Dice Games", "public.app-category.dice-games");
- map.put("Educational Games", "public.app-category.educational-games");
- map.put("Family Games", "public.app-category.family-games");
- map.put("Kids Games", "public.app-category.kids-games");
- map.put("Music Games", "public.app-category.music-games");
- map.put("Puzzle Games", "public.app-category.puzzle-games");
- map.put("Racing Games", "public.app-category.racing-games");
- map.put("Role Playing Games", "public.app-category.role-playing-games");
- map.put("Simulation Games", "public.app-category.simulation-games");
- map.put("Sports Games", "public.app-category.sports-games");
- map.put("Strategy Games", "public.app-category.strategy-games");
- map.put("Trivia Games", "public.app-category.trivia-games");
- map.put("Word Games", "public.app-category.word-games");
-
- return map;
- }
-
public static final BundlerParamInfo<Boolean>
MAC_CONFIGURE_LAUNCHER_IN_PLIST = new StandardBundlerParam<>(
I18N.getString("param.configure-launcher-in-plist"),
@@ -243,7 +191,7 @@
(s, p) -> new File(s));
public static final StandardBundlerParam<Boolean> SIGN_BUNDLE =
- new StandardBundlerParam<>(
+ new StandardBundlerParam<>(
I18N.getString("param.sign-bundle.name"),
I18N.getString("param.sign-bundle.description"),
Arguments.CLIOptions.MAC_SIGN.getId(),
@@ -322,11 +270,6 @@
}
}
- @Override
- protected String getCacheLocation(Map<String, ? super Object> params) {
- return "$CACHEDIR/";
- }
-
public static boolean validCFBundleVersion(String v) {
// CFBundleVersion (String - iOS, OS X) specifies the build version
// number of the bundle, which identifies an iteration (released or
@@ -618,21 +561,16 @@
newline = "\n";
}
- String preloader = PRELOADER_CLASS.fetchFrom(params);
- if (preloader != null) {
- sb.append(newline)
- .append(" <string>-Djavafx.preloader=")
- .append(preloader)
- .append("</string>");
- }
-
data.put("DEPLOY_JVM_OPTIONS", sb.toString());
sb = new StringBuilder();
List<String> args = ARGUMENTS.fetchFrom(params);
- newline = ""; //So we don't add unneccessary extra line after last append
+ newline = "";
+ // So we don't add unneccessary extra line after last append
+
for (String o : args) {
- sb.append(newline).append(" <string>").append(o).append("</string>");
+ sb.append(newline).append(" <string>").append(o).append(
+ "</string>");
newline = "\n";
}
data.put("DEPLOY_ARGUMENTS", sb.toString());
@@ -663,10 +601,9 @@
}
List<String> mimeTypes = FA_CONTENT_TYPE.fetchFrom(fileAssociation);
- String itemContentType = MAC_CF_BUNDLE_IDENTIFIER.fetchFrom(params) +
- "." + ((extensions == null || extensions.isEmpty())
- ? "mime"
- : extensions.get(0));
+ String itemContentType = MAC_CF_BUNDLE_IDENTIFIER.fetchFrom(params)
+ + "." + ((extensions == null || extensions.isEmpty())
+ ? "mime" : extensions.get(0));
String description = FA_DESCRIPTION.fetchFrom(fileAssociation);
File icon = FA_ICON.fetchFrom(fileAssociation); //TODO FA_ICON_ICNS
@@ -697,7 +634,6 @@
.append("\n");
if (icon != null && icon.exists()) {
- //?
bundleDocumentTypes
.append(" <key>CFBundleTypeIconFile</key>\n")
.append(" <string>")
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacAppBundler.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacAppBundler.java Wed Oct 17 13:50:11 2018 -0400
@@ -37,7 +37,6 @@
import jdk.packager.internal.UnsupportedPlatformException;
import jdk.packager.internal.builders.mac.MacAppImageBuilder;
import jdk.packager.internal.resources.mac.MacResources;
-
import jdk.packager.internal.JLinkBundlerHelper;
import java.io.File;
@@ -309,7 +308,7 @@
}
}
- //to be used by chained bundlers, e.g. by EXE bundler to avoid
+ // to be used by chained bundlers, e.g. by EXE bundler to avoid
// skipping validation if p.type does not include "image"
public boolean doValidate(Map<String, ? super Object> p)
throws UnsupportedPlatformException, ConfigException {
@@ -516,26 +515,4 @@
return Platform.getPlatform() == Platform.MAC;
}
-// private void createLauncherForEntryPoint(Map<String, ? super Object> p,
-// File rootDirectory) throws IOException {
-// prepareConfigFiles(p);
-//
-// if (LAUNCHER_CFG_FORMAT.fetchFrom(p).equals(CFG_FORMAT_PROPERTIES)) {
-// writeCfgFile(p, rootDirectory);
-// } else {
-// writeCfgFile(p, new File(rootDirectory, getLauncherCfgName(p)),
-// "$APPDIR/PlugIns/Java.runtime");
-// }
-//
-// // Copy executable root folder
-// File executableFile = new File(rootDirectory,
-// "Contents/MacOS/" + getLauncherName(p));
-// IOUtils.copyFromURL(
-// RAW_EXECUTABLE_URL.fetchFrom(p),
-// executableFile);
-// executableFile.setExecutable(true, false);
-//
-// }
-//
-
}
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacAppStoreBundler.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacAppStoreBundler.java Wed Oct 17 13:50:11 2018 -0400
@@ -161,9 +161,6 @@
// icns needs @2 versions, so load in the @2 default
p.put(DEFAULT_ICNS_ICON.getID(), TEMPLATE_BUNDLE_ICON_HIDPI);
- // next we need to change the jdk/jre stripping to strip gstreamer
-// p.put(MAC_RULES.getID(), createMacAppStoreRuntimeRules(p));
-
// now we create the app
File appImageDir = APP_IMAGE_BUILD_ROOT.fetchFrom(p);
try {
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacBaseInstallerBundler.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacBaseInstallerBundler.java Wed Oct 17 13:50:11 2018 -0400
@@ -59,7 +59,7 @@
ResourceBundle.getBundle(
"jdk.packager.internal.resources.mac.MacBaseInstallerBundler");
- //This could be generalized more to be for any type of Image Bundler
+ // This could be generalized more to be for any type of Image Bundler
public static final BundlerParamInfo<MacAppBundler> APP_BUNDLER =
new StandardBundlerParam<>(
I18N.getString("param.app-bundler.name"),
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacCertificate.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacCertificate.java Wed Oct 17 13:50:11 2018 -0400
@@ -26,6 +26,8 @@
package jdk.packager.internal.mac;
import jdk.packager.internal.IOUtils;
+import jdk.packager.internal.Log;
+
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
@@ -119,10 +121,8 @@
DateFormat df = new SimpleDateFormat(
"MMM dd kk:mm:ss yyyy z", Locale.ENGLISH);
result = df.parse(output);
- }
- catch (IOException ioe) {
- }
- catch (ParseException ex) {
+ } catch (IOException | ParseException ex) {
+ Log.debug(ex);
}
return result;
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacDmgBundler.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacDmgBundler.java Wed Oct 17 13:50:11 2018 -0400
@@ -28,15 +28,15 @@
import jdk.packager.internal.*;
import jdk.packager.internal.IOUtils;
import jdk.packager.internal.resources.mac.MacResources;
+import jdk.packager.internal.Arguments;
import java.io.*;
+import java.nio.file.Files;
import java.text.MessageFormat;
import java.util.*;
-import jdk.packager.internal.Arguments;
import static jdk.packager.internal.StandardBundlerParam.*;
-
public class MacDmgBundler extends MacBaseInstallerBundler {
private static final ResourceBundle I18N =
@@ -63,7 +63,6 @@
baseResourceLoader = MacResources.class;
}
- //@Override
public File bundle(Map<String, ? super Object> params, File outdir) {
Log.info(MessageFormat.format(I18N.getString("message.building-dmg"),
APP_NAME.fetchFrom(params)));
@@ -216,12 +215,12 @@
if (licFile == null) {
// this is NPE protection,
- // validate should have caught it's absence
- // so we don't complain or throw an error
+ // validate should have already caught it's absence
+ Log.error("Licence file is null");
return;
}
- byte[] licenseContentOriginal = IOUtils.readFully(licFile);
+ byte[] licenseContentOriginal = Files.readAllBytes(licFile.toPath());
String licenseInBase64 =
Base64.getEncoder().encodeToString(licenseContentOriginal);
@@ -287,14 +286,14 @@
// In theory we need to extract name from results of attach command
// However, this will be a problem for customization as name will
// possibly change every time and developer will not be able to fix it
- // As we are using tmp dir chance we get "different" namr are low =>
+ // As we are using tmp dir chance we get "different" name are low =>
// Use fixed name we used for bundle
prepareDMGSetupScript(APP_NAME.fetchFrom(params), params);
return true;
}
- //name of post-image script
+ // name of post-image script
private File getConfig_Script(Map<String, ? super Object> params) {
return new File(CONFIG_ROOT.fetchFrom(params),
APP_NAME.fetchFrom(params) + "-post-image.sh");
@@ -314,7 +313,7 @@
}
}
- //generic find attempt
+ // generic find attempt
try {
ProcessBuilder pb = new ProcessBuilder("xcrun", "-find", "SetFile");
Process p = pb.start();
@@ -364,7 +363,7 @@
String hdiUtilVerbosityFlag = Log.isDebug() ? "-verbose" : "-quiet";
- //create temp image
+ // create temp image
ProcessBuilder pb = new ProcessBuilder(
hdiutil,
"create",
@@ -376,7 +375,7 @@
"-format", "UDRW");
IOUtils.exec(pb, ECHO_MODE.fetchFrom(p));
- //mount temp image
+ // mount temp image
pb = new ProcessBuilder(
hdiutil,
"attach",
@@ -388,7 +387,7 @@
File mountedRoot =
new File(imagesRoot.getAbsolutePath(), APP_NAME.fetchFrom(p));
- //volume icon
+ // volume icon
File volumeIconFile = new File(mountedRoot, ".VolumeIcon.icns");
IOUtils.copyFile(getConfig_VolumeIcon(p),
volumeIconFile);
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacPkgBundler.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/mac/MacPkgBundler.java Wed Oct 17 13:50:11 2018 -0400
@@ -161,7 +161,6 @@
baseResourceLoader = MacResources.class;
}
- // @Override
public File bundle(Map<String, ? super Object> params, File outdir) {
Log.info(MessageFormat.format(I18N.getString("message.building-pkg"),
APP_NAME.fetchFrom(params)));
@@ -374,10 +373,10 @@
// this is NPE protection, validate should have caught it's absence
// so we don't complain or throw an error
if (licFile != null) {
- out.println("<license" +
- " file=\"" + licFile.getAbsolutePath() + "\"" +
- " mime-type=\"text/rtf\"" +
- "/>");
+ out.println("<license"
+ + " file=\"" + licFile.getAbsolutePath() + "\""
+ + " mime-type=\"text/rtf\""
+ + "/>");
}
}
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/builders/mac/MacAppImageBuilder.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/builders/mac/MacAppImageBuilder.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=Mac Application Image
bundler.description=A Directory based image of a mac Application with an optionally co-bundled JRE. Used as a base for the Installer bundlers
@@ -34,9 +60,6 @@
param.default-icon-icns=Default Icon
param.default-icon-icns.description=The Default Icon for when a user does not specify an icns file.
-param.runtime.name=JRE
-param.runtime.description=The Java Runtime to co-bundle. The default value is the current JRE running the bundler. A value of null will cause no JRE to be co-bundled and the system JRE will be used to launch the application.
-
param.sign-bundle.name=Sign Bundle
param.sign-bundle.description=Request that the bundle be signed.
@@ -74,4 +97,4 @@
message.using-custom-resource-from-classpath=Using custom package resource {0} (loaded from {1})
message.using-default-resource-from-classpath=Using default package resource {0} (add {1} to the class path to customize)
message.ignoring.symlink=Warning: codesign is skipping the symlink {0}
-message.keychain.error=Error: unable to get keychain list.
\ No newline at end of file
+message.keychain.error=Error: unable to get keychain list.
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/builders/mac/MacAppImageBuilder_ja.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/builders/mac/MacAppImageBuilder_ja.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=Mac\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30A4\u30E1\u30FC\u30B8
bundler.description=\u30AA\u30D7\u30B7\u30E7\u30F3\u3067JRE\u304C\u30D0\u30F3\u30C9\u30EB\u3055\u308C\u3066\u3044\u308BMac\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u30FB\u30D9\u30FC\u30B9\u306E\u30A4\u30E1\u30FC\u30B8\u3002\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9\u30FB\u30D0\u30F3\u30C9\u30EB\u306E\u30D9\u30FC\u30B9\u3068\u3057\u3066\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002
@@ -34,9 +60,6 @@
param.default-icon-icns=\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30A2\u30A4\u30B3\u30F3
param.default-icon-icns.description=\u30E6\u30FC\u30B6\u30FC\u304C\u30A2\u30A4\u30B3\u30F3\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u6307\u5B9A\u3057\u306A\u3044\u5834\u5408\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30A2\u30A4\u30B3\u30F3\u3002
-param.runtime.name=JRE
-param.runtime.description=\u30D0\u30F3\u30C9\u30EB\u3059\u308BJava\u30E9\u30F3\u30BF\u30A4\u30E0\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u306F\u3001\u30D0\u30F3\u30C9\u30E9\u3092\u5B9F\u884C\u3057\u3066\u3044\u308B\u73FE\u5728\u306EJRE\u3067\u3059\u3002\u5024\u304Cnull\u306E\u5834\u5408\u3001JRE\u306F\u30D0\u30F3\u30C9\u30EB\u3055\u308C\u305A\u3001\u30B7\u30B9\u30C6\u30E0\u306EJRE\u304C\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u8D77\u52D5\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002
-
param.images-root.name=
param.images-root.description=
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/builders/mac/MacAppImageBuilder_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/builders/mac/MacAppImageBuilder_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=Mac \u5E94\u7528\u7A0B\u5E8F\u6620\u50CF
bundler.description=\u4E00\u4E2A\u57FA\u4E8E\u76EE\u5F55\u7684 mac \u5E94\u7528\u7A0B\u5E8F\u6620\u50CF, \u53EF\u4EE5\u9009\u62E9\u6027\u5730\u5E26\u6709\u5171\u540C\u6253\u5305\u7684 JRE\u3002\u7528\u4F5C\u5B89\u88C5\u7A0B\u5E8F\u6253\u5305\u7A0B\u5E8F\u7684\u57FA\u7840
@@ -34,9 +60,6 @@
param.default-icon-icns=\u9ED8\u8BA4\u56FE\u6807
param.default-icon-icns.description=\u7528\u6237\u672A\u6307\u5B9A icns \u6587\u4EF6\u65F6\u4F7F\u7528\u7684\u9ED8\u8BA4\u56FE\u6807\u3002
-param.runtime.name=JRE
-param.runtime.description=\u8981\u5171\u540C\u6253\u5305\u7684 Java \u8FD0\u884C\u65F6\u3002\u9ED8\u8BA4\u503C\u4E3A\u8FD0\u884C\u6253\u5305\u7A0B\u5E8F\u7684\u5F53\u524D JRE\u3002\u503C\u4E3A\u7A7A\u503C\u5C06\u5BFC\u81F4\u4E0D\u4F1A\u5171\u540C\u6253\u5305\u4EFB\u4F55 JRE, \u5E76\u4E14\u5C06\u4F7F\u7528\u7CFB\u7EDF JRE \u6765\u542F\u52A8\u5E94\u7528\u7A0B\u5E8F\u3002
-
param.images-root.name=
param.images-root.description=
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppBundler.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppBundler.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=Mac Application Image
bundler.description=A Directory based image of a mac Application with an optionally co-bundled JRE. Used as a base for the Installer bundlers
@@ -34,9 +60,6 @@
param.default-icon-icns=Default Icon
param.default-icon-icns.description=The Default Icon for when a user does not specify an icns file.
-param.runtime.name=JRE
-param.runtime.description=The Java Runtime to co-bundle. The default value is the current JRE running the bundler. A value of null will cause no JRE to be co-bundled and the system JRE will be used to launch the application.
-
error.cannot-create-output-dir=Output directory {0} cannot be created.
error.cannot-write-to-output-dir=Output directory {0} is not writable.
error.invalid-cfbundle-version=Invalid CFBundleVersion - ''{0}''
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppBundler_ja.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppBundler_ja.properties Wed Oct 17 13:50:11 2018 -0400
@@ -34,9 +34,6 @@
param.default-icon-icns=\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30A2\u30A4\u30B3\u30F3
param.default-icon-icns.description=\u30E6\u30FC\u30B6\u30FC\u304C\u30A2\u30A4\u30B3\u30F3\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u6307\u5B9A\u3057\u306A\u3044\u5834\u5408\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30A2\u30A4\u30B3\u30F3\u3002
-param.runtime.name=JRE
-param.runtime.description=\u30D0\u30F3\u30C9\u30EB\u3059\u308BJava\u30E9\u30F3\u30BF\u30A4\u30E0\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u306F\u3001\u30D0\u30F3\u30C9\u30E9\u3092\u5B9F\u884C\u3057\u3066\u3044\u308B\u73FE\u5728\u306EJRE\u3067\u3059\u3002\u5024\u304Cnull\u306E\u5834\u5408\u3001JRE\u306F\u30D0\u30F3\u30C9\u30EB\u3055\u308C\u305A\u3001\u30B7\u30B9\u30C6\u30E0\u306EJRE\u304C\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u8D77\u52D5\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002
-
error.cannot-create-output-dir=\u51FA\u529B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3002
error.cannot-write-to-output-dir=\u51FA\u529B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u306F\u66F8\u8FBC\u307F\u4E0D\u53EF\u3067\u3059\u3002
error.invalid-cfbundle-version=CFBundleVersion - ''{0}''\u304C\u7121\u52B9\u3067\u3059
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppBundler_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppBundler_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=Mac \u5E94\u7528\u7A0B\u5E8F\u6620\u50CF
bundler.description=\u4E00\u4E2A\u57FA\u4E8E\u76EE\u5F55\u7684 mac \u5E94\u7528\u7A0B\u5E8F\u6620\u50CF, \u53EF\u4EE5\u9009\u62E9\u6027\u5730\u5E26\u6709\u5171\u540C\u6253\u5305\u7684 JRE\u3002\u7528\u4F5C\u5B89\u88C5\u7A0B\u5E8F\u6253\u5305\u7A0B\u5E8F\u7684\u57FA\u7840
@@ -34,9 +60,6 @@
param.default-icon-icns=\u9ED8\u8BA4\u56FE\u6807
param.default-icon-icns.description=\u7528\u6237\u672A\u6307\u5B9A icns \u6587\u4EF6\u65F6\u4F7F\u7528\u7684\u9ED8\u8BA4\u56FE\u6807\u3002
-param.runtime.name=JRE
-param.runtime.description=\u8981\u5171\u540C\u6253\u5305\u7684 Java \u8FD0\u884C\u65F6\u3002\u9ED8\u8BA4\u503C\u4E3A\u8FD0\u884C\u6253\u5305\u7A0B\u5E8F\u7684\u5F53\u524D JRE\u3002\u503C\u4E3A\u7A7A\u503C\u5C06\u5BFC\u81F4\u4E0D\u4F1A\u5171\u540C\u6253\u5305\u4EFB\u4F55 JRE, \u5E76\u4E14\u5C06\u4F7F\u7528\u7CFB\u7EDF JRE \u6765\u542F\u52A8\u5E94\u7528\u7A0B\u5E8F\u3002
-
error.cannot-create-output-dir=\u65E0\u6CD5\u521B\u5EFA\u8F93\u51FA\u76EE\u5F55 {0}\u3002
error.cannot-write-to-output-dir=\u8F93\u51FA\u76EE\u5F55 {0} \u4E0D\u53EF\u5199\u3002
error.invalid-cfbundle-version=\u65E0\u6548\u7684 CFBundleVersion - ''{0}''
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppStoreBundler.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppStoreBundler.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=Mac App Store Ready Bundler
bundler.description=Creates a binary bundle ready for deployment into the Mac App Store."
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppStoreBundler_ja.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppStoreBundler_ja.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=Mac App Store\u306E\u6E96\u5099\u5B8C\u4E86\u30D0\u30F3\u30C9\u30E9
bundler.description=Mac App Store\u3078\u306E\u30C7\u30D7\u30ED\u30A4\u30E1\u30F3\u30C8\u6E96\u5099\u5B8C\u4E86\u306E\u30D0\u30A4\u30CA\u30EA\u30FB\u30D0\u30F3\u30C9\u30EB\u3092\u4F5C\u6210\u3057\u307E\u3059\u3002"
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppStoreBundler_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacAppStoreBundler_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=\u652F\u6301 Mac App Store \u7684\u6253\u5305\u7A0B\u5E8F
bundler.description=\u521B\u5EFA\u53EF\u90E8\u7F72\u5230 Mac App Store \u4E2D\u7684\u4E8C\u8FDB\u5236\u6587\u4EF6\u5305\u3002"
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacBaseInstallerBundler.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacBaseInstallerBundler.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=Mac App Store
bundler.description=Creates a binary bundle ready for deployment into the Mac App Store.
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacBaseInstallerBundler_ja.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacBaseInstallerBundler_ja.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=Mac App Store
bundler.description=Mac App Store\u3078\u306e\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u6e96\u5099\u5b8c\u4e86\u306e\u30d0\u30a4\u30ca\u30ea\u30fb\u30d0\u30f3\u30c9\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacBaseInstallerBundler_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacBaseInstallerBundler_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=Mac App Store
bundler.description=\u521b\u5efa\u53ef\u90e8\u7f72\u5230 Mac App Store \u4e2d\u7684\u4e8c\u8fdb\u5236\u6587\u4ef6\u5305\u3002
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacDmgBundler.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacDmgBundler.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=DMG Installer
bundler.description=Mac DMG Installer Bundle
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacDmgBundler_ja.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacDmgBundler_ja.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=DMG\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9
bundler.description=Mac DMG\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9\u30FB\u30D0\u30F3\u30C9\u30EB
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacDmgBundler_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacDmgBundler_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=DMG \u5B89\u88C5\u7A0B\u5E8F
bundler.description=Mac DMG \u5B89\u88C5\u7A0B\u5E8F\u5305
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacPkgBundler.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacPkgBundler.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=PKG Installer
bundler.description=Mac PKG Installer Bundle.
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacPkgBundler_ja.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacPkgBundler_ja.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=PKG\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9
bundler.description=Mac PKG\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9\u30FB\u30D0\u30F3\u30C9\u30EB\u3002
--- a/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacPkgBundler_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/classes/jdk/packager/internal/resources/mac/MacPkgBundler_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=PKG \u5B89\u88C5\u7A0B\u5E8F
bundler.description=Mac PKG \u5B89\u88C5\u7A0B\u5E8F\u5305\u3002
--- a/src/jdk.packager/macosx/native/library/MacPlatform.mm Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/macosx/native/library/MacPlatform.mm Wed Oct 17 13:50:11 2018 -0400
@@ -47,18 +47,15 @@
#import <Cocoa/Cocoa.h>
#endif //__OBJC__
-#define MAC_PACKAGER_TMP_DIR "/Library/Application Support/Oracle/Java/Packager/tmp"
-
-//--------------------------------------------------------------------------------------------------
+#define MAC_PACKAGER_TMP_DIR \
+ "/Library/Application Support/Oracle/Java/Packager/tmp"
NSString* StringToNSString(TString Value) {
NSString* result = [NSString stringWithCString:Value.c_str()
- encoding:[NSString defaultCStringEncoding]];
+ encoding:[NSString defaultCStringEncoding]];
return result;
}
-//--------------------------------------------------------------------------------------------------
-
MacPlatform::MacPlatform(void) : Platform(), GenericPlatform(), PosixPlatform() {
}
@@ -91,30 +88,38 @@
printf("Unable to reactivate another instance, PID is undefined");
return;
}
- NSRunningApplication* app = [NSRunningApplication runningApplicationWithProcessIdentifier: singleInstanceProcessId];
+ NSRunningApplication* app =
+ [NSRunningApplication runningApplicationWithProcessIdentifier:
+ singleInstanceProcessId];
if (app != nil) {
[app activateWithOptions: NSApplicationActivateIgnoringOtherApps];
} else {
- printf("Unable to reactivate another instance PID: %d", singleInstanceProcessId);
+ printf("Unable to reactivate another instance PID: %d",
+ singleInstanceProcessId);
}
}
-TCHAR* MacPlatform::ConvertStringToFileSystemString(TCHAR* Source, bool &release) {
+TCHAR* MacPlatform::ConvertStringToFileSystemString(TCHAR* Source,
+ bool &release) {
TCHAR* result = NULL;
release = false;
- CFStringRef StringRef = CFStringCreateWithCString(kCFAllocatorDefault, Source, kCFStringEncodingUTF8);
+ CFStringRef StringRef = CFStringCreateWithCString(kCFAllocatorDefault,
+ Source, kCFStringEncodingUTF8);
if (StringRef != NULL) {
@try {
- CFIndex length = CFStringGetMaximumSizeOfFileSystemRepresentation(StringRef);
+ CFIndex length =
+ CFStringGetMaximumSizeOfFileSystemRepresentation(StringRef);
result = new char[length + 1];
-
- if (CFStringGetFileSystemRepresentation(StringRef, result, length)) {
- release = true;
- }
- else {
- delete[] result;
- result = NULL;
+ if (result != NULL) {
+ if (CFStringGetFileSystemRepresentation(StringRef,
+ result, length)) {
+ release = true;
+ }
+ else {
+ delete[] result;
+ result = NULL;
+ }
}
}
@finally {
@@ -125,26 +130,31 @@
return result;
}
-TCHAR* MacPlatform::ConvertFileSystemStringToString(TCHAR* Source, bool &release) {
+TCHAR* MacPlatform::ConvertFileSystemStringToString(TCHAR* Source,
+ bool &release) {
TCHAR* result = NULL;
release = false;
- CFStringRef StringRef = CFStringCreateWithFileSystemRepresentation(kCFAllocatorDefault, Source);
+ CFStringRef StringRef = CFStringCreateWithFileSystemRepresentation(
+ kCFAllocatorDefault, Source);
if (StringRef != NULL) {
@try {
CFIndex length = CFStringGetLength(StringRef);
if (length > 0) {
- CFIndex maxSize = CFStringGetMaximumSizeForEncoding(length, kCFStringEncodingUTF8);
+ CFIndex maxSize = CFStringGetMaximumSizeForEncoding(
+ length, kCFStringEncodingUTF8);
result = new char[maxSize + 1];
-
- if (CFStringGetCString(StringRef, result, maxSize, kCFStringEncodingUTF8) == true) {
- release = true;
- }
- else {
- delete[] result;
- result = NULL;
+ if (result != NULL) {
+ if (CFStringGetCString(StringRef, result, maxSize,
+ kCFStringEncodingUTF8) == true) {
+ release = true;
+ }
+ else {
+ delete[] result;
+ result = NULL;
+ }
}
}
}
@@ -163,14 +173,16 @@
TString MacPlatform::GetPackageRootDirectory() {
NSBundle *mainBundle = [NSBundle mainBundle];
NSString *mainBundlePath = [mainBundle bundlePath];
- NSString *contentsPath = [mainBundlePath stringByAppendingString:@"/Contents"];
+ NSString *contentsPath =
+ [mainBundlePath stringByAppendingString:@"/Contents"];
TString result = [contentsPath UTF8String];
return result;
}
TString MacPlatform::GetAppDataDirectory() {
TString result;
- NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
+ NSArray *paths = NSSearchPathForDirectoriesInDomains(
+ NSApplicationSupportDirectory, NSUserDomainMask, YES);
NSString *applicationSupportDirectory = [paths firstObject];
result = [applicationSupportDirectory UTF8String];
return result;
@@ -180,11 +192,11 @@
TString result;
// first try lib/, then lib/jli
- result = FilePath::IncludeTrailingSeparater(RuntimePath) +
+ result = FilePath::IncludeTrailingSeparator(RuntimePath) +
_T("Contents/Home/lib/libjli.dylib");
if (FilePath::FileExists(result) == false) {
- result = FilePath::IncludeTrailingSeparater(RuntimePath) +
+ result = FilePath::IncludeTrailingSeparator(RuntimePath) +
_T("Contents/Home/lib/jli/libjli.dylib");
if (FilePath::FileExists(result) == false) {
@@ -203,8 +215,10 @@
return result;
}
-void AppendPListArrayToIniFile(NSDictionary *infoDictionary, IniFile *result, TString Section) {
- NSString *sectionKey = [NSString stringWithUTF8String:PlatformString(Section).toMultibyte()];
+void AppendPListArrayToIniFile(NSDictionary *infoDictionary,
+ IniFile *result, TString Section) {
+ NSString *sectionKey =
+ [NSString stringWithUTF8String:PlatformString(Section).toMultibyte()];
NSDictionary *array = [infoDictionary objectForKey:sectionKey];
for (id option in array) {
@@ -221,11 +235,13 @@
}
}
-void AppendPListDictionaryToIniFile(NSDictionary *infoDictionary, IniFile *result, TString Section, bool FollowSection = true) {
+void AppendPListDictionaryToIniFile(NSDictionary *infoDictionary,
+ IniFile *result, TString Section, bool FollowSection = true) {
NSDictionary *dictionary = NULL;
if (FollowSection == true) {
- NSString *sectionKey = [NSString stringWithUTF8String:PlatformString(Section).toMultibyte()];
+ NSString *sectionKey = [NSString stringWithUTF8String:PlatformString(
+ Section).toMultibyte()];
dictionary = [infoDictionary objectForKey:sectionKey];
}
else {
@@ -235,7 +251,8 @@
for (id key in dictionary) {
id option = [dictionary valueForKey:key];
- if ([key isKindOfClass:[NSString class]] && [option isKindOfClass:[NSString class]]) {
+ if ([key isKindOfClass:[NSString class]] &&
+ [option isKindOfClass:[NSString class]]) {
TString name = [key UTF8String];
TString value = [option UTF8String];
result->Append(Section, name, value);
@@ -243,14 +260,15 @@
}
}
-// Convert parts of the info.plist to the INI format the rest of the packager uses unless
-// a packager config file exists.
+// Convert parts of the info.plist to the INI format the rest of the packager
+// uses unless a packager config file exists.
ISectionalPropertyContainer* MacPlatform::GetConfigFile(TString FileName) {
IniFile* result = new IniFile();
if (UsePListForConfigFile() == false) {
if (result->LoadFromFile(FileName) == false) {
- // New property file format was not found, attempt to load old property file format.
+ // New property file format was not found,
+ // attempt to load old property file format.
Helpers::LoadOldConfigFile(FileName, result);
}
}
@@ -260,20 +278,26 @@
std::map<TString, TString> keys = GetKeys();
// Packager options.
- AppendPListDictionaryToIniFile(infoDictionary, result, keys[CONFIG_SECTION_APPLICATION], false);
+ AppendPListDictionaryToIniFile(infoDictionary, result,
+ keys[CONFIG_SECTION_APPLICATION], false);
// jvmargs
- AppendPListArrayToIniFile(infoDictionary, result, keys[CONFIG_SECTION_JVMOPTIONS]);
+ AppendPListArrayToIniFile(infoDictionary, result,
+ keys[CONFIG_SECTION_JVMOPTIONS]);
// jvmuserargs
- AppendPListDictionaryToIniFile(infoDictionary, result, keys[CONFIG_SECTION_JVMUSEROPTIONS]);
+ AppendPListDictionaryToIniFile(infoDictionary, result,
+ keys[CONFIG_SECTION_JVMUSEROPTIONS]);
// Generate AppCDS Cache
- AppendPListDictionaryToIniFile(infoDictionary, result, keys[CONFIG_SECTION_APPCDSJVMOPTIONS]);
- AppendPListDictionaryToIniFile(infoDictionary, result, keys[CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS]);
+ AppendPListDictionaryToIniFile(infoDictionary, result,
+ keys[CONFIG_SECTION_APPCDSJVMOPTIONS]);
+ AppendPListDictionaryToIniFile(infoDictionary, result,
+ keys[CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS]);
// args
- AppendPListArrayToIniFile(infoDictionary, result, keys[CONFIG_SECTION_ARGOPTIONS]);
+ AppendPListArrayToIniFile(infoDictionary, result,
+ keys[CONFIG_SECTION_ARGOPTIONS]);
}
return result;
@@ -281,7 +305,8 @@
TString GetModuleFileNameOSX() {
Dl_info module_info;
- if (dladdr(reinterpret_cast<void*>(GetModuleFileNameOSX), &module_info) == 0) {
+ if (dladdr(reinterpret_cast<void*>(GetModuleFileNameOSX),
+ &module_info) == 0) {
// Failed to find the symbol we asked for.
return std::string();
}
@@ -311,7 +336,10 @@
TPlatformNumber MacPlatform::GetMemorySize() {
unsigned long long memory = [[NSProcessInfo processInfo] physicalMemory];
- TPlatformNumber result = memory / 1048576; // Convert from bytes to megabytes.
+
+ // Convert from bytes to megabytes.
+ TPlatformNumber result = memory / 1048576;
+
return result;
}
@@ -322,28 +350,50 @@
return GenericPlatform::GetKeys();
}
else {
- keys.insert(std::map<TString, TString>::value_type(CONFIG_VERSION, _T("app.version")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_MAINJAR_KEY, _T("JVMMainJarName")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_MAINMODULE_KEY, _T("JVMMainModuleName")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_MAINCLASSNAME_KEY, _T("JVMMainClassName")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_CLASSPATH_KEY, _T("JVMAppClasspath")));
- keys.insert(std::map<TString, TString>::value_type(APP_NAME_KEY, _T("CFBundleName")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_APP_ID_KEY, _T("JVMPreferencesID")));
- keys.insert(std::map<TString, TString>::value_type(JVM_RUNTIME_KEY, _T("JVMRuntime")));
- keys.insert(std::map<TString, TString>::value_type(PACKAGER_APP_DATA_DIR, _T("CFBundleIdentifier")));
+ keys.insert(std::map<TString, TString>::value_type(CONFIG_VERSION,
+ _T("app.version")));
+ keys.insert(std::map<TString, TString>::value_type(CONFIG_MAINJAR_KEY,
+ _T("JVMMainJarName")));
+ keys.insert(std::map<TString, TString>::value_type(CONFIG_MAINMODULE_KEY,
+ _T("JVMMainModuleName")));
+ keys.insert(std::map<TString, TString>::value_type(
+ CONFIG_MAINCLASSNAME_KEY, _T("JVMMainClassName")));
+ keys.insert(std::map<TString, TString>::value_type(
+ CONFIG_CLASSPATH_KEY, _T("JVMAppClasspath")));
+ keys.insert(std::map<TString, TString>::value_type(APP_NAME_KEY,
+ _T("CFBundleName")));
+ keys.insert(std::map<TString, TString>::value_type(CONFIG_APP_ID_KEY,
+ _T("JVMPreferencesID")));
+ keys.insert(std::map<TString, TString>::value_type(JVM_RUNTIME_KEY,
+ _T("JVMRuntime")));
+ keys.insert(std::map<TString, TString>::value_type(PACKAGER_APP_DATA_DIR,
+ _T("CFBundleIdentifier")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_SPLASH_KEY, _T("app.splash")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_APP_MEMORY, _T("app.memory")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_APP_DEBUG, _T("app.debug")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_APPLICATION_INSTANCE, _T("app.application.instance")));
+ keys.insert(std::map<TString, TString>::value_type(CONFIG_SPLASH_KEY,
+ _T("app.splash")));
+ keys.insert(std::map<TString, TString>::value_type(CONFIG_APP_MEMORY,
+ _T("app.memory")));
+ keys.insert(std::map<TString, TString>::value_type(CONFIG_APP_DEBUG,
+ _T("app.debug")));
+ keys.insert(std::map<TString, TString>::value_type(
+ CONFIG_APPLICATION_INSTANCE, _T("app.application.instance")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_SECTION_APPLICATION, _T("Application")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_SECTION_JVMOPTIONS, _T("JVMOptions")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_SECTION_JVMUSEROPTIONS, _T("JVMUserOptions")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS, _T("JVMUserOverrideOptions")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_SECTION_APPCDSJVMOPTIONS, _T("AppCDSJVMOptions")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS, _T("AppCDSGenerateCacheJVMOptions")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_SECTION_ARGOPTIONS, _T("ArgOptions")));
+ keys.insert(std::map<TString, TString>::value_type(
+ CONFIG_SECTION_APPLICATION, _T("Application")));
+ keys.insert(std::map<TString, TString>::value_type(
+ CONFIG_SECTION_JVMOPTIONS, _T("JVMOptions")));
+ keys.insert(std::map<TString, TString>::value_type(
+ CONFIG_SECTION_JVMUSEROPTIONS, _T("JVMUserOptions")));
+ keys.insert(std::map<TString, TString>::value_type(
+ CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS,
+ _T("JVMUserOverrideOptions")));
+ keys.insert(std::map<TString, TString>::value_type(
+ CONFIG_SECTION_APPCDSJVMOPTIONS, _T("AppCDSJVMOptions")));
+ keys.insert(std::map<TString, TString>::value_type(
+ CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS,
+ _T("AppCDSGenerateCacheJVMOptions")));
+ keys.insert(std::map<TString, TString>::value_type(
+ CONFIG_SECTION_ARGOPTIONS, _T("ArgOptions")));
}
return keys;
@@ -375,20 +425,20 @@
}
#endif //DEBUG
-//--------------------------------------------------------------------------------------------------
-
class UserDefaults {
private:
OrderedMap<TString, TString> FData;
TString FDomainName;
- bool ReadDictionary(NSDictionary *Items, OrderedMap<TString, TString> &Data) {
+ bool ReadDictionary(NSDictionary *Items, OrderedMap<TString,
+ TString> &Data) {
bool result = false;
for (id key in Items) {
id option = [Items valueForKey:key];
- if ([key isKindOfClass:[NSString class]] && [option isKindOfClass:[NSString class]]) {
+ if ([key isKindOfClass:[NSString class]] &&
+ [option isKindOfClass:[NSString class]]) {
TString name = [key UTF8String];
TString value = [option UTF8String];
@@ -402,7 +452,8 @@
}
// Open and read the defaults file specified by domain.
- bool ReadPreferences(NSDictionary *Defaults, std::list<TString> Keys, OrderedMap<TString, TString> &Data) {
+ bool ReadPreferences(NSDictionary *Defaults, std::list<TString> Keys,
+ OrderedMap<TString, TString> &Data) {
bool result = false;
if (Keys.size() > 0 && Defaults != NULL) {
@@ -457,13 +508,12 @@
}
};
-//--------------------------------------------------------------------------------------------------
-
MacJavaUserPreferences::MacJavaUserPreferences(void) : JavaUserPreferences() {
}
TString toLowerCase(TString Value) {
- // Use Cocoa's lowercase method because it is better than the ones provided by C/C++.
+ // Use Cocoa's lowercase method because it is better than
+ // the ones provided by C/C++.
NSString *temp = StringToNSString(Value);
temp = [temp lowercaseString];
TString result = [temp UTF8String];
@@ -485,15 +535,18 @@
return result;
}
-// 1. If the path is fewer than three components (Example: one/two/three) then the domain is the
+// 1. If the path is fewer than three components (Example: one/two/three)
+// then the domain is the
// default domain "com.apple.java.util.prefs" stored in the plist file
// ~/Library/Preferences/com.apple.java.util.prefs.plist
//
// For example: If AppID = "hello", the path is "hello/JVMUserOptions and the
-// plist file is ~/Library/Preferences/com.apple.java.util.prefs.plist containing the contents:
+// plist file is ~/Library/Preferences/com.apple.java.util.prefs.plist
+// containing the contents:
//
// <?xml version="1.0" encoding="UTF-8"?>
-// <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+// <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
+// "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
// <plist version="1.0">
// <dict>
// <key>/</key>
@@ -513,12 +566,15 @@
// 2. If the path is three or more, the first three become the domain name (even
// if shared across applicaitons) and the remaining become individual keys.
//
-// For example: If AppID = "com/hello/foo", the path is "hello/JVMUserOptions and the
-// domain is "com.hello.foo" stored in the plist file ~/Library/Preferences/com.hello.foo.plist
+// For example: If AppID = "com/hello/foo", the path is
+// "hello/JVMUserOptions and the
+// domain is "com.hello.foo" stored in the plist file
+// ~/Library/Preferences/com.hello.foo.plist
// containing the contents:
//
// <?xml version="1.0" encoding="UTF-8"?>
-// <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+// <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
+// "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
// <plist version="1.0">
// <dict>
// <key>/com/hello/foo/</key>
@@ -534,12 +590,14 @@
//
// NOTE: To change these values use the command line utility "defaults":
// Example: defaults read com.apple.java.util.prefs /
-// Since OS 10.9 Mavericks the defaults are cashed so directly modifying the files is not recommended.
+// Since OS 10.9 Mavericks the defaults are cashed so directly modifying
+// the files is not recommended.
bool MacJavaUserPreferences::Load(TString Appid) {
bool result = false;
if (Appid.empty() == false) {
- // This is for backwards compatability. Older packaged applications have an
+ // This is for backwards compatability.
+ // Older packaged applications have an
// app.preferences.id that is delimited by period (".") rather than
// slash ("/") so convert to newer style.
TString path = Helpers::ReplaceString(Appid, _T("."), _T("/"));
@@ -548,12 +606,14 @@
TString domainName;
std::list<TString> keys = Split(path, _T("/"));
- // If there are less than three parts to the path then use the default preferences file.
+ // If there are less than three parts to the path then use
+ // the default preferences file.
if (keys.size() < 3) {
domainName = _T("com.apple.java.util.prefs");
// Append slash to the end of each key.
- for (std::list<TString>::iterator iterator = keys.begin(); iterator != keys.end(); iterator++) {
+ for (std::list<TString>::iterator iterator = keys.begin();
+ iterator != keys.end(); iterator++) {
TString item = *iterator;
item = item + _T("/");
*iterator = item;
@@ -563,7 +623,8 @@
keys.push_front(_T("/"));
}
else {
- // Remove the first three keys and use them for the root key and the preferencesID.
+ // Remove the first three keys and use them for the
+ // root key and the preferencesID.
TString one = keys.front();
keys.pop_front();
TString two = keys.front();
@@ -574,14 +635,16 @@
domainName = toLowerCase(domainName);
// Append slash to the end of each key.
- for (std::list<TString>::iterator iterator = keys.begin(); iterator != keys.end(); iterator++) {
+ for (std::list<TString>::iterator iterator = keys.begin();
+ iterator != keys.end(); iterator++) {
TString item = *iterator;
item = item + _T("/");
*iterator = item;
}
// The root key is /one/two/three/
- TString key = TString("/") + one + TString("/") + two + TString("/") + three + TString("/");
+ TString key = TString("/") + one + TString("/") + two
+ + TString("/") + three + TString("/");
keys.push_front(key);
}
@@ -596,6 +659,5 @@
return result;
}
-//--------------------------------------------------------------------------------------------------
#endif //MAC
--- a/src/jdk.packager/share/classes/jdk/packager/Main.java Fri Oct 12 19:00:51 2018 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-/*
- * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package jdk.packager;
-
-import jdk.packager.internal.Arguments;
-import jdk.packager.internal.Log;
-import jdk.packager.internal.CLIHelp;
-import java.io.PrintWriter;
-import java.util.ResourceBundle;
-
-public class Main {
-
- private static final ResourceBundle bundle =
- ResourceBundle.getBundle("jdk.packager.internal.resources.Bundle");
-
- private static final String version = bundle.getString("MSG_Version")
- + " " + System.getProperty("java.version") + "\n";
-
- public static void main(String... args) throws Exception {
- // Create logger with default system.out and system.err
- Log.Logger logger = new Log.Logger(false);
- Log.setLogger(logger);
-
- int status = run(args);
- System.exit(status);
- }
-
- public static int run(PrintWriter out, PrintWriter err, String... args)
- throws Exception {
- // Create logger with provided streams
- Log.Logger logger = new Log.Logger(false);
- logger.setPrintWriter(out, err);
- Log.setLogger(logger);
-
- int status = run(args);
- Log.flush();
- return status;
- }
-
- public static int run(String... args) throws Exception {
- if (args.length == 0) {
- CLIHelp.showHelp(true);
- } else if (hasHelp(args)){
- CLIHelp.showHelp(false);
- } else if (args.length == 1 && args[0].equals("--version")) {
- Log.info(version);
- } else {
- try {
- Arguments arguments = new Arguments(args);
- arguments.processArguments();
- } catch (Exception e) {
- if (Arguments.verbose()) {
- throw e;
- } else {
- Log.error(e.getMessage());
- if (e.getCause() != null && e.getCause() != e) {
- Log.error(e.getCause().getMessage());
- }
- return -1;
- }
- }
- }
-
- return 0;
- }
-
- private static boolean hasHelp(String[] args) {
- for (String a : args) {
- if ("--help".equals(a) || "-h".equals(a)) {
- return true;
- }
- }
- return false;
- }
-
-}
--- a/src/jdk.packager/share/classes/jdk/packager/internal/AbstractBundler.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/AbstractBundler.java Wed Oct 17 13:50:11 2018 -0400
@@ -25,10 +25,10 @@
package jdk.packager.internal;
-
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
+import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.StandardCopyOption;
@@ -37,7 +37,6 @@
import java.util.Map;
import java.util.ResourceBundle;
-
public abstract class AbstractBundler implements Bundler {
private static final ResourceBundle I18N = ResourceBundle.getBundle(
@@ -59,15 +58,18 @@
protected Class baseResourceLoader = null;
- protected void fetchResource(
- String publicName, String category,
+ protected void fetchResource(String publicName, String category,
String defaultName, File result, boolean verbose, File publicRoot)
throws IOException {
InputStream is = streamResource(publicName, category,
defaultName, verbose, publicRoot);
if (is != null) {
- Files.copy(is, result.toPath(),
- StandardCopyOption.REPLACE_EXISTING);
+ try {
+ Files.copy(is, result.toPath(),
+ StandardCopyOption.REPLACE_EXISTING);
+ } finally {
+ is.close();
+ }
} else {
if (verbose) {
Log.info(MessageFormat.format(I18N.getString(
@@ -78,14 +80,17 @@
}
}
- protected void fetchResource(
- String publicName, String category,
+ protected void fetchResource(String publicName, String category,
File defaultFile, File result, boolean verbose, File publicRoot)
throws IOException {
InputStream is = streamResource(publicName, category,
null, verbose, publicRoot);
if (is != null) {
- Files.copy(is, result.toPath());
+ try {
+ Files.copy(is, result.toPath());
+ } finally {
+ is.close();
+ }
} else {
IOUtils.copyFile(defaultFile, result);
if (verbose) {
@@ -106,7 +111,8 @@
if (publicRoot != null) {
File publicResource = new File(publicRoot, publicName);
if (publicResource.exists() && publicResource.isFile()) {
- is = new FileInputStream(publicResource);
+ is = new BufferedInputStream(
+ new FileInputStream(publicResource));
}
} else {
is = baseResourceLoader.getClassLoader().getResourceAsStream(
@@ -117,17 +123,19 @@
if (is == null && defaultName != null) {
is = baseResourceLoader.getResourceAsStream(defaultName);
}
- String msg = null;
- if (custom) {
- msg = MessageFormat.format(I18N.getString(
- "message.using-custom-resource-from-classpath"),
- category == null ? "" : "[" + category + "] ", publicName);
- } else if (is != null) {
- msg = MessageFormat.format(I18N.getString(
- "message.using-default-resource-from-classpath"),
- category == null ? "" : "[" + category + "] ", publicName);
- }
if (verbose && is != null) {
+ String msg = null;
+ if (custom) {
+ msg = MessageFormat.format(I18N.getString(
+ "message.using-custom-resource-from-classpath"),
+ category == null ?
+ "" : "[" + category + "] ", publicName);
+ } else {
+ msg = MessageFormat.format(I18N.getString(
+ "message.using-default-resource-from-classpath"),
+ category == null ?
+ "" : "[" + category + "] ", publicName);
+ }
Log.info(msg);
}
return is;
--- a/src/jdk.packager/share/classes/jdk/packager/internal/AbstractImageBundler.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/AbstractImageBundler.java Wed Oct 17 13:50:11 2018 -0400
@@ -33,12 +33,14 @@
import static jdk.packager.internal.StandardBundlerParam.*;
-
/**
* Common utility methods used by app image bundlers.
*/
public abstract class AbstractImageBundler extends AbstractBundler {
+ private final static String JAVA_VERSION_SPEC =
+ "java version \"((\\d+).(\\d+).(\\d+).(\\d+))(-(.*))?(\\+[^\"]*)?\"";
+
private static final ResourceBundle I18N = ResourceBundle.getBundle(
"jdk.packager.internal.resources.AbstractImageBundler");
@@ -83,8 +85,7 @@
params.put(".runtime.version.patch", "0");
params.put(".runtime.version.modifiers", matcher.group(7));
} else {
- Pattern newVersionMatcher = Pattern.compile(
- "java version \"((\\d+).(\\d+).(\\d+).(\\d+))(-(.*))?(\\+[^\"]*)?\"");
+ Pattern newVersionMatcher = Pattern.compile(JAVA_VERSION_SPEC);
matcher = newVersionMatcher.matcher(versionOutput);
if (matcher.find()) {
params.put(".runtime.version", matcher.group(1));
--- a/src/jdk.packager/share/classes/jdk/packager/internal/Arguments.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/Arguments.java Wed Oct 17 13:50:11 2018 -0400
@@ -24,6 +24,9 @@
*/
package jdk.packager.internal;
+import jdk.packager.internal.bundlers.Bundler;
+import jdk.packager.internal.bundlers.BundleParams;
+
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@@ -47,8 +50,6 @@
import java.util.stream.Stream;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import jdk.packager.internal.bundlers.Bundler;
-import jdk.packager.internal.bundlers.BundleParams;
public class Arguments {
private static final ResourceBundle I18N = ResourceBundle.getBundle(
@@ -221,7 +222,6 @@
FILES ("files", "f", OptionCategories.PROPERTY, () -> {
context().files = new ArrayList<>();
String files = popArg();
- // TODO: should we split using ' '(space) ?
context().files.addAll(
Arrays.asList(files.split(File.pathSeparator)));
}),
@@ -541,8 +541,8 @@
if (!hasAppImage && !hasMainJar && !hasMainModule &&
!hasMainClass && !jreInstaller) {
- Log.info("ERROR: Main jar, main class, main module, or app-image "
- + "must be specified.");
+ Log.info("ERROR: Main jar, main class, main module, "
+ + "or app-image must be specified.");
} else if (!hasMainModule && !hasMainClass) {
// try to get main-class from manifest
String mainClass = getMainClassFromManifest();
--- a/src/jdk.packager/share/classes/jdk/packager/internal/BasicBundlers.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/BasicBundlers.java Wed Oct 17 13:50:11 2018 -0400
@@ -32,8 +32,8 @@
import java.util.concurrent.CopyOnWriteArrayList;
/**
- * A basic bundlers collection that loads the OpenJFX default bundlers.
- * Loads the bundlers common to OpenJFX.
+ * A basic bundlers collection that loads the default bundlers.
+ * Loads the common bundlers common.
* <UL>
* <LI>Windows file image</LI>
* <LI>Mac .app</LI>
--- a/src/jdk.packager/share/classes/jdk/packager/internal/BundlerParamInfo.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/BundlerParamInfo.java Wed Oct 17 13:50:11 2018 -0400
@@ -29,7 +29,6 @@
import java.util.function.BiFunction;
import java.util.function.Function;
-
public class BundlerParamInfo<T> {
/**
* The user friendly name of the parameter
--- a/src/jdk.packager/share/classes/jdk/packager/internal/Bundlers.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/Bundlers.java Wed Oct 17 13:50:11 2018 -0400
@@ -29,7 +29,6 @@
import java.util.Iterator;
import java.util.ServiceLoader;
-
public interface Bundlers {
/**
--- a/src/jdk.packager/share/classes/jdk/packager/internal/CLIHelp.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/CLIHelp.java Wed Oct 17 13:50:11 2018 -0400
@@ -22,11 +22,11 @@
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
+
package jdk.packager.internal;
import java.util.ResourceBundle;
-
public class CLIHelp {
private static final ResourceBundle I18N = ResourceBundle.getBundle(
--- a/src/jdk.packager/share/classes/jdk/packager/internal/CommonParams.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/CommonParams.java Wed Oct 17 13:50:11 2018 -0400
@@ -27,7 +27,6 @@
import java.io.File;
-
public abstract class CommonParams {
File outdir;
boolean verbose;
--- a/src/jdk.packager/share/classes/jdk/packager/internal/ConfigException.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/ConfigException.java Wed Oct 17 13:50:11 2018 -0400
@@ -25,7 +25,6 @@
package jdk.packager.internal;
-
public class ConfigException extends Exception {
final String advice;
--- a/src/jdk.packager/share/classes/jdk/packager/internal/DeployParams.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/DeployParams.java Wed Oct 17 13:50:11 2018 -0400
@@ -27,7 +27,9 @@
import jdk.packager.internal.bundlers.*;
import jdk.packager.internal.bundlers.Bundler.BundleType;
+
import java.io.File;
+import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -60,7 +62,6 @@
Boolean singleton;
String applicationClass;
- String preloader;
List<Param> params;
List<String> arguments; //unnamed arguments
@@ -69,47 +70,16 @@
String addModules = null;
String limitModules = null;
Boolean stripNativeCommands = null;
- Boolean detectmods = null;
String modulePath = null;
String module = null;
String debugPort = null;
- String srcdir;
-
- int width;
- int height;
- String embeddedWidth = null;
- String embeddedHeight = null;
-
- String appName;
- String codebase;
-
- @Deprecated final boolean embedCertificates = false;
- boolean allPermissions = false;
- String updateMode = "background";
- boolean isExtension = false;
- boolean isSwingApp = false;
boolean jreInstaller = false;
- Boolean needShortcut = null;
- Boolean needMenu = null;
- Boolean needInstall = null;
-
String outfile;
- // if true then we cobundle js and image files needed
- // for web deployment with the application
- boolean includeDT;
- String placeholder = "'javafx-app-placeholder'";
String appId = null;
- // didn't have a setter...
- boolean offlineAllowed = true;
-
- String jrePlatform = System.getProperty("java.version")+"+";
- File javaRuntimeToUse = null;
- boolean javaRuntimeWasSet = false;
-
// list of jvm args
// (in theory string can contain spaces and need to be escaped
List<String> jvmargs = new LinkedList<>();
@@ -121,17 +91,6 @@
// raw arguments to the bundler
Map<String, ? super Object> bundlerArguments = new LinkedHashMap<>();
- String fallbackApp = null;
-
- public void setJavaRuntimeSource(File src) {
- javaRuntimeToUse = src;
- javaRuntimeWasSet = true;
- }
-
- public void setCodebase(String codebase) {
- this.codebase = codebase;
- }
-
public void setId(String id) {
this.id = id;
}
@@ -172,43 +131,6 @@
this.signBundle = signBundle;
}
- public void setJRE(String v) {
- jrePlatform = v;
- }
-
- public void setSwingAppWithEmbeddedJavaFX(boolean v) {
- isSwingApp = v;
- }
-
- public void setNeedInstall(boolean b) {
- needInstall = b;
- }
-
- public void setOfflineAllowed(boolean b) {
- offlineAllowed = b;
- }
-
- public void setNeedShortcut(Boolean b) {
- needShortcut = b;
- }
-
- public void setEmbeddedDimensions(String w, String h) {
- embeddedWidth = w;
- embeddedHeight = h;
- }
-
- public void setFallback(String v) {
- if (v == null) {
- return;
- }
-
- if ("none".equals(v) || "null".equals(v)) {
- fallbackApp = null;
- } else {
- fallbackApp = v;
- }
- }
-
public void addJvmArg(String v) {
jvmargs.add(v);
}
@@ -217,14 +139,6 @@
properties.put(n, v);
}
- public void setAllPermissions(boolean allPermissions) {
- this.allPermissions = allPermissions;
- }
-
- public void setAppName(String appName) {
- this.appName = appName;
- }
-
public void setArguments(List<String> args) {
this.arguments = args;
}
@@ -259,10 +173,6 @@
return this.modulePath;
}
- public void setSrcdir(String srcdir) {
- this.srcdir = srcdir;
- }
-
public void setModulePath(String value) {
this.modulePath = value;
}
@@ -279,26 +189,14 @@
this.stripNativeCommands = value;
}
- public void setDetectModules(boolean value) {
- this.detectmods = value;
- }
-
public void setDescription(String description) {
this.description = description;
}
- public void setPlaceholder(String p) {
- placeholder = p;
- }
-
public void setAppId(String id) {
appId = id;
}
- public void setHeight(int height) {
- this.height = height;
- }
-
public void setOutfile(String outfile) {
this.outfile = outfile;
}
@@ -307,18 +205,10 @@
this.params = params;
}
- public void setPreloader(String preloader) {
- this.preloader = preloader;
- }
-
public void setTitle(String title) {
this.title = title;
}
- public void setUpdateMode(String updateMode) {
- this.updateMode = updateMode;
- }
-
public void setVendor(String vendor) {
this.vendor = vendor;
}
@@ -327,22 +217,10 @@
this.email = email;
}
- public void setWidth(int width) {
- this.width = width;
- }
-
- public void setExtension(boolean isExtension) {
- this.isExtension = isExtension;
- }
-
public void setApplicationClass(String applicationClass) {
this.applicationClass = applicationClass;
}
- public void setIncludeDT(boolean doEmbed) {
- includeDT = doEmbed;
- }
-
public void setJreInstaller(boolean value) {
jreInstaller = value;
}
@@ -362,13 +240,13 @@
}
// we need to expand as in some cases
- // (most notably javapackager)
+ // (most notably jpackager)
// we may get "." as filename and assumption is we include
// everything in the given folder
// (IOUtils.copyfiles() have recursive behavior)
List<File> expandFileset(File root) {
List<File> files = new LinkedList<>();
- if (jdk.packager.internal.IOUtils.isNotSymbolicLink(root)) {
+ if (!Files.isSymbolicLink(root.toPath())) {
if (root.isDirectory()) {
File[] children = root.listFiles();
if (children != null) {
@@ -412,43 +290,6 @@
baseDir, new LinkedHashSet<>(expandFileset(file))));
}
- public void addResource(File baseDir, String path, String type) {
- addResource(baseDir, createFile(baseDir, path), type);
- }
-
- public void addResource(File baseDir, File file, String type) {
- addResource(baseDir, file, "eager", type, null, null);
- }
-
- public void addResource(File baseDir, File file, String mode,
- String type, String os, String arch) {
- Set<File> singleFile = new LinkedHashSet<>();
- singleFile.add(file);
- if (baseDir == null) {
- baseDir = file.getParentFile();
- }
- RelativeFileSet rfs = new RelativeFileSet(baseDir, singleFile);
- rfs.setArch(arch);
- rfs.setMode(mode);
- rfs.setOs(os);
- rfs.setType(parseTypeFromString(type, file));
- resources.add(rfs);
- }
-
- private RelativeFileSet.Type parseTypeFromString(String type, File file) {
- if (type == null) {
- if (file.getName().endsWith(".jar")) {
- return RelativeFileSet.Type.jar;
- } else if (file.getName().endsWith(".jnlp")) {
- return RelativeFileSet.Type.jnlp;
- } else {
- return RelativeFileSet.Type.UNKNOWN;
- }
- } else {
- return RelativeFileSet.Type.valueOf(type);
- }
- }
-
private static File createFile(final File baseDir, final String path) {
final File testFile = new File(path);
return testFile.isAbsolute() ?
@@ -482,12 +323,14 @@
throw new PackagerException("ERR_MissingArgument", "--class");
}
if (!hasMain) {
- throw new PackagerException("ERR_MissingArgument", "--main-jar");
+ throw new PackagerException("ERR_MissingArgument",
+ "--main-jar");
}
}
// Validate app image if set
- String appImage = (String)bundlerArguments.get(Arguments.CLIOptions.PREDEFINED_APP_IMAGE.getId());
+ String appImage = (String)bundlerArguments.get(
+ Arguments.CLIOptions.PREDEFINED_APP_IMAGE.getId());
if (appImage != null) {
File appImageDir = new File(appImage);
if (!appImageDir.exists()) {
@@ -495,7 +338,8 @@
}
File appImageAppDir = new File(appImage + File.separator + "app");
- File appImageRuntimeDir = new File(appImage + File.separator + "runtime");
+ File appImageRuntimeDir = new File(appImage
+ + File.separator + "runtime");
if (!appImageAppDir.exists() || !appImageRuntimeDir.exists()) {
throw new PackagerException("ERR_AppImageInvalid", appImage);
}
@@ -553,8 +397,7 @@
StandardBundlerParam.MODULE_PATH.getID(),
StandardBundlerParam.ADD_MODULES.getID(),
StandardBundlerParam.LIMIT_MODULES.getID(),
- StandardBundlerParam.FILE_ASSOCIATIONS.getID(),
- JLinkBundlerHelper.DETECT_MODULES.getID()
+ StandardBundlerParam.FILE_ASSOCIATIONS.getID()
));
@SuppressWarnings("unchecked")
@@ -586,33 +429,11 @@
String currentOS = System.getProperty("os.name").toLowerCase();
String currentArch = getArch();
- for (RelativeFileSet rfs : resources) {
- String os = rfs.getOs();
- String arch = rfs.getArch();
- //skip resources for other OS
- // and nativelib jars (we are including raw libraries)
- if ((os == null || currentOS.contains(os.toLowerCase())) &&
- (arch == null ||
- currentArch.startsWith(arch.toLowerCase())) &&
- rfs.getType() != RelativeFileSet.Type.nativelib) {
- if (rfs.getType() == RelativeFileSet.Type.license) {
- for (String s : rfs.getIncludedFiles()) {
- bundleParams.addLicenseFile(s);
- }
- }
- }
- }
-
bundleParams.setAppResourcesList(resources);
bundleParams.setIdentifier(id);
- if (javaRuntimeWasSet) {
- bundleParams.setRuntime(javaRuntimeToUse);
- }
bundleParams.setApplicationClass(applicationClass);
- bundleParams.setPrelaoderClass(preloader);
- bundleParams.setName(this.appName);
bundleParams.setAppVersion(version);
bundleParams.setType(bundleType);
bundleParams.setBundleFormat(targetFormat);
@@ -643,8 +464,6 @@
bundleParams.setStripNativeCommands(stripNativeCommands);
}
- bundleParams.setSrcDir(srcdir);
-
if (modulePath != null && !modulePath.isEmpty()) {
bundleParams.setModulePath(modulePath);
}
@@ -657,10 +476,6 @@
bundleParams.setDebug(debugPort);
}
- if (detectmods != null) {
- bundleParams.setDetectMods(detectmods);
- }
-
Map<String, String> paramsMap = new TreeMap<>();
if (params != null) {
for (Param p : params) {
--- a/src/jdk.packager/share/classes/jdk/packager/internal/EnumeratedBundlerParam.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/EnumeratedBundlerParam.java Wed Oct 17 13:50:11 2018 -0400
@@ -52,7 +52,7 @@
*
*/
public class EnumeratedBundlerParam<T> extends BundlerParamInfo<T> {
- // Not sure if this is the correct order, my idea is that from and IDE's
+ // Not sure if this is the correct order, my idea is that from IDE
// perspective the string to display to the user is the key and then the
// value is some type of object (although probably a String in most cases)
private final Map<String, T> elements;
--- a/src/jdk.packager/share/classes/jdk/packager/internal/IOUtils.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/IOUtils.java Wed Oct 17 13:50:11 2018 -0400
@@ -37,7 +37,6 @@
import java.util.ArrayList;
import java.util.List;
-
public class IOUtils {
public static void deleteRecursive(File path) throws IOException {
@@ -166,7 +165,7 @@
return foldersize;
}
- //run "launcher paramfile" in the directory where paramfile is kept
+ // run "launcher paramfile" in the directory where paramfile is kept
public static void run(String launcher, File paramFile, boolean verbose)
throws IOException {
if (paramFile != null && paramFile.exists()) {
@@ -287,39 +286,4 @@
return ret;
}
-
- // no good test if we are running pre-JRE7
- // use heuristic approach
- // "false positive" is better than wrong answer
- public static boolean isNotSymbolicLink(File file) {
- //no symlinks on windows
- if (Platform.getPlatform() == Platform.WINDOWS) {
- return true;
- }
- try {
- if (file == null || file.getParent() == null) {
- return false;
- }
- File file_canonical = new File(
- file.getParentFile().getCanonicalFile(), file.getName());
- if (file_canonical.getCanonicalFile().equals(
- file_canonical.getAbsoluteFile())) {
- return true;
- }
- } catch (IOException ioe) {}
- return false;
- }
-
- public static byte[] readFully(File f) throws IOException {
- InputStream inp = new FileInputStream(f);
- // read fully into memory
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- byte[] buffer = new byte[1024];
- int length;
- while ((length = inp.read(buffer)) != -1) {
- baos.write(buffer, 0, length);
- }
- baos.close();
- return baos.toByteArray();
- }
}
--- a/src/jdk.packager/share/classes/jdk/packager/internal/InvalidBundlerParamException.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/InvalidBundlerParamException.java Wed Oct 17 13:50:11 2018 -0400
@@ -25,7 +25,6 @@
package jdk.packager.internal;
-
public class InvalidBundlerParamException extends RuntimeException {
public InvalidBundlerParamException(String message) {
super(message);
--- a/src/jdk.packager/share/classes/jdk/packager/internal/JLinkBundlerHelper.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/JLinkBundlerHelper.java Wed Oct 17 13:50:11 2018 -0400
@@ -25,7 +25,6 @@
package jdk.packager.internal;
-
import java.io.File;
import java.io.IOException;
import java.io.StringReader;
@@ -49,7 +48,6 @@
import jdk.packager.internal.builders.AbstractAppImageBuilder;
import jdk.tools.jlink.internal.packager.AppRuntimeImageBuilder;
-
public final class JLinkBundlerHelper {
private static final ResourceBundle I18N = ResourceBundle.getBundle(
@@ -57,39 +55,11 @@
private static final String JRE_MODULES_FILENAME =
"jdk/packager/internal/resources/jre.list";
private static final String SERVER_JRE_MODULES_FILENAME =
- "jdk/packager/internal/resources/server.jre.list";
+ "jdk/packager/internal/resources/jre.module.list";
private JLinkBundlerHelper() {}
@SuppressWarnings("unchecked")
- public static final BundlerParamInfo<Boolean> DETECT_MODULES =
- new StandardBundlerParam<>(
- I18N.getString("param.detect-modules.name"),
- I18N.getString("param.detect-modules.description"),
- "detect-modules",
- Boolean.class,
- p -> Boolean.FALSE,
- (s, p) -> Boolean.valueOf(s));
-
- @SuppressWarnings("unchecked")
- public static final BundlerParamInfo<Map<String, String>> JLINK_OPTIONS =
- new StandardBundlerParam<>(
- I18N.getString("param.jlink-options.name"),
- I18N.getString("param.jlink-options.description"),
- "jlinkOptions",
- (Class<Map<String, String>>) (Object) Map.class,
- p -> Collections.emptyMap(),
- (s, p) -> {
- try {
- Properties props = new Properties();
- props.load(new StringReader(s));
- return new LinkedHashMap<>((Map)props);
- } catch (IOException e) {
- return new LinkedHashMap<>();
- }
- });
-
- @SuppressWarnings("unchecked")
public static final BundlerParamInfo<String> JLINK_BUILDER =
new StandardBundlerParam<>(
I18N.getString("param.jlink-builder.name"),
@@ -277,30 +247,30 @@
Path outputDir = imageBuilder.getRoot();
String excludeFileList = imageBuilder.getExcludeFileList();
File mainJar = getMainJar(params);
- Module.ModuleType mainJarType = Module.ModuleType.Unknown;
+ ModFile.ModType mainJarType = ModFile.ModType.Unknown;
if (mainJar != null) {
- mainJarType = new Module(mainJar).getModuleType();
+ mainJarType = new ModFile(mainJar).getModType();
} else if (mainJar == null &&
StandardBundlerParam.MODULE.fetchFrom(params) == null) {
// user specified only main class, all jars will be on the classpath
- mainJarType = Module.ModuleType.UnnamedJar;
+ mainJarType = ModFile.ModType.UnnamedJar;
}
// Modules
// The default for an unnamed jar is ALL_DEFAULT with the
// non-redistributable modules removed.
- if (mainJarType == Module.ModuleType.UnnamedJar) {
+ if (mainJarType == ModFile.ModType.UnnamedJar) {
addModules.add(ModuleHelper.ALL_RUNTIME);
- } else if (mainJarType == Module.ModuleType.Unknown ||
- mainJarType == Module.ModuleType.ModularJar) {
+ } else if (mainJarType == ModFile.ModType.Unknown ||
+ mainJarType == ModFile.ModType.ModularJar) {
String mainModule = getMainModule(params);
addModules.add(mainModule);
// Error if any of the srcfiles are modular jars.
Set<String> modularJars =
- getResourceFileJarList(params, Module.JarType.ModularJar);
+ getResourceFileJarList(params, ModFile.JarType.ModularJar);
if (!modularJars.isEmpty()) {
throw new Exception(MessageFormat.format(I18N.getString(
@@ -415,7 +385,7 @@
}
private static Set<String> getResourceFileJarList(
- Map<String, ? super Object> params, Module.JarType Query) {
+ Map<String, ? super Object> params, ModFile.JarType Query) {
Set<String> files = new LinkedHashSet();
String srcdir = StandardBundlerParam.SOURCE_DIR.fetchFrom(params);
@@ -432,19 +402,15 @@
break;
}
case ModularJar: {
- Module module = new Module(new File(filename));
-
- if (module.getModuleType() ==
- Module.ModuleType.ModularJar) {
+ ModFile mod = new ModFile(new File(filename));
+ if (mod.getModType() == ModFile.ModType.ModularJar) {
files.add(filename);
}
break;
}
case UnnamedJar: {
- Module module = new Module(new File(filename));
-
- if (module.getModuleType() ==
- Module.ModuleType.UnnamedJar) {
+ ModFile mod = new ModFile(new File(filename));
+ if (mod.getModType() == ModFile.ModType.UnnamedJar) {
files.add(filename);
}
break;
@@ -461,15 +427,15 @@
List<Path> modulePath, Set<String> modules) {
Set<String> result = new LinkedHashSet();
ModuleManager mm = new ModuleManager(modulePath);
- List<Module> lmodules =
+ List<ModFile> lmodfiles =
mm.getModules(EnumSet.of(ModuleManager.SearchType.ModularJar,
ModuleManager.SearchType.Jmod,
ModuleManager.SearchType.ExplodedModule));
- HashMap<String, Module> validModules = new HashMap<>();
+ HashMap<String, ModFile> validModules = new HashMap<>();
- for (Module module : lmodules) {
- validModules.put(module.getModuleName(), module);
+ for (ModFile modFile : lmodfiles) {
+ validModules.put(modFile.getModName(), modFile);
}
for (String name : modules) {
@@ -541,14 +507,14 @@
private static Set<String> getModuleNamesFromPath(List<Path> Value) {
Set<String> result = new LinkedHashSet();
ModuleManager mm = new ModuleManager(Value);
- List<Module> modules =
+ List<ModFile> modFiles =
mm.getModules(
EnumSet.of(ModuleManager.SearchType.ModularJar,
ModuleManager.SearchType.Jmod,
ModuleManager.SearchType.ExplodedModule));
- for (Module module : modules) {
- result.add(module.getModuleName());
+ for (ModFile modFile : modFiles) {
+ result.add(modFile.getModName());
}
return result;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/JPackagerToolProvider.java Wed Oct 17 13:50:11 2018 -0400
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.packager.internal;
+
+import java.io.PrintWriter;
+import java.util.spi.ToolProvider;
+
+public class JPackagerToolProvider implements ToolProvider {
+
+ public String name() {
+ return "jpackager";
+ }
+
+ public synchronized int run(
+ PrintWriter out, PrintWriter err, String... args) {
+ try {
+ jdk.packager.main.Main.run(out, err, args);
+ } catch (Exception ignored) {
+ return 1;
+ }
+ return 0;
+ }
+}
--- a/src/jdk.packager/share/classes/jdk/packager/internal/JavaPackagerToolProvider.java Fri Oct 12 19:00:51 2018 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package jdk.packager.internal;
-
-import java.io.PrintWriter;
-import java.util.spi.ToolProvider;
-
-public class JavaPackagerToolProvider implements ToolProvider {
-
- public String name() {
- return "javapackager";
- }
-
- public synchronized int run(
- PrintWriter out, PrintWriter err, String... args) {
- try {
- jdk.packager.Main.run(out, err, args);
- } catch (Exception ignored) {
- return 1;
- }
- return 0;
- }
-}
--- a/src/jdk.packager/share/classes/jdk/packager/internal/JreUtils.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/JreUtils.java Wed Oct 17 13:50:11 2018 -0400
@@ -26,10 +26,10 @@
package jdk.packager.internal;
import java.io.File;
+import java.nio.file.Files;
import java.util.HashSet;
import java.util.Set;
-
public class JreUtils {
public static class Rule {
@@ -113,7 +113,7 @@
File[] lst = root.listFiles();
if (lst != null) {
for (File f : lst) {
- if ((acceptSymlinks || IOUtils.isNotSymbolicLink(f)) &&
+ if ((acceptSymlinks || !Files.isSymbolicLink(f.toPath())) &&
!shouldExclude(base, f, ruleset)) {
if (f.isDirectory()) {
walk(base, f, ruleset, files, acceptSymlinks);
--- a/src/jdk.packager/share/classes/jdk/packager/internal/Log.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/Log.java Wed Oct 17 13:50:11 2018 -0400
@@ -30,7 +30,6 @@
import java.io.PrintStream;
import java.io.PrintWriter;
-
public class Log {
public static class Logger {
private boolean verbose = false;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/ModFile.java Wed Oct 17 13:50:11 2018 -0400
@@ -0,0 +1,126 @@
+/*
+ * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.packager.internal;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+
+public final class ModFile {
+ private final String filename;
+ private final ModType moduleType;
+
+ public enum JarType {All, UnnamedJar, ModularJar}
+ public enum ModType {
+ Unknown, UnnamedJar, ModularJar, Jmod, ExplodedModule}
+
+ public ModFile(File aFile) {
+ super();
+ filename = aFile.getPath();
+ moduleType = getModType(aFile);
+ }
+
+ public String getModName() {
+ File file = new File(getFileName());
+ // do not try to remove extension for directories
+ return moduleType == ModType.ExplodedModule ?
+ file.getName() : getFileWithoutExtension(file.getName());
+ }
+
+ public String getFileName() {
+ return filename;
+ }
+
+ public ModType getModType() {
+ return moduleType;
+ }
+
+ private static ModType getModType(File aFile) {
+ ModType result = ModType.Unknown;
+ String filename = aFile.getAbsolutePath();
+
+ if (aFile.isFile()) {
+ if (filename.endsWith(".jmod")) {
+ result = ModType.Jmod;
+ }
+ else if (filename.endsWith(".jar")) {
+ JarType status = isModularJar(filename);
+
+ if (status == JarType.ModularJar) {
+ result = ModType.ModularJar;
+ }
+ else if (status == JarType.UnnamedJar) {
+ result = ModType.UnnamedJar;
+ }
+ }
+ }
+ else if (aFile.isDirectory()) {
+ File moduleInfo = new File(
+ filename + File.separator + "module-info.class");
+
+ if (moduleInfo.exists()) {
+ result = ModType.ExplodedModule;
+ }
+ }
+
+ return result;
+ }
+
+ private static JarType isModularJar(String FileName) {
+ JarType result = JarType.All;
+
+ try {
+ ZipInputStream zip =
+ new ZipInputStream(new FileInputStream(FileName));
+ result = JarType.UnnamedJar;
+
+ try {
+ for (ZipEntry entry = zip.getNextEntry(); entry != null;
+ entry = zip.getNextEntry()) {
+ if (entry.getName().matches("module-info.class")) {
+ result = JarType.ModularJar;
+ break;
+ }
+ }
+
+ zip.close();
+ } catch (IOException ex) {
+ }
+ } catch (FileNotFoundException e) {
+ }
+
+ return result;
+ }
+
+ private static String getFileWithoutExtension(String FileName) {
+ return FileName.replaceFirst("[.][^.]+$", "");
+ }
+}
--- a/src/jdk.packager/share/classes/jdk/packager/internal/Module.java Fri Oct 12 19:00:51 2018 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,127 +0,0 @@
-/*
- * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package jdk.packager.internal;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-
-
-public final class Module {
- private final String filename;
- private final ModuleType moduleType;
-
- public enum JarType {All, UnnamedJar, ModularJar}
- public enum ModuleType {
- Unknown, UnnamedJar, ModularJar, Jmod, ExplodedModule}
-
- public Module(File AFile) {
- super();
- filename = AFile.getPath();
- moduleType = getModuleType(AFile);
- }
-
- public String getModuleName() {
- File file = new File(getFileName());
- // do not try to remove extension for directories
- return moduleType == ModuleType.ExplodedModule ?
- file.getName() : getFileWithoutExtension(file.getName());
- }
-
- public String getFileName() {
- return filename;
- }
-
- public ModuleType getModuleType() {
- return moduleType;
- }
-
- private static ModuleType getModuleType(File AFile) {
- ModuleType result = ModuleType.Unknown;
- String filename = AFile.getAbsolutePath();
-
- if (AFile.isFile()) {
- if (filename.endsWith(".jmod")) {
- result = ModuleType.Jmod;
- }
- else if (filename.endsWith(".jar")) {
- JarType status = isModularJar(filename);
-
- if (status == JarType.ModularJar) {
- result = ModuleType.ModularJar;
- }
- else if (status == JarType.UnnamedJar) {
- result = ModuleType.UnnamedJar;
- }
- }
- }
- else if (AFile.isDirectory()) {
- File moduleInfo = new File(
- filename + File.separator + "module-info.class");
-
- if (moduleInfo.exists()) {
- result = ModuleType.ExplodedModule;
- }
- }
-
- return result;
- }
-
- private static JarType isModularJar(String FileName) {
- JarType result = JarType.All;
-
- try {
- ZipInputStream zip =
- new ZipInputStream(new FileInputStream(FileName));
- result = JarType.UnnamedJar;
-
- try {
- for (ZipEntry entry = zip.getNextEntry(); entry != null;
- entry = zip.getNextEntry()) {
- if (entry.getName().matches("module-info.class")) {
- result = JarType.ModularJar;
- break;
- }
- }
-
- zip.close();
- } catch (IOException ex) {
- }
- } catch (FileNotFoundException e) {
- }
-
- return result;
- }
-
- private static String getFileWithoutExtension(String FileName) {
- return FileName.replaceFirst("[.][^.]+$", "");
- }
-}
--- a/src/jdk.packager/share/classes/jdk/packager/internal/ModuleManager.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/ModuleManager.java Wed Oct 17 13:50:11 2018 -0400
@@ -32,7 +32,6 @@
import java.util.EnumSet;
import java.util.List;
-
public final class ModuleManager {
private final List<String> folders = new ArrayList();
@@ -63,14 +62,14 @@
}
}
- public List<Module> getModules() {
+ public List<ModFile> getModules() {
return getModules(EnumSet.of(SearchType.UnnamedJar,
SearchType.ModularJar, SearchType.Jmod,
SearchType.ExplodedModule));
}
- public List<Module> getModules(EnumSet<SearchType> Search) {
- List<Module> result = new ArrayList();
+ public List<ModFile> getModules(EnumSet<SearchType> Search) {
+ List<ModFile> result = new ArrayList();
for (String folder : folders) {
result.addAll(getAllModulesInDirectory(folder, Search));
@@ -79,36 +78,36 @@
return result;
}
- private static List<Module> getAllModulesInDirectory(String Folder,
+ private static List<ModFile> getAllModulesInDirectory(String Folder,
EnumSet<SearchType> Search) {
- List<Module> result = new ArrayList();
+ List<ModFile> result = new ArrayList();
File lfolder = new File(Folder);
File[] files = lfolder.listFiles();
for (File file : files) {
- Module module = new Module(file);
+ ModFile modFile = new ModFile(file);
- switch (module.getModuleType()) {
+ switch (modFile.getModType()) {
case Unknown:
break;
case UnnamedJar:
if (Search.contains(SearchType.UnnamedJar)) {
- result.add(module);
+ result.add(modFile);
}
break;
case ModularJar:
if (Search.contains(SearchType.ModularJar)) {
- result.add(module);
+ result.add(modFile);
}
break;
case Jmod:
if (Search.contains(SearchType.Jmod)) {
- result.add(module);
+ result.add(modFile);
}
break;
case ExplodedModule:
if (Search.contains(SearchType.ExplodedModule)) {
- result.add(module);
+ result.add(modFile);
}
break;
}
--- a/src/jdk.packager/share/classes/jdk/packager/internal/PackagerException.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/PackagerException.java Wed Oct 17 13:50:11 2018 -0400
@@ -28,7 +28,6 @@
import java.text.MessageFormat;
import java.util.ResourceBundle;
-
public class PackagerException extends Exception {
private static final ResourceBundle bundle =
ResourceBundle.getBundle("jdk.packager.internal.resources.Bundle");
--- a/src/jdk.packager/share/classes/jdk/packager/internal/Param.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/Param.java Wed Oct 17 13:50:11 2018 -0400
@@ -25,7 +25,6 @@
package jdk.packager.internal;
-
public class Param {
String name;
String value;
--- a/src/jdk.packager/share/classes/jdk/packager/internal/Platform.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/Platform.java Wed Oct 17 13:50:11 2018 -0400
@@ -37,17 +37,17 @@
*
* switch(platform) {
* case Platform.MAC: {
- * //TODO Do something
+ * // Do something
* break;
* }
* case Platform.WINDOWS:
* case Platform.LINUX: {
- * //TODO Do something else
+ * // Do something else
* }
* }
*
*/
-public enum Platform {UNKNOWN, WINDOWS, LINUX, MAC, SOLARIS;
+public enum Platform {UNKNOWN, WINDOWS, LINUX, MAC;
private static final Platform platform;
private static final int majorVersion;
private static final int minorVersion;
@@ -64,9 +64,6 @@
else if (os.indexOf("mac") >= 0) {
platform = Platform.MAC;
}
- else if (os.indexOf("sunos") >= 0 || os.indexOf("solaris") >= 0) {
- platform = Platform.SOLARIS;
- }
else {
platform = Platform.UNKNOWN;
}
--- a/src/jdk.packager/share/classes/jdk/packager/internal/RedistributableModules.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/RedistributableModules.java Wed Oct 17 13:50:11 2018 -0400
@@ -32,14 +32,10 @@
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.Optional;
-
-import jdk.tools.jlink.internal.packager.AppRuntimeImageBuilder;
-
import java.lang.module.ModuleDescriptor;
import java.lang.module.ModuleFinder;
import java.lang.module.ModuleReference;
import java.lang.module.ModuleReader;
-
import java.nio.file.Path;
import java.util.HashSet;
import java.util.LinkedHashSet;
@@ -47,6 +43,7 @@
import java.util.NoSuchElementException;
import java.util.Set;
+import jdk.tools.jlink.internal.packager.AppRuntimeImageBuilder;
public final class RedistributableModules {
private static final String JDK_PACKAGER_MODULE = "jdk.packager";
@@ -129,10 +126,10 @@
Set<String> limitModules) {
String result = "";
- Module module = new Module(moduleFile);
+ ModFile modFile = new ModFile(moduleFile);
ModuleFinder finder = AppRuntimeImageBuilder.moduleFinder(modulePath,
addModules, limitModules);
- Optional<ModuleReference> mref = finder.find(module.getModuleName());
+ Optional<ModuleReference> mref = finder.find(modFile.getModName());
if (mref.isPresent()) {
ModuleDescriptor descriptor = mref.get().descriptor();
--- a/src/jdk.packager/share/classes/jdk/packager/internal/RelativeFileSet.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/RelativeFileSet.java Wed Oct 17 13:50:11 2018 -0400
@@ -26,19 +26,12 @@
package jdk.packager.internal;
import java.io.File;
-
import java.util.Collection;
import java.util.LinkedHashSet;
import java.util.Set;
-
public class RelativeFileSet {
- public enum Type {
- UNKNOWN, jnlp, jar, nativelib, icon, license, data
- }
-
- private Type type = Type.UNKNOWN;
private String mode;
private String os;
private String arch;
@@ -47,7 +40,6 @@
private Set<String> files = new LinkedHashSet<>();
public RelativeFileSet(RelativeFileSet copy) {
- type = copy.type;
mode = copy.mode;
os = copy.os;
arch = copy.arch;
@@ -65,7 +57,7 @@
" does not belong to " + baseAbsolute);
}
if (!absolute.equals(baseAbsolute)) {
- // possible in javapackager case
+ // possible in jpackager case
this.files.add(absolute.substring(baseAbsolute.length()+1));
}
}
@@ -102,7 +94,7 @@
if (files.contains(requiredFile)) {
return true;
} else {
- Log.debug(" RelativeFileSet does not contain [" + requiredFile + "]");
+ Log.debug("RelativeFileSet does not contain [" +requiredFile+ "]");
return false;
}
}
@@ -123,14 +115,6 @@
Log.verbose("\n========");
}
- public Type getType() {
- return type;
- }
-
- public void setType(Type type) {
- this.type = type;
- }
-
public String getMode() {
return mode;
}
--- a/src/jdk.packager/share/classes/jdk/packager/internal/SecondaryLauncherArguments.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/SecondaryLauncherArguments.java Wed Oct 17 13:50:11 2018 -0400
@@ -74,7 +74,8 @@
putUnlessNull(bundleParams,
Arguments.CLIOptions.WIN_SHORTCUT_HINT.getId(),
getOptionValue(CLIOptions.WIN_SHORTCUT_HINT));
- putUnlessNull(bundleParams, Arguments.CLIOptions.WIN_CONSOLE_HINT.getId(),
+ putUnlessNull(bundleParams,
+ Arguments.CLIOptions.WIN_CONSOLE_HINT.getId(),
getOptionValue(CLIOptions.WIN_CONSOLE_HINT));
putUnlessNull(bundleParams, Arguments.CLIOptions.SINGLETON.getId(),
getOptionValue(CLIOptions.SINGLETON));
--- a/src/jdk.packager/share/classes/jdk/packager/internal/StandardBundlerParam.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/StandardBundlerParam.java Wed Oct 17 13:50:11 2018 -0400
@@ -26,6 +26,7 @@
package jdk.packager.internal;
import jdk.packager.internal.bundlers.BundleParams;
+import jdk.packager.internal.builders.AbstractAppImageBuilder;
import java.io.File;
import java.io.IOException;
@@ -55,7 +56,6 @@
import java.util.jar.Manifest;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
-import jdk.packager.internal.builders.AbstractAppImageBuilder;
public class StandardBundlerParam<T> extends BundlerParamInfo<T> {
@@ -146,7 +146,7 @@
(s, p) -> getMainJar(s, p)
);
- // TODO: remove it
+ // TODO: test CLASSPATH jar manifest Attributet
public static final StandardBundlerParam<String> CLASSPATH =
new StandardBundlerParam<>(
I18N.getString("param.classpath.name"),
@@ -396,17 +396,6 @@
(s, p) -> s
);
- // TODO: remove it?
- public static final StandardBundlerParam<String> PRELOADER_CLASS =
- new StandardBundlerParam<>(
- I18N.getString("param.preloader.name"),
- I18N.getString("param.preloader.description"),
- "preloader",
- String.class,
- p -> null,
- null
- );
-
public static final StandardBundlerParam<Boolean> VERBOSE =
new StandardBundlerParam<>(
I18N.getString("param.verbose.name"),
--- a/src/jdk.packager/share/classes/jdk/packager/internal/UnsupportedPlatformException.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/UnsupportedPlatformException.java Wed Oct 17 13:50:11 2018 -0400
@@ -25,5 +25,5 @@
package jdk.packager.internal;
-
-public class UnsupportedPlatformException extends Exception {}
+public class UnsupportedPlatformException extends Exception {
+}
--- a/src/jdk.packager/share/classes/jdk/packager/internal/ValidOptions.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/ValidOptions.java Wed Oct 17 13:50:11 2018 -0400
@@ -22,6 +22,7 @@
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
+
package jdk.packager.internal;
import java.util.HashMap;
@@ -30,7 +31,6 @@
import java.util.Set;
import jdk.packager.internal.Arguments.CLIOptions;
-
public class ValidOptions {
private ValidOptions() {};
--- a/src/jdk.packager/share/classes/jdk/packager/internal/builders/AbstractAppImageBuilder.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/builders/AbstractAppImageBuilder.java Wed Oct 17 13:50:11 2018 -0400
@@ -25,11 +25,11 @@
package jdk.packager.internal.builders;
-
import jdk.packager.internal.IOUtils;
-
import jdk.packager.internal.Log;
import jdk.packager.internal.StandardBundlerParam;
+import jdk.packager.internal.JLinkBundlerHelper;
+import jdk.packager.internal.ModFile;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -43,18 +43,16 @@
import java.util.List;
import java.util.Map;
import java.util.ResourceBundle;
+import java.util.ArrayList;
import static jdk.packager.internal.StandardBundlerParam.*;
import static jdk.packager.internal.StandardBundlerParam.ARGUMENTS;
-import java.util.ArrayList;
-import jdk.packager.internal.JLinkBundlerHelper;
-import jdk.packager.internal.Module;
-
public abstract class AbstractAppImageBuilder {
private static final ResourceBundle I18N =
- ResourceBundle.getBundle("jdk.packager.internal.resources.builders.AbstractAppImageBuilder");
+ ResourceBundle.getBundle(
+ "jdk.packager.internal.resources.builders.AbstractAppImageBuilder");
//do not use file separator -
// we use it for classpath lookup and there / are not platform specific
@@ -64,7 +62,8 @@
private final Path root;
protected List<String> excludeFileList = new ArrayList<>();
- public AbstractAppImageBuilder(Map<String, Object> properties, Path root) throws IOException {
+ public AbstractAppImageBuilder(Map<String, Object> properties,
+ Path root) throws IOException {
this.properties = properties;
this.root = root;
excludeFileList.add(".*\\.diz");
@@ -83,20 +82,11 @@
}
public String getExcludeFileList() {
- String result = "";
-
- for (String item : excludeFileList) {
- if (!result.isEmpty()) {
- result += ",";
- }
-
- result += item;
- }
-
- return result;
+ return String.join(",", excludeFileList);
}
- protected void copyEntry(Path appDir, File srcdir, String fname) throws IOException {
+ protected void copyEntry(Path appDir, File srcdir, String fname)
+ throws IOException {
Path dest = appDir.resolve(fname);
Files.createDirectories(dest.getParent());
File src = new File(srcdir, fname);
@@ -108,8 +98,8 @@
}
protected InputStream locateResource(String publicName, String category,
- String defaultName, File customFile,
- boolean verbose, File publicRoot) throws IOException {
+ String defaultName, File customFile,
+ boolean verbose, File publicRoot) throws IOException {
InputStream is = null;
boolean customFromClasspath = false;
boolean customFromFile = false;
@@ -131,29 +121,42 @@
if (is == null && defaultName != null) {
is = getResourceAsStream(defaultName);
}
- String msg = null;
- if (customFromClasspath) {
- msg = MessageFormat.format(I18N.getString("message.using-custom-resource-from-classpath"), category == null ? "" : "[" + category + "] ", publicName);
- } else if (customFromFile) {
- msg = MessageFormat.format(I18N.getString("message.using-custom-resource-from-file"), category == null ? "" : "[" + category + "] ", customFile.getAbsoluteFile());
- } else if (is != null) {
- msg = MessageFormat.format(I18N.getString("message.using-default-resource-from-classpath"), category == null ? "" : "[" + category + "] ", publicName);
- } else {
- msg = MessageFormat.format(I18N.getString("message.using-default-resource"), category == null ? "" : "[" + category + "] ", publicName);
- }
if (verbose) {
- Log.info(msg);
+ String msg = null;
+ if (customFromClasspath) {
+ msg = MessageFormat.format(I18N.getString(
+ "message.using-custom-resource-from-classpath"),
+ category == null ? "" : "[" + category + "] ", publicName);
+ } else if (customFromFile) {
+ msg = MessageFormat.format(I18N.getString(
+ "message.using-custom-resource-from-file"),
+ category == null ? "" : "[" + category + "] ",
+ customFile.getAbsoluteFile());
+ } else if (is != null) {
+ msg = MessageFormat.format(I18N.getString(
+ "message.using-default-resource-from-classpath"),
+ category == null ? "" : "[" + category + "] ", publicName);
+ } else {
+ msg = MessageFormat.format(I18N.getString(
+ "message.using-default-resource"),
+ category == null ? "" : "[" + category + "] ", publicName);
+ }
+ if (msg != null) {
+ Log.info(msg);
+ }
}
return is;
}
protected String preprocessTextResource(String publicName, String category,
- String defaultName, Map<String, String> pairs,
- boolean verbose, File publicRoot) throws IOException {
- InputStream inp = locateResource(publicName, category, defaultName, null, verbose, publicRoot);
+ String defaultName, Map<String, String> pairs,
+ boolean verbose, File publicRoot) throws IOException {
+ InputStream inp = locateResource(publicName, category,
+ defaultName, null, verbose, publicRoot);
if (inp == null) {
- throw new RuntimeException("Module corrupt? No "+defaultName+" resource!");
+ throw new RuntimeException(
+ "Module corrupt? No "+defaultName+" resource!");
}
try (InputStream is = inp) {
@@ -176,14 +179,15 @@
}
}
- public void writeCfgFile(Map<String, ? super Object> params, File cfgFileName, String runtimeLocation) throws IOException {
+ public void writeCfgFile(Map<String, ? super Object> params,
+ File cfgFileName, String runtimeLocation) throws IOException {
cfgFileName.delete();
File mainJar = JLinkBundlerHelper.getMainJar(params);
- Module.ModuleType mainJarType = Module.ModuleType.Unknown;
+ ModFile.ModType mainJarType = ModFile.ModType.Unknown;
if (mainJar != null) {
- mainJarType = new Module(mainJar).getModuleType();
+ mainJarType = new ModFile(mainJar).getModType();
}
String mainModule = StandardBundlerParam.MODULE.fetchFrom(params);
@@ -196,23 +200,28 @@
out.println("app.preferences.id=" + PREFERENCES_ID.fetchFrom(params));
out.println("app.runtime=" + runtimeLocation);
out.println("app.identifier=" + IDENTIFIER.fetchFrom(params));
- out.println("app.classpath=" + String.join(File.pathSeparator, CLASSPATH.fetchFrom(params).split("[ :;]")));
- out.println("app.application.instance=" + (SINGLETON.fetchFrom(params) ? "single" : "multiple"));
+ out.println("app.classpath=" + String.join(File.pathSeparator,
+ CLASSPATH.fetchFrom(params).split("[ :;]")));
+ out.println("app.application.instance=" +
+ (SINGLETON.fetchFrom(params) ? "single" : "multiple"));
// The main app is required to be a jar, modular or unnamed.
if (mainModule != null &&
- (mainJarType == Module.ModuleType.Unknown ||
- mainJarType == Module.ModuleType.ModularJar)) {
+ (mainJarType == ModFile.ModType.Unknown ||
+ mainJarType == ModFile.ModType.ModularJar)) {
out.println("app.mainmodule=" + mainModule);
} else {
String mainClass = JLinkBundlerHelper.getMainClass(params);
// If the app is contained in an unnamed jar then launch it the
- // legacy way and the main class string must be of the format com/foo/Main
+ // legacy way and the main class string must be
+ // of the format com/foo/Main
if (mainJar != null) {
- out.println("app.mainjar=" + mainJar.toPath().getFileName().toString());
+ out.println("app.mainjar="
+ + mainJar.toPath().getFileName().toString());
}
if (mainClass != null) {
- out.println("app.mainclass=" + mainClass.replaceAll("\\.", "/"));
+ out.println("app.mainclass="
+ + mainClass.replaceAll("\\.", "/"));
}
}
@@ -222,12 +231,16 @@
out.println("app.java.version=" + version);
}
- out.println("packager.java.version=" + System.getProperty("java.version"));
+ out.println("packager.java.version="
+ + System.getProperty("java.version"));
Integer port = JLinkBundlerHelper.DEBUG.fetchFrom(params);
if (port != null) {
- out.println("app.debug=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=localhost:" + port);
+ out.println(
+ "app.debug=-agentlib:jdwp=transport=dt_socket,"
+ + "server=y,suspend=y,address=localhost:"
+ + port);
}
out.println();
@@ -240,16 +253,13 @@
for (Map.Entry<String, String> property : jvmProps.entrySet()) {
out.println("-D" + property.getKey() + "=" + property.getValue());
}
- String preloader = PRELOADER_CLASS.fetchFrom(params);
- if (preloader != null) {
- out.println("-Djavafx.preloader="+preloader);
- }
out.println();
out.println("[ArgOptions]");
List<String> args = ARGUMENTS.fetchFrom(params);
for (String arg : args) {
- if (arg.endsWith("=") && (arg.indexOf("=") == arg.lastIndexOf("="))) {
+ if (arg.endsWith("=") &&
+ (arg.indexOf("=") == arg.lastIndexOf("="))) {
out.print(arg.substring(0, arg.length() - 1));
out.println("\\=");
} else {
@@ -265,5 +275,4 @@
return null;
}
- protected abstract String getCacheLocation(Map<String, ? super Object> params);
}
--- a/src/jdk.packager/share/classes/jdk/packager/internal/bundlers/BundleParams.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/bundlers/BundleParams.java Wed Oct 17 13:50:11 2018 -0400
@@ -27,6 +27,7 @@
import jdk.packager.internal.*;
import jdk.packager.internal.bundlers.Bundler.BundleType;
+import jdk.packager.internal.JLinkBundlerHelper;
import java.io.File;
import java.io.IOException;
@@ -37,70 +38,76 @@
import static jdk.packager.internal.StandardBundlerParam.*;
-import jdk.packager.internal.JLinkBundlerHelper;
-
-
public class BundleParams {
final protected Map<String, ? super Object> params;
- public static final String PARAM_RUNTIME = "runtime"; // RelativeFileSet
- public static final String PARAM_APP_RESOURCES = "appResources"; // RelativeFileSet
- public static final String PARAM_TYPE = "type"; // BundlerType
- public static final String PARAM_BUNDLE_FORMAT = "bundleFormat"; // String
- public static final String PARAM_ICON = "icon"; // String
+ // RelativeFileSet
+ public static final String PARAM_APP_RESOURCES = "appResources";
- /* Name of bundle file and native launcher */
- public static final String PARAM_NAME = "name"; // String
+ // BundlerType
+ public static final String PARAM_TYPE = "type";
+
+ // String
+ public static final String PARAM_BUNDLE_FORMAT = "bundleFormat";
+ // String
+ public static final String PARAM_ICON = "icon";
- /* application vendor, used by most of the bundlers */
- public static final String PARAM_VENDOR = "vendor"; // String
+ // String - Name of bundle file and native launcher
+ public static final String PARAM_NAME = "name";
- /* email name and email, only used for debian */
- public static final String PARAM_EMAIL = "email"; // String
+ // String - application vendor, used by most of the bundlers
+ public static final String PARAM_VENDOR = "vendor";
- /* Copyright. Used on Mac */
- public static final String PARAM_COPYRIGHT = "copyright"; // String
+ // String - email name and email, only used for debian */
+ public static final String PARAM_EMAIL = "email";
- /* GUID on windows for MSI, CFBundleIdentifier on Mac
- If not compatible with requirements then bundler either do not bundle
- or autogenerate */
- public static final String PARAM_IDENTIFIER = "identifier"; // String
+ /* String - Copyright. Used on Mac */
+ public static final String PARAM_COPYRIGHT = "copyright";
- /* shortcut preferences */
- public static final String PARAM_SHORTCUT = "shortcutHint"; // boolean
- public static final String PARAM_MENU = "menuHint"; // boolean
+ // String - GUID on windows for MSI, CFBundleIdentifier on Mac
+ // If not compatible with requirements then bundler either do not bundle
+ // or autogenerate
+ public static final String PARAM_IDENTIFIER = "identifier";
- /* Application version. Format may differ for different bundlers */
- public static final String PARAM_VERSION = "appVersion"; // String
- /* Application category. Used at least on Mac/Linux. Value is platform specific */
- public static final String PARAM_CATEGORY = "applicationCategory"; // String
+ /* boolean - shortcut preferences */
+ public static final String PARAM_SHORTCUT = "shortcutHint";
+ // boolean - menu shortcut preference
+ public static final String PARAM_MENU = "menuHint";
- /* Optional short application */
- public static final String PARAM_TITLE = "title"; // String
+ // String - Application version. Format may differ for different bundlers
+ public static final String PARAM_VERSION = "appVersion";
- /* Optional application description. Used by MSI and on Linux */
- public static final String PARAM_DESCRIPTION = "description"; // String
+ // String - Application category. Used at least on Mac/Linux.
+ // Value is platform specific
+ public static final String PARAM_CATEGORY = "applicationCategory";
- /* License type. Needed on Linux (rpm) */
- public static final String PARAM_LICENSE_TYPE = "licenseType"; // String
+ // String - Optional short application
+ public static final String PARAM_TITLE = "title";
- /* File(s) with license. Format is OS/bundler specific */
- public static final String PARAM_LICENSE_FILE = "licenseFile"; // List<String>
+ // String - Optional application description. Used by MSI and on Linux
+ public static final String PARAM_DESCRIPTION = "description";
+
+ // String - License type. Needed on Linux (rpm)
+ public static final String PARAM_LICENSE_TYPE = "licenseType";
- /* service/daemon install.
- null means "default" */
- public static final String PARAM_SERVICE_HINT = "serviceHint"; // Boolean
+ // List<String> - File(s) with license. Format is OS/bundler specific
+ public static final String PARAM_LICENSE_FILE = "licenseFile";
+
+ // boolean - service/daemon install. null means "default"
+ public static final String PARAM_SERVICE_HINT = "serviceHint";
- /* Main application class. Not used directly but used to derive default values */
- public static final String PARAM_APPLICATION_CLASS = "applicationClass"; // String
+ // String Main application class.
+ // Not used directly but used to derive default values
+ public static final String PARAM_APPLICATION_CLASS = "applicationClass";
- /* Adds a dialog to let the user choose a directory where the product will be installed. */
- public static final String PARAM_INSTALLDIR_CHOOSER = "installdirChooser"; // Boolean
+ // boolean - Adds a dialog to let the user choose a directory
+ // where the product will be installed.
+ public static final String PARAM_INSTALLDIR_CHOOSER = "installdirChooser";
- /* Prevents from launching multiple instances of application. */
- public static final String PARAM_SINGLETON = "singleton"; // Boolean
+ // boolean - Prevents from launching multiple instances of application.
+ public static final String PARAM_SINGLETON = "singleton";
/**
* create a new bundle with all default values
@@ -126,18 +133,17 @@
}
@SuppressWarnings("unchecked")
- public <C> C fetchParamWithDefault(Class<C> klass, C defaultValue, String... keys) {
+ public <C> C fetchParamWithDefault(
+ Class<C> klass, C defaultValue, String... keys) {
for (String key : keys) {
Object o = params.get(key);
if (klass.isInstance(o)) {
return (C) o;
- }
- else if (params.containsKey(keys) && o == null) {
+ } else if (params.containsKey(key) && o == null) {
return null;
+ } else if (o != null) {
+ Log.debug("Bundle param " + key + " is not type " + klass);
}
- //else if (o != null) {
- //TODO log an error.
- //}
}
return defaultValue;
}
@@ -146,7 +152,7 @@
return fetchParamWithDefault(klass, null, keys);
}
- //NOTE: we do not care about application parameters here
+ // NOTE: we do not care about application parameters here
// as they will be embeded into jar file manifest and
// java launcher will take care of them!
@@ -175,15 +181,8 @@
}
public void setStripNativeCommands(boolean value) {
- putUnlessNull(StandardBundlerParam.STRIP_NATIVE_COMMANDS.getID(), value);
- }
-
- public void setDetectMods(boolean value) {
- putUnlessNull(JLinkBundlerHelper.DETECT_MODULES.getID(), value);
- }
-
- public void setSrcDir(String value) {
- putUnlessNull(SOURCE_DIR.getID(), value);
+ putUnlessNull(StandardBundlerParam.STRIP_NATIVE_COMMANDS.getID(),
+ value);
}
public void setModulePath(String value) {
@@ -222,10 +221,6 @@
putUnlessNull(PARAM_APPLICATION_CLASS, applicationClass);
}
- public void setPrelaoderClass(String preloaderClass) {
- putUnlessNull(PRELOADER_CLASS.getID(), preloaderClass);
- }
-
public String getAppVersion() {
return fetchParam(VERSION);
}
@@ -319,7 +314,8 @@
// - FX marker (jfxrt.jar)
// - JDK marker (tools.jar)
private static boolean checkJDKRoot(File jdkRoot) {
- String exe = (Platform.getPlatform() == Platform.WINDOWS) ? ".exe" : "";
+ String exe = (Platform.getPlatform() == Platform.WINDOWS) ?
+ ".exe" : "";
File javac = new File(jdkRoot, "bin/javac" + exe);
if (!javac.exists()) {
Log.verbose("javac is not found at " + javac.getAbsolutePath());
@@ -328,97 +324,12 @@
File jmods = new File(jdkRoot, "jmods");
if (!jmods.exists()) {
- // old non-modular JDKs
- File rtJar = new File(jdkRoot, "jre/lib/rt.jar");
- if (!rtJar.exists()) {
- Log.verbose("rt.jar is not found at " + rtJar.getAbsolutePath());
- return false;
- }
-
- File jfxJar = new File(jdkRoot, "jre/lib/ext/jfxrt.jar");
- if (!jfxJar.exists()) {
- //Try again with new location
- jfxJar = new File(jdkRoot, "jre/lib/jfxrt.jar");
- if (!jfxJar.exists()) {
- Log.verbose("jfxrt.jar is not found at " + jfxJar.getAbsolutePath());
- return false;
- }
- }
-
-
- File toolsJar = new File(jdkRoot, "lib/tools.jar");
- if (!toolsJar.exists()) {
- Log.verbose("tools.jar is not found at " + toolsJar.getAbsolutePath());
- return false;
- }
+ Log.verbose("jmods is not found in " + jdkRoot.getAbsolutePath());
+ return false;
}
return true;
}
- //Depending on platform and user input we may get different "references"
- //Should support
- // - java.home
- // - reference to JDK install folder
- // - should NOT support JRE dir
- //Note: input could be null (then we asked to use system JRE)
- // or it must be valid directory
- //Returns null on validation failure. Returns jre root if ok.
- public static File validateRuntimeLocation(File javaHome) {
- if (javaHome == null) {
- return null;
- }
-
- File jdkRoot;
- File rtJar = new File(javaHome, "lib/rt.jar");
-
- if (rtJar.exists()) { //must be "java.home" case
- //i.e. we are in JRE folder
- jdkRoot = javaHome.getParentFile();
- } else { //expect it to be root of JDK installation folder
- //On Mac it could be jdk/ or jdk/Contents/Home
- //Norm to jdk/Contents/Home for validation
- if (Platform.getPlatform() == Platform.MAC) {
- File f = new File(javaHome, "Contents/Home");
- if (f.exists() && f.isDirectory()) {
- javaHome = f;
- }
- }
- jdkRoot = javaHome;
- }
-
- if (!checkJDKRoot(jdkRoot)) {
- throw new RuntimeException(
- "Can not find JDK artifacts in specified location: "
- + javaHome.getAbsolutePath());
- }
-
- return new File(jdkRoot, "jre");
- }
-
- //select subset of given runtime using predefined rules
- public void setRuntime(File baseDir) {
- baseDir = validateRuntimeLocation(baseDir);
-
- //mistake or explicit intent to use system runtime
- if (baseDir == null) {
- Log.verbose("No Java runtime to embed. Package will need system Java.");
- params.put(PARAM_RUNTIME, null);
- return;
- }
- doSetRuntime(baseDir);
- }
-
- //input dir "jdk/jre" (i.e. jre folder in the jdk)
- private void doSetRuntime(File baseDir) {
- params.put(PARAM_RUNTIME, baseDir.toString());
- }
-
- //Currently unused?
- //
- //public void setRuntime(RelativeFileSet fs) {
- // runtime = fs;
- //}
-
public jdk.packager.internal.RelativeFileSet getAppResource() {
return fetchParam(APP_RESOURCES);
}
@@ -427,7 +338,8 @@
putUnlessNull(PARAM_APP_RESOURCES, fs);
}
- public void setAppResourcesList(List<jdk.packager.internal.RelativeFileSet> rfs) {
+ public void setAppResourcesList(
+ List<jdk.packager.internal.RelativeFileSet> rfs) {
putUnlessNull(APP_RESOURCES_LIST.getID(), rfs);
}
@@ -473,11 +385,12 @@
private String mainJarClassPath = null;
private boolean useFXPackaging = true;
- //For regular executable Jars we need to take care of classpath
- //For JavaFX executable jars we do not need to pay attention to ClassPath entry in manifest
+ // For regular executable Jars we need to take care of classpath
+ // For JavaFX executable jars we do not need to pay attention to
+ // ClassPath entry in manifest
public String getAppClassPath() {
if (mainJar == null) {
- //this will find out answer
+ // this will find out answer
getMainApplicationJar();
}
if (useFXPackaging || mainJarClassPath == null) {
@@ -486,13 +399,14 @@
return mainJarClassPath;
}
- //assuming that application was packaged according to the rules
+ // assuming that application was packaged according to the rules
// we must have application jar, i.e. jar where we embed launcher
// and have main application class listed as main class!
- //If there are more than one, or none - it will be treated as deployment error
+ // If there are more than one, or none - it will be treated as
+ // deployment error
//
- //Note we look for both JavaFX executable jars and regular executable jars
- //As long as main "application" entry point is the same it is main class
+ // Note we look for both JavaFX executable jars and regular executable jars
+ // As long as main "application" entry point is the same it is main class
// (i.e. for FX jar we will use JavaFX manifest entry ...)
public String getMainApplicationJar() {
jdk.packager.internal.RelativeFileSet appResources = getAppResource();
@@ -502,7 +416,8 @@
File srcdir = appResources.getBaseDirectory();
JarFile jf = new JarFile(new File(srcdir, mainJar));
Manifest m = jf.getManifest();
- Attributes attrs = (m != null) ? m.getMainAttributes() : null;
+ Attributes attrs = (m != null) ?
+ m.getMainAttributes() : null;
if (attrs != null) {
setApplicationClass(
attrs.getValue(Attributes.Name.MAIN_CLASS));
@@ -531,7 +446,8 @@
if (javaMain) {
mainJar = fname;
- mainJarClassPath = attrs.getValue(Attributes.Name.CLASS_PATH);
+ mainJarClassPath = attrs.getValue(
+ Attributes.Name.CLASS_PATH);
return mainJar;
}
}
--- a/src/jdk.packager/share/classes/jdk/packager/internal/bundlers/Bundler.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/bundlers/Bundler.java Wed Oct 17 13:50:11 2018 -0400
@@ -25,7 +25,6 @@
package jdk.packager.internal.bundlers;
-
public final class Bundler {
private Bundler() {}
@@ -35,9 +34,6 @@
*/
public enum BundleType {
NONE,
- @Deprecated
- ALL, // Generates all bundlers
- NATIVE, // Generates both app image and all installers
IMAGE, // Generates app image only
INSTALLER // Generates installers
}
@@ -45,31 +41,6 @@
@Deprecated
public static final class Bundle {
public BundleType type = BundleType.NONE;
- public String format = null;
}
- @Deprecated
- static public Bundle stringToBundle(String value) {
- Bundle result = new Bundle();
-
- if (!value.isEmpty()) {
- if ("false".equals(value) || "none".equals(value)) {
- result.type = BundleType.NONE;
- } else if ("all".equals(value) || "true".equals(value)) {
- result.type = BundleType.ALL;
- } else if ("image".equals(value)) {
- result.type = BundleType.IMAGE;
- } else if ("native".equals(value)) {
- result.type = BundleType.NATIVE;
- } else if ("installer".equals(value)) {
- result.type = BundleType.INSTALLER;
- } else {
- //assume it is request to build only specific format (like exe or msi)
- result.type = BundleType.INSTALLER;
- result.format = (value != null) ? value.toLowerCase() : null;
- }
- }
-
- return result;
- }
}
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractBundler.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractBundler.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
param.images-root.name=
param.images-root.description=
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractBundler_ja.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractBundler_ja.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
param.images-root.name=
param.images-root.description=
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractBundler_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractBundler_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
param.images-root.name=
param.images-root.description=
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractImageBundler.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractImageBundler.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,8 +1,28 @@
-param.launcher-cfg-format.name=Launcher .cfg File Format
-param.launcher-cfg-format.description=The file format of the .cfg file used by the launcher executable. Current values are 'ini' and 'prop'.
-
-error.jre-missing-file=Java Runtime does not include {0}
-error.jre-missing-file.advice=Make sure ant is using Oracle JDK 8 or later.
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
error.no-application-class=Main application class is missing.
error.no-application-class.advice=Please specify main application class.
@@ -10,12 +30,3 @@
error.no-main-module=Main application module is missing.
error.no-main-module.advice=Make sure to use fx\:module task to create modular application.
-error.app-cds-bad-version=AppCDS Not Supported in Bundled Runtime.
-error.app-cds-bad-version.advice=AppCDS support was added in 8u40. Use an 8u40 or later Java Runtime
-
-error.app-cds-requires-runtime=AppCDS Not Supported with System Runtime.
-error.app-cds-requires-runtime.advice=AppCDS support requires that a runtime be bundled with the applicaiton. The use of a System JRE is not supported.
-
-error.app-cds-no-commercial-unlock=AppCDS Requires Commercial Features to be Unlocked.
-error.app-cds-no-commercial-unlock.advice=Verify you have a license for commercial features for the Oracle Java Runtime the set the bundler argument 'commercialFeatures' to 'true'.
-
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractImageBundler_ja.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractImageBundler_ja.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,18 +1,29 @@
-param.launcher-cfg-format.name=\u30e9\u30f3\u30c1\u30e3.cfg\u30d5\u30a1\u30a4\u30eb\u5f62\u5f0f
-param.launcher-cfg-format.description=\u30e9\u30f3\u30c1\u30e3\u5b9f\u884c\u53ef\u80fd\u30d5\u30a1\u30a4\u30eb\u306b\u3088\u308a\u4f7f\u7528\u3055\u308c\u308b.cfg\u30d5\u30a1\u30a4\u30eb\u306e\u30d5\u30a1\u30a4\u30eb\u5f62\u5f0f\u3002\u73fe\u5728\u306e\u5024\u306f'ini'\u304a\u3088\u3073'prop'\u3067\u3059\u3002
-
-error.jre-missing-file=Java\u30e9\u30f3\u30bf\u30a4\u30e0\u306b{0}\u306f\u542b\u307e\u308c\u3066\u3044\u307e\u305b\u3093
-error.jre-missing-file.advice=ant\u304cOracle JDK 8\u4ee5\u4e0a\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
error.no-main-module=\u30e1\u30a4\u30f3\u30fb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30fb\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u3042\u308a\u307e\u305b\u3093\u3002
error.no-main-module.advice=fx:module\u30bf\u30b9\u30af\u3092\u4f7f\u7528\u3057\u3066\u3001\u30e2\u30b8\u30e5\u30e9\u30fb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-error.app-cds-bad-version=AppCDS\u306f\u30d0\u30f3\u30c9\u30eb\u3055\u308c\u3066\u3044\u308b\u30e9\u30f3\u30bf\u30a4\u30e0\u3067\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
-error.app-cds-bad-version.advice=AppCDS\u306e\u30b5\u30dd\u30fc\u30c8\u306f8u40\u3067\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u30028u40\u4ee5\u4e0a\u306eJava\u30e9\u30f3\u30bf\u30a4\u30e0\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044
-
-error.app-cds-requires-runtime=AppCDS\u306f\u30b7\u30b9\u30c6\u30e0\u30fb\u30e9\u30f3\u30bf\u30a4\u30e0\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
-error.app-cds-requires-runtime.advice=AppCDS\u306e\u30b5\u30dd\u30fc\u30c8\u306b\u306f\u3001\u30e9\u30f3\u30bf\u30a4\u30e0\u304c\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u30d0\u30f3\u30c9\u30eb\u3055\u308c\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30b7\u30b9\u30c6\u30e0JRE\u306e\u4f7f\u7528\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
-
-error.app-cds-no-commercial-unlock=AppCDS\u306b\u306f\u3001\u5546\u7528\u6a5f\u80fd\u306e\u30ed\u30c3\u30af\u89e3\u9664\u304c\u5fc5\u8981\u3067\u3059\u3002
-error.app-cds-no-commercial-unlock.advice=\u30d0\u30f3\u30c9\u30e9\u5f15\u6570'commercialFeatures'\u3092'true'\u306b\u8a2d\u5b9a\u3057\u305fOracle Java Runtime\u306e\u5546\u7528\u6a5f\u80fd\u306e\u30e9\u30a4\u30bb\u30f3\u30b9\u3092\u6301\u3063\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractImageBundler_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/AbstractImageBundler_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,18 +1,30 @@
-param.launcher-cfg-format.name=\u542f\u52a8\u7a0b\u5e8f .cfg \u6587\u4ef6\u683c\u5f0f
-param.launcher-cfg-format.description=\u542f\u52a8\u7a0b\u5e8f\u53ef\u6267\u884c\u6587\u4ef6\u4f7f\u7528\u7684 .cfg \u6587\u4ef6\u7684\u6587\u4ef6\u683c\u5f0f\u3002\u5f53\u524d\u503c\u4e3a 'ini' \u548c 'prop'\u3002
-
-error.jre-missing-file=Java \u8fd0\u884c\u65f6\u4e0d\u5305\u62ec {0}
-error.jre-missing-file.advice=\u786e\u4fdd ant \u4f7f\u7528\u7684\u662f Oracle JDK 8 \u6216\u66f4\u9ad8\u7248\u672c\u3002
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
error.no-main-module=\u7f3a\u5c11\u4e3b\u5e94\u7528\u7a0b\u5e8f\u6a21\u5757\u3002
error.no-main-module.advice=\u786e\u4fdd\u4f7f\u7528 fx:module \u4efb\u52a1\u521b\u5efa\u6a21\u5757\u5316\u5e94\u7528\u7a0b\u5e8f\u3002
-error.app-cds-bad-version=\u6253\u5305\u7684\u8fd0\u884c\u65f6\u4e2d\u4e0d\u652f\u6301 AppCDS\u3002
-error.app-cds-bad-version.advice=8u40 \u4e2d\u65b0\u589e\u4e86 AppCDS \u652f\u6301\u3002\u8bf7\u4f7f\u7528 8u40 \u6216\u66f4\u9ad8\u7248\u672c\u7684 Java \u8fd0\u884c\u65f6
-error.app-cds-requires-runtime=\u7cfb\u7edf\u8fd0\u884c\u65f6\u4e2d\u4e0d\u652f\u6301 AppCDS\u3002
-error.app-cds-requires-runtime.advice=AppCDS \u652f\u6301\u9700\u8981\u5c06\u8fd0\u884c\u65f6\u968f\u5e94\u7528\u7a0b\u5e8f\u4e00\u8d77\u6253\u5305\u3002\u4e0d\u652f\u6301\u4f7f\u7528\u7cfb\u7edf JRE\u3002
-
-error.app-cds-no-commercial-unlock=AppCDS \u9700\u8981\u5f00\u542f\u5546\u4e1a\u529f\u80fd\u3002
-error.app-cds-no-commercial-unlock.advice=\u786e\u4fdd\u60a8\u5177\u6709 Oracle Java \u8fd0\u884c\u65f6\u7684\u5546\u4e1a\u529f\u80fd\u8bb8\u53ef\u8bc1, \u5e76\u4e14\u5c06\u6253\u5305\u7a0b\u5e8f\u53c2\u6570 'commercialFeatures' \u8bbe\u7f6e\u4e3a 'true'\u3002
-
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/Arguments.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/Arguments.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
param.create-image.name=Create Image
param.create-image.description=Creates platform-specific application image.
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/Bundle.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/Bundle.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,45 +1,41 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
MSG_Version=jpackager version
-ERR_UnknownArgument=Error: Unknown argument: {0}
-ERR_UnknownCommand=Error: Unknown command: {0}
-ERR_UnknownReason=Unknown reason
ERR_MissingArgument=Error: Missing argument: {0}
-ERR_EmbedingLauncher=Error: Missing embedded resource [{0}]
-ERR_ContradictorySetting=Error: Ant script manifest argument ''{0}'' contradicts Ant script data type settings.
-ERR_CreatingDirFailed=Error: Failed to create directory {0}
-ERR_CreatingFileFailed=Error: Failed to create file {0}
-ERR_CreatingTempFileFailed=Error: Failed to create temporary file
-ERR_CreatingJarFailed=Error: Failed to create jar file {0}
-ERR_FileCopyFailed=Error: Failed copy file to directory {0}
-ERR_FileReadFailed=Error: Failed reading file {0}
-ERR_CantDeleteFile=Error: File {0} could not be deleted.
-ERR_MissingDirectory=Missing directory {0}
-ERR_InvalidDirectory=Invalid directory {0}
-ERR_EmptySourceDirectory=Empty source directory {0}
-ERR_MissingJavaHome=Error: Java home directory is not known.
-ERR_MissingJavaFxHome=Error: JavaFx home directory is not known.
-ERR_JavacFailed=Error: javac execution failed, exit code: {0}
-ERR_MakeAllJavacFailed=Error: compilation of java sources failed
-ERR_DeployFailed=Error: deploy failed
-ERR_InvalidStoreFile=Error: Invalid keystore file: {0}
-ERR_SignFailed=Error: Signing failed
ERR_MissingAppResources=Error: No application jars found
-ERR_NoEmbeddedDT=Error: -includedt requires the java deployment toolkit, which is not included in this distribution
ERR_AppImageNotExist=Error: App image directory "{0}" does not exist
ERR_AppImageInvalid=Error: App image directory "{0}" is invalid and does not contain "app" and/or "runtime" sub-directories
ERR_NoSecondaryLauncherName=Secondary Launchers require a name parameter.
ERR_NoUniqueName=Secondary Launchers require a unique name parameter.
ERR_NoJreInstallerName=Jre Installers require a name parameter.
-MSG_UpdatingJar=Updating jar file\: {0}
-MSG_NoJREPackaged=Package is configured to ship without a JRE.
-MSG_UserProvidedJRE=Using base JDK at\: {0}
-MSG_UseSystemJRE=No base JDK. Package will use system JRE.
MSG_BundlerFailed=Error: Bundler "{1}" ({0}) failed to produce a bundle.
MSG_BundlerPlatformException=Bundler {0} skipped because the bundler does not support bundling on this platform.
MSG_BundlerConfigException=Bundler {0} skipped because of a configuration problem\: {1} \n\
Advice to fix\: {2}
MSG_BundlerConfigExceptionNoAdvice=Bundler {0} skipped because of a configuration problem\: {1}
MSG_BundlerRuntimeException=Bundler {0} failed because of {1}
-MSG_JarNoSelfCopy=Skip jar copy to itself\: {0}
-MSG_EnterKeystorePassword=Enter Passphrase for keystore:
-MSG_EnterKeyPassword=Enter key password for %s:
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/Bundle_ja.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/Bundle_ja.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,39 +1,35 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
MSG_Version=Java\u30D1\u30C3\u30B1\u30FC\u30B8\u30E3\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3
-ERR_UnknownArgument=\u30A8\u30E9\u30FC: \u4E0D\u660E\u306A\u5F15\u6570: {0}
-ERR_UnknownCommand=\u30A8\u30E9\u30FC: \u4E0D\u660E\u306A\u30B3\u30DE\u30F3\u30C9: {0}
-ERR_UnknownReason=\u7406\u7531\u306F\u4E0D\u660E\u3067\u3059
ERR_MissingArgument=\u30A8\u30E9\u30FC: \u5F15\u6570\u304C\u3042\u308A\u307E\u305B\u3093: {0}
-ERR_EmbedingLauncher=\u30A8\u30E9\u30FC: \u57CB\u8FBC\u307F\u30EA\u30BD\u30FC\u30B9[{0}]\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
-ERR_ContradictorySetting=\u30A8\u30E9\u30FC: Ant\u30B9\u30AF\u30EA\u30D7\u30C8\u30FB\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u5F15\u6570''{0}''\u306F\u3001Ant\u30B9\u30AF\u30EA\u30D7\u30C8\u30FB\u30C7\u30FC\u30BF\u578B\u8A2D\u5B9A\u3068\u77DB\u76FE\u3057\u3066\u3044\u307E\u3059\u3002
-ERR_CreatingDirFailed=\u30A8\u30E9\u30FC: \u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u306E\u4F5C\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F
-ERR_CreatingFileFailed=\u30A8\u30E9\u30FC: \u30D5\u30A1\u30A4\u30EB{0}\u306E\u4F5C\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F
-ERR_CreatingTempFileFailed=\u30A8\u30E9\u30FC: \u4E00\u6642\u30D5\u30A1\u30A4\u30EB\u306E\u4F5C\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F
-ERR_CreatingJarFailed=\u30A8\u30E9\u30FC: jar\u30D5\u30A1\u30A4\u30EB{0}\u306E\u4F5C\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F
-ERR_FileCopyFailed=\u30A8\u30E9\u30FC: \u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u3078\u306E\u30D5\u30A1\u30A4\u30EB\u306E\u30B3\u30D4\u30FC\u306B\u5931\u6557\u3057\u307E\u3057\u305F
-ERR_FileReadFailed=\u30A8\u30E9\u30FC: \u30D5\u30A1\u30A4\u30EB{0}\u306E\u8AAD\u53D6\u308A\u306B\u5931\u6557\u3057\u307E\u3057\u305F
-ERR_CantDeleteFile=\u30A8\u30E9\u30FC: \u30D5\u30A1\u30A4\u30EB{0}\u306F\u524A\u9664\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002
-ERR_MissingDirectory=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u306F\u898B\u3064\u304B\u308A\u307E\u305B\u3093
-ERR_InvalidDirectory=\u7121\u52B9\u306A\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}
-ERR_EmptySourceDirectory=\u30BD\u30FC\u30B9\u30FB\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u306F\u7A7A\u3067\u3059
-ERR_MissingJavaHome=\u30A8\u30E9\u30FC: Java\u30DB\u30FC\u30E0\u30FB\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304C\u4E0D\u660E\u3067\u3059\u3002
-ERR_MissingJavaFxHome=\u30A8\u30E9\u30FC: JavaFx\u30DB\u30FC\u30E0\u30FB\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304C\u4E0D\u660E\u3067\u3059\u3002
-ERR_JavacFailed=\u30A8\u30E9\u30FC: javac\u306E\u5B9F\u884C\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u7D42\u4E86\u30B3\u30FC\u30C9: {0}
-ERR_MakeAllJavacFailed=\u30A8\u30E9\u30FC: java\u30BD\u30FC\u30B9\u306E\u30B3\u30F3\u30D1\u30A4\u30EB\u306B\u5931\u6557\u3057\u307E\u3057\u305F
-ERR_DeployFailed=\u30A8\u30E9\u30FC: \u30C7\u30D7\u30ED\u30A4\u306B\u5931\u6557\u3057\u307E\u3057\u305F
-ERR_InvalidStoreFile=\u30A8\u30E9\u30FC: \u7121\u52B9\u306A\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30D5\u30A1\u30A4\u30EB: {0}
-ERR_SignFailed=\u30A8\u30E9\u30FC: \u7F72\u540D\u306B\u5931\u6557\u3057\u307E\u3057\u305F
ERR_MissingAppResources=\u30A8\u30E9\u30FC: \u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3jar\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F
-ERR_NoEmbeddedDT=\u30A8\u30E9\u30FC: -includedt\u306B\u306F\u3001\u3053\u306E\u914D\u5E03\u306B\u542B\u307E\u308C\u3066\u3044\u306A\u3044Java Deployment Toolkit\u304C\u5FC5\u8981\u3067\u3059
-MSG_UpdatingJar=jar\u30D5\u30A1\u30A4\u30EB\u306E\u66F4\u65B0\u4E2D: {0}
-MSG_NoJREPackaged=\u30D1\u30C3\u30B1\u30FC\u30B8\u306FJRE\u306A\u3057\u3067\u63D0\u4F9B\u3059\u308B\u3088\u3046\u69CB\u6210\u3055\u308C\u3066\u3044\u307E\u3059\u3002
-MSG_UserProvidedJRE=\u6B21\u306B\u3042\u308B\u30D9\u30FC\u30B9JDK\u3092\u4F7F\u7528: {0}
-MSG_UseSystemJRE=\u30D9\u30FC\u30B9JDK\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u30D1\u30C3\u30B1\u30FC\u30B8\u306F\u30B7\u30B9\u30C6\u30E0JRE\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002
MSG_BundlerFailed=\u30A8\u30E9\u30FC: \u30D0\u30F3\u30C9\u30E9"{1}" ({0})\u304C\u30D0\u30F3\u30C9\u30EB\u306E\u751F\u6210\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002
MSG_BundlerPlatformException=\u30D0\u30F3\u30C9\u30E9{0}\u306F\u3053\u306E\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u3067\u306E\u30D0\u30F3\u30C9\u30EB\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u30D0\u30F3\u30C9\u30E9\u304C\u30B9\u30AD\u30C3\u30D7\u3055\u308C\u307E\u3057\u305F\u3002
MSG_BundlerConfigException=\u69CB\u6210\u306E\u554F\u984C\u306E\u305F\u3081\u3001\u30D0\u30F3\u30C9\u30E9{0}\u304C\u30B9\u30AD\u30C3\u30D7\u3055\u308C\u307E\u3057\u305F: {1} \n\u6B21\u306E\u4FEE\u6B63\u3092\u884C\u3063\u3066\u304F\u3060\u3055\u3044: {2}
MSG_BundlerConfigExceptionNoAdvice=\u69CB\u6210\u306E\u554F\u984C\u306E\u305F\u3081\u3001\u30D0\u30F3\u30C9\u30E9{0}\u304C\u30B9\u30AD\u30C3\u30D7\u3055\u308C\u307E\u3057\u305F: {1}
MSG_BundlerRuntimeException={1}\u306E\u305F\u3081\u3001\u30D0\u30F3\u30C9\u30E9{0}\u304C\u5931\u6557\u3057\u307E\u3057\u305F
-MSG_JarNoSelfCopy=\u81EA\u8EAB\u3078\u306Ejar\u306E\u30B3\u30D4\u30FC\u3092\u30B9\u30AD\u30C3\u30D7\u3057\u307E\u3059: {0}
-MSG_EnterKeystorePassword=\u30AD\u30FC\u30B9\u30C8\u30A2\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044:
-MSG_EnterKeyPassword=%s\u306E\u9375\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044:
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/Bundle_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/Bundle_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,39 +1,35 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
MSG_Version=Java \u6253\u5305\u7A0B\u5E8F\u7248\u672C
-ERR_UnknownArgument=\u9519\u8BEF: \u672A\u77E5\u53C2\u6570: {0}
-ERR_UnknownCommand=\u9519\u8BEF: \u672A\u77E5\u547D\u4EE4: {0}
-ERR_UnknownReason=\u672A\u77E5\u539F\u56E0
ERR_MissingArgument=\u9519\u8BEF: \u7F3A\u5C11\u53C2\u6570: {0}
-ERR_EmbedingLauncher=\u9519\u8BEF: \u7F3A\u5C11\u5D4C\u5165\u8D44\u6E90 [{0}]
-ERR_ContradictorySetting=\u9519\u8BEF: Ant \u811A\u672C\u6E05\u5355\u53C2\u6570 ''{0}'' \u4E0E Ant \u811A\u672C\u6570\u636E\u7C7B\u578B\u8BBE\u7F6E\u51B2\u7A81\u3002
-ERR_CreatingDirFailed=\u9519\u8BEF: \u65E0\u6CD5\u521B\u5EFA\u76EE\u5F55 {0}
-ERR_CreatingFileFailed=\u9519\u8BEF: \u65E0\u6CD5\u521B\u5EFA\u6587\u4EF6 {0}
-ERR_CreatingTempFileFailed=\u9519\u8BEF: \u65E0\u6CD5\u521B\u5EFA\u4E34\u65F6\u6587\u4EF6
-ERR_CreatingJarFailed=\u9519\u8BEF: \u65E0\u6CD5\u521B\u5EFA jar \u6587\u4EF6 {0}
-ERR_FileCopyFailed=\u9519\u8BEF: \u65E0\u6CD5\u5C06\u6587\u4EF6\u590D\u5236\u5230\u76EE\u5F55 {0}
-ERR_FileReadFailed=\u9519\u8BEF: \u65E0\u6CD5\u8BFB\u53D6\u6587\u4EF6 {0}
-ERR_CantDeleteFile=\u9519\u8BEF: \u65E0\u6CD5\u5220\u9664\u6587\u4EF6 {0}\u3002
-ERR_MissingDirectory=\u7F3A\u5C11\u76EE\u5F55 {0}
-ERR_InvalidDirectory=\u76EE\u5F55 {0} \u65E0\u6548
-ERR_EmptySourceDirectory=\u6E90\u76EE\u5F55 {0} \u4E3A\u7A7A
-ERR_MissingJavaHome=\u9519\u8BEF: Java \u4E3B\u76EE\u5F55\u672A\u77E5\u3002
-ERR_MissingJavaFxHome=\u9519\u8BEF: JavaFx \u4E3B\u76EE\u5F55\u672A\u77E5\u3002
-ERR_JavacFailed=\u9519\u8BEF: javac \u6267\u884C\u5931\u8D25, \u9000\u51FA\u4EE3\u7801: {0}
-ERR_MakeAllJavacFailed=\u9519\u8BEF: java \u6E90\u7F16\u8BD1\u5931\u8D25
-ERR_DeployFailed=\u9519\u8BEF: \u90E8\u7F72\u5931\u8D25
-ERR_InvalidStoreFile=\u9519\u8BEF: \u65E0\u6548\u5BC6\u94A5\u5E93\u6587\u4EF6: {0}
-ERR_SignFailed=\u9519\u8BEF: \u7B7E\u540D\u5931\u8D25
ERR_MissingAppResources=\u9519\u8BEF: \u627E\u4E0D\u5230\u5E94\u7528\u7A0B\u5E8F jar
-ERR_NoEmbeddedDT=\u9519\u8BEF: -includedt \u9700\u8981 java \u90E8\u7F72\u5DE5\u5177\u5305, \u4F46\u6B64\u5206\u53D1\u4E2D\u672A\u5305\u542B
-MSG_UpdatingJar=\u66F4\u65B0 Jar \u6587\u4EF6: {0}
-MSG_NoJREPackaged=\u7A0B\u5E8F\u5305\u914D\u7F6E\u4E3A\u5728\u53D1\u8FD0\u65F6\u4E0D\u5E26 JRE\u3002
-MSG_UserProvidedJRE=\u4F7F\u7528\u4EE5\u4E0B\u4F4D\u7F6E\u7684\u57FA\u7840 JDK: {0}
-MSG_UseSystemJRE=\u6CA1\u6709\u57FA\u7840 JDK\u3002\u7A0B\u5E8F\u5305\u5C06\u4F7F\u7528\u7CFB\u7EDF JRE\u3002
MSG_BundlerFailed=\u9519\u8BEF: \u6253\u5305\u7A0B\u5E8F "{1}" ({0}) \u65E0\u6CD5\u751F\u6210\u5305\u3002
MSG_BundlerPlatformException=\u7531\u4E8E\u6253\u5305\u7A0B\u5E8F{0}\u4E0D\u652F\u6301\u5728\u6B64\u5E73\u53F0\u4E0A\u6253\u5305, \u56E0\u6B64\u5C06\u5176\u8DF3\u8FC7\u3002
MSG_BundlerConfigException=\u7531\u4E8E\u914D\u7F6E\u95EE\u9898, \u8DF3\u8FC7\u4E86\u6253\u5305\u7A0B\u5E8F{0}: {1} \n\u4FEE\u590D\u5EFA\u8BAE: {2}
MSG_BundlerConfigExceptionNoAdvice=\u7531\u4E8E\u914D\u7F6E\u95EE\u9898, \u8DF3\u8FC7\u4E86\u6253\u5305\u7A0B\u5E8F{0}: {1}
MSG_BundlerRuntimeException=\u7531\u4E8E{1}, \u6253\u5305\u7A0B\u5E8F{0}\u5931\u8D25
-MSG_JarNoSelfCopy=\u8DF3\u8FC7 jar \u590D\u5236\u5230\u81EA\u8EAB: {0}
-MSG_EnterKeystorePassword=\u8F93\u5165\u5BC6\u94A5\u5E93\u7684\u5BC6\u7801\u77ED\u8BED:
-MSG_EnterKeyPassword=\u8F93\u5165%s\u7684\u5BC6\u94A5\u53E3\u4EE4:
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/CLIHelp.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/CLIHelp.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
MSG_Help_common=Usage: jpackager <mode> <options>\n\
\n\
where mode is one of: \n\
@@ -30,139 +56,135 @@
Generates a Server JRE installer.\n\
\n\
The following options are valid for all platforms:\n\
-\ --help -i \n\
+\ --help -h \n\
\ Shows the usage text, followed by a list and description of each valid option for the current platform and the given mode.\n\
\ If no mode is given, shows the usage text, followed by a list and description of each valid option for the current platform.\n\
\ When this option is used, all other options are ignored.\n\
-\ --output -o\n\
+\ --output -o <output dir>\n\
\ Name of the directory where generated output file is placed.\n\
-\ --input -i\n\
+\ --input -i <input dir>\n\
\ Name of the base directory that contains the files to package.\n\
-\ --files -f\n\
+\ --files -f <input files>\n\
\ List of files in the base directory. If omitted, all files from "input"\n\
\ directory (which is a mandatory argument in this case) will be packaged.\n\
-\ --name -n\n\
+\ --name -n <application name>\n\
\ Name of the application.\n\
-\ --main-jar -j\n\
+\ --main-jar -j <main jar name>\n\
\ The main JAR of the application. This JAR should have the main-class,\n\
\ and is relative to the assembled application directory.\n\
-\ --class -c\n\
+\ --class -c <class name>\n\
\ Qualified name of the application class to execute.\n\
-\ --version -v\n\
+\ --version -v <version string>\n\
\ Version of the application.\n\
-\ --arguments -a\n\
+\ --arguments -a <main class arguments>\n\
\ Command line arguments to pass to the main class if no arguments\n\
\ are specified by the launcher.\n\
-\ --icon\n\
+\ --icon <icon file name>\n\
\ Icon of the application bundle.\n\
\ --singleton\n\
\ Prevents multiple instances of the application from launching\n\
\ (see SingleInstanceService API for more details).\n\
-\ --identifier\n\
+\ --identifier <id string>\n\
\ Machine readable identifier of the application. The format\n\
\ must be a DNS name in reverse order, such as com.example.myapplication.\n\
-\ The identifier is used for composing Single Instance unique id and\n\
-\ calculating preferences node to search for User JVM Options\n\
-\ (the format is a slash delimited version of the main package name,\n\
-\ such as "com/example/myapplication"), see UserJvmOptionsService API\n\
-\ for more details.\n\
+\ The identifier is used for composing Single Instance unique id.\n\
\ --verbose\n\
\ Enables verbose output.\n\
\ --strip-native-commands\n\
\ Removes native executables from the custom run-time images.\n\
-\ --jvm-args\n\
+\ --jvm-args <java vm arguments>\n\
\ JVM flags and options to pass to the application.\n\
-\ --file-associations\n\
+\ --file-associations <file path>\n\
\ Properties file that contains list of key=value parameters that\n\
\ describe a file association. "extension", "mime-type", "icon",\n\
\ "description" can be used as keys for the association.\n\
-\ --secondary-launcher\n\
+\ --secondary-launcher <file path>\n\
\ Properties file that contains a collection of options for a secondary launcher.\n\
-\ --build-root\n\
+\ --build-root <file path>\n\
\ Directory in which to use and place temporary files.\n\
-\ --runtime-image\n\
+\ --runtime-image <file path>\n\
\ Location of the predefined runtime image that is used to build\n\
\ an application image and installable package.\n\
-\ --app-image\n\
+\ --app-image <file path>\n\
\ Location of the predefined application image that is used to build\n\
\ an installable package.\n\
-\ --install-dir\n\
+\ --install-dir <file path>\n\
\ Installation directory of the application. Ignored on Windows, use\n\
-\ \u2013-win-dir-chooser to provide an ability to choose an installation directory.\n\
+\ --win-dir-chooser to provide an ability to choose an installation directory.\n\
\ --echo-mode\n\
\ Outputs (without executing) native packaging commands so that users\n\
\ can use this as a starting point for addressing more complex needs.\n\
-\ --license-file\n\
+\ --license-file <file name>\n\
\ The license file, relative to the base directory.\n\
-\ --copyright\n\
+\ --copyright <copyright string>\n\
\ Copyright for the application.\n\
-\ --description\n\
+\ --description <description string>\n\
\ Description of the application.\n\
-\ --category\n\
+\ --category <category string>\n\
\ Category or group of the application.\n\
-\ --vendor\n\
+\ --vendor <vendor string>\n\
\ Vendor of the application.\n\
\n\
Modular options:\n\
-\ --module -m\n\
+\ --module -m <module name>\n\
\ Main module of the application. This module must have the main-class,\n\
\ and be on the module path.\n\
-\ --module-path -p\n\
+\ --module-path -p <module path>\n\
\ When packaging the Java Runtime, this is the path JLink looks in for modules.\n\
-\ --add-modules\n\
+\ --add-modules <module list>\n\
\ List of modules to add to JImage creation, including possible services.\n\
-\ --limit-modules\n\
+\ --limit-modules <module list>\n\
\ Modules to limit JImage creation to.\n\
MSG_Help_mac=\nThe following options are valid for Mac OS X platforms:\n\
\ --mac-sign\n\
\ Request that the bundle be signed.\n\
-\ --mac-bundle-name\n\
+\ --mac-bundle-name <name string>\n\
\ Name of the application as it appears in the Menu Bar. This can be\n\
\ different from the application name. This name must be less than 16\n\
\ characters long and be suitable for displaying in the menu bar and\n\
-\ the application Info window.\n\
-\ --mac-bundle-identifier\n\
+\ the application Info window. Defaults to the application name.\n\
+\ --mac-bundle-identifier <ID string>\n\
\ An identifier that uniquely identifies the application for MacOSX\n\
\ (and on the Mac App Store). May only use alphanumeric (A-Z,a-z,0-9),\n\
\ hyphen (-), and period (.) characters.\n\
-\ --mac-app-store-category\n\
+\ --mac-app-store-category <category string>\n\
\ Mac App Store Categories. Note that the key is the string shown to\n\
\ the user and the value is the ID of the category.\n\
-\ --mac-app-store-entitlements\n\
+\ --mac-app-store-entitlements <file path>\n\
\ File location of a custom mac app store entitlements file.\n\
-\ --mac-bundle-signing-prefix\n\
+\ --mac-bundle-signing-prefix <prefix string>\n\
\ When signing the application bundle, this value is prefixed to all\n\
\ components that need to be signed that don't have an existing bundle identifier.\n\
-\ --mac-signing-key-user-name\n\
+\ --mac-signing-key-user-name <user name>\n\
\ User name portion of the typical "Mac Developer ID Application: <user name>" signing key.\n\
-\ --mac-signing-keychain\n\
+\ --mac-signing-keychain <file path>\n\
\ Location of the keychain to use. If not specified, the standard keychains are used.\n\
MSG_Help_linux=\nThe following options are valid for Linux platforms:\n\
-\ --linux-bundle-name\n\
-\ Name for Linux bundle.\n\
+\ --linux-bundle-name <bundle name>\n\
+\ Name for Linux bundle. Defaults to the application name.\n\
\ --linux-package-deps\n\
\ Required packages or capabilities for the application.\n\
-\ --linux-rpm-license-type\n\
+\ --linux-rpm-license-type <type string>\n\
\ Type of the license ("License: <value>" of the RPM .spec).\n\
-\ --linux-deb-maintainer\n\
+\ --linux-deb-maintainer <email address>\n\
\ Maintainer for .deb bundle.\n\
MSG_Help_win=\nThe following options are valid for Windows platforms:\n\
\ --win-menu\n\
\ Adds the application to the system menu.\n\
-\ --win-menu-group\n\
+\ --win-menu-group <menu group name>\n\
\ Start Menu group this application is placed in.\n\
\ --win-per-user-install\n\
\ Request to perform an install on a per-user basis.\n\
\ --win-dir-chooser\n\
\ Adds a dialog to enable the user to choose a directory in which\n\
\ the product is installed.\n\
-\ --win-registry-name\n\
+\ --win-registry-name <registry name>\n\
\ Name of the application for registry references. Default is\n\
\ the Application Name with only alphanumerics, dots, and dashes (no whitespace).\n\
-\ --win-upgrade-uuid\n\
+\ --win-upgrade-uuid <id string>\n\
\ UUID associated with upgrades for this package.\n\
\ --win-shortcut\n\
\ Creates a desktop shortcut for the application.\n\
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/JLinkBundlerHelper.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/JLinkBundlerHelper.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,8 +1,28 @@
-param.detect-modules.name=Auto Modules
-param.detect-modules.description=Automatically calculate modules to Limit JImage creation to.
-
-param.jlink-options.name=JLink Options
-param.jlink-options.description=Options to be added to JLink invocation.
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
param.jlink-builder.name=JLink Builder
param.jlink-builder.description=Name of the JLink Builder to build the applicaiton image with.
@@ -14,4 +34,3 @@
message.detected.modules="Automatically adding detected modules: {0}."
message.modules="Adding modules: {0} to runtime image."
-using.experimental.feature="Using experimental feature: {0}."
\ No newline at end of file
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/JLinkBundlerHelper_ja.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/JLinkBundlerHelper_ja.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,8 +1,28 @@
-param.detect-modules.name=\u81EA\u52D5\u30E2\u30B8\u30E5\u30FC\u30EB
-param.detect-modules.description=JImage\u306E\u4F5C\u6210\u3092\u5236\u9650\u3059\u308B\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u81EA\u52D5\u7684\u306B\u8A08\u7B97\u3057\u307E\u3059\u3002
-
-param.jlink-options.name=JLink\u30AA\u30D7\u30B7\u30E7\u30F3
-param.jlink-options.description=JLink\u306E\u8D77\u52D5\u306B\u8FFD\u52A0\u3055\u308C\u308B\u30AA\u30D7\u30B7\u30E7\u30F3
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
param.jlink-builder.name=JLink\u30D3\u30EB\u30C0\u30FC
param.jlink-builder.description=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30A4\u30E1\u30FC\u30B8\u3092\u4F5C\u6210\u3059\u308BJLink\u30D3\u30EB\u30C0\u30FC\u306E\u540D\u524D
@@ -14,4 +34,3 @@
message.detected.modules="\u691C\u51FA\u3055\u308C\u305F\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u81EA\u52D5\u7684\u306B\u8FFD\u52A0\u3057\u3066\u3044\u307E\u3059: {0}."
message.modules="\u30E2\u30B8\u30E5\u30FC\u30EB: {0}\u3092\u30E9\u30F3\u30BF\u30A4\u30E0\u30FB\u30A4\u30E1\u30FC\u30B8\u306B\u8FFD\u52A0\u3057\u3066\u3044\u307E\u3059\u3002"
-using.experimental.feature="\u8A66\u9A13\u7684\u306A\u6A5F\u80FD\u3092\u4F7F\u7528\u3057\u3066\u3044\u307E\u3059: {0}\u3002"
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/JLinkBundlerHelper_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/JLinkBundlerHelper_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,8 +1,28 @@
-param.detect-modules.name=\u81EA\u52A8\u6A21\u5757
-param.detect-modules.description=\u81EA\u52A8\u8BA1\u7B97\u6A21\u5757\u4EE5\u5C06 JImage \u521B\u5EFA\u64CD\u4F5C\u9650\u5236\u4E3A\u8FD9\u4E9B\u6A21\u5757\u3002
-
-param.jlink-options.name=JLink \u9009\u9879
-param.jlink-options.description=\u8981\u6DFB\u52A0\u5230 JLink \u8C03\u7528\u7684\u9009\u9879\u3002
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
param.jlink-builder.name=JLink Builder
param.jlink-builder.description=\u7528\u4E8E\u6784\u5EFA\u5E94\u7528\u7A0B\u5E8F\u6620\u50CF\u7684 JLink Builder \u7684\u540D\u79F0\u3002
@@ -13,5 +33,3 @@
message.detected.modules="\u6B63\u5728\u81EA\u52A8\u6DFB\u52A0\u68C0\u6D4B\u5230\u7684\u6A21\u5757: {0}\u3002"
message.modules="\u6B63\u5728\u5C06\u6A21\u5757 {0} \u6DFB\u52A0\u5230\u8FD0\u884C\u65F6\u6620\u50CF\u3002"
-
-using.experimental.feature="\u6B63\u5728\u4F7F\u7528\u8BD5\u9A8C\u529F\u80FD: {0}\u3002"
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/StandardBundlerParam.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/StandardBundlerParam.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
param.app-name.name=App Name
param.app-name.description=The name of the application.
@@ -76,12 +102,6 @@
param.preferences-id.name=Preferences ID
param.preferences-id.description=The preferences node to search for User JVM Options. The format be a slash delimited version of the main package name, such as "com/example/myapplication".
-param.preloader.name=JavaFX Preloader Class Name
-param.preloader.description=For JavaFX applications only, this is the Fully Qualified Class Name of the preloader class. This class needs to exist in the classpath, preferably early in the path.
-
-param.runtime.name=JRE
-param.runtime.description=The Java Runtime to co-bundle. The default value is the current JRE running the bundler. A value of null will cause no JRE to be co-bundled and the system JRE will be used to launch the application.
-
param.title.name=Title
param.title.description=A title for the application.
@@ -126,18 +146,6 @@
param.fa-description.name=File Association Description
param.fa-description.description=The description to be used for associated files. The default is "<appName> File".
-param.commercial-features.name=Unlock Commercial Features
-param.commercial-features.description=Some options require commercial features to be unlocked. This must be passed in as true to unlock those features. Otherwise they will be ignored.
-
-param.com-app-cds.name=Enable AppCDS
-param.com-app-cds.description=Enabled and package with Application Class Data Sharing, including generation of .jsa file.
-
-param.com-app-cds-cache-mode.name=AppCDS Cache Mode
-param.com-app-cds-cache-mode.description=The mode in which the AppCDS .jpa files are generated and cached. Current values are 'install', 'auto', and 'auto+install'.
-
-param.com-app-cds-root.name=AppCDS Root Classes
-param.com-app-cds-root.description=List of "root classes" for AppCDS to generate class sharing data from. Default is the main class.
-
param.source-dir.name=Source Directory
param.source-dir.description=Path to the directory containing the files to be bundled.
@@ -171,7 +179,6 @@
message.runtime-image-dir-does-not-exist=Specified runtime image directory {0}\: {1} does not exists
message.runtime-image-dir-does-not-exist.advice=Confirm that the value for {0} exists
-error.required-parameter={0} is a required parameter.
error.no-main-class-with-main-jar=An application class was not specified nor was one found in the jar {0}
error.no-main-class-with-main-jar.advice=Please specify a applicationClass or ensure that the jar {0} specifies one in the manifest.
error.no-main-class-with-classpath=An application class was not specified nor was one found in the supplied classpath
@@ -181,7 +188,4 @@
error.main-jar-does-not-exist=The configured main jar does not exist {0}
error.main-jar-does-not-exist.advice=The main jar must be specified relative to the app resources (not an absolute path), and must exist within those resources.
-message.fx-app-does-not-match-specified-main=The jar {0} has an FX Application class{1} that does not match the declared main {2}
-message.main-class-does-not-match-specified-main=The jar {0} has a main class {1} that does not match the declared main {2}
-
warning.no.jdk.modules.found=Warning: No JDK Modules found.
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/StandardBundlerParam_ja.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/StandardBundlerParam_ja.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
param.app-name.name=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u540D
param.app-name.description=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u540D\u524D\u3002
@@ -86,12 +112,6 @@
param.preferences-id.name=\u30D7\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9ID
param.preferences-id.description=\u30E6\u30FC\u30B6\u30FC\u306EJVM\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u691C\u7D22\u3059\u308B\u30D7\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9\u30FB\u30CE\u30FC\u30C9\u3002\u5F62\u5F0F\u306F\u3001"com/example/myapplication"\u306A\u3069\u3001\u30E1\u30A4\u30F3\u30FB\u30D1\u30C3\u30B1\u30FC\u30B8\u540D\u306E\u30B9\u30E9\u30C3\u30B7\u30E5\u533A\u5207\u308A\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u3059\u3002
-param.preloader.name=JavaFX\u30D7\u30EC\u30ED\u30FC\u30C0\u30FC\u30FB\u30AF\u30E9\u30B9\u540D
-param.preloader.description=JavaFX\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u307F\u306E\u5834\u5408\u3001\u30D7\u30EC\u30ED\u30FC\u30C0\u30FC\u30FB\u30AF\u30E9\u30B9\u306E\u5B8C\u5168\u4FEE\u98FE\u540D\u3067\u3059\u3002\u3053\u306E\u30AF\u30E9\u30B9\u306F\u30AF\u30E9\u30B9\u30D1\u30B9(\u53EF\u80FD\u306A\u5834\u5408\u306F\u30D1\u30B9\u306E\u524D\u306E\u65B9)\u306B\u5B58\u5728\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
-
-param.runtime.name=JRE
-param.runtime.description=\u30D0\u30F3\u30C9\u30EB\u3059\u308BJava\u30E9\u30F3\u30BF\u30A4\u30E0\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u306F\u3001\u30D0\u30F3\u30C9\u30E9\u3092\u5B9F\u884C\u3057\u3066\u3044\u308B\u73FE\u5728\u306EJRE\u3067\u3059\u3002\u5024\u304Cnull\u306E\u5834\u5408\u3001JRE\u306F\u30D0\u30F3\u30C9\u30EB\u3055\u308C\u305A\u3001\u30B7\u30B9\u30C6\u30E0\u306EJRE\u304C\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u8D77\u52D5\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002
-
param.system-wide.name=\u30B7\u30B9\u30C6\u30E0\u5168\u4F53
param.system-wide.description=\u3053\u306E\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306F\u3001\u305D\u308C\u81EA\u4F53\u3092\u30B7\u30B9\u30C6\u30E0\u5168\u4F53\u306B\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u307E\u3059\u304B\u3001\u307E\u305F\u306F\u5404\u30E6\u30FC\u30B6\u30FC\u306B\u5BFE\u3057\u3066\u306E\u307F\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u307E\u3059\u304B\u3002Null\u306F\u30B7\u30B9\u30C6\u30E0\u30FB\u30C7\u30D5\u30A9\u30EB\u30C8\u3092\u4F7F\u7528\u3059\u308B\u3053\u3068\u3092\u610F\u5473\u3057\u307E\u3059\u3002
@@ -133,18 +153,6 @@
param.fa-description.name=\u30D5\u30A1\u30A4\u30EB\u30FB\u30A2\u30BD\u30B7\u30A8\u30FC\u30B7\u30E7\u30F3\u306E\u8AAC\u660E
param.fa-description.description=\u95A2\u9023\u4ED8\u3051\u3089\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u306B\u4F7F\u7528\u3059\u308B\u8AAC\u660E\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u306F"<appName>\u30D5\u30A1\u30A4\u30EB"\u3067\u3059\u3002
-param.commercial-features.name=\u5546\u7528\u6A5F\u80FD\u306E\u30ED\u30C3\u30AF\u89E3\u9664
-param.commercial-features.description=\u4E00\u90E8\u306E\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u306F\u5546\u7528\u6A5F\u80FD\u306E\u30ED\u30C3\u30AF\u3092\u89E3\u9664\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u5546\u7528\u6A5F\u80FD\u306E\u30ED\u30C3\u30AF\u3092\u89E3\u9664\u3059\u308B\u306B\u306F\u3001true\u3068\u3057\u3066\u6E21\u3055\u308C\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u305D\u3046\u3067\u306A\u3044\u5834\u5408\u306F\u7121\u8996\u3055\u308C\u307E\u3059\u3002
-
-param.com-app-cds.name=AppCDS\u306E\u6709\u52B9\u5316
-param.com-app-cds.description=\u6709\u52B9\u5316\u3055\u308C\u3001.jsa\u30D5\u30A1\u30A4\u30EB\u306E\u751F\u6210\u3092\u542B\u3080\u3001\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30AF\u30E9\u30B9\u30FB\u30C7\u30FC\u30BF\u5171\u6709\u3092\u542B\u3081\u3066\u30D1\u30C3\u30B1\u30FC\u30B8\u30F3\u30B0\u3057\u307E\u3059\u3002
-
-param.com-app-cds-cache-mode.name=AppCDS\u30AD\u30E3\u30C3\u30B7\u30E5\u30FB\u30E2\u30FC\u30C9
-param.com-app-cds-cache-mode.description=AppCDS .jpa\u30D5\u30A1\u30A4\u30EB\u304C\u751F\u6210\u304A\u3088\u3073\u30AD\u30E3\u30C3\u30B7\u30E5\u3055\u308C\u308B\u30E2\u30FC\u30C9\u3002\u73FE\u5728\u306E\u5024\u306F'install'\u3001'auto'\u304A\u3088\u3073'auto+install'\u3067\u3059\u3002
-
-param.com-app-cds-root.name=AppCDS\u30EB\u30FC\u30C8\u30FB\u30AF\u30E9\u30B9
-param.com-app-cds-root.description=\u30AF\u30E9\u30B9\u5171\u6709\u30C7\u30FC\u30BF\u3092\u751F\u6210\u3059\u308BAppCDS\u306E"\u30EB\u30FC\u30C8\u30FB\u30AF\u30E9\u30B9"\u306E\u30EA\u30B9\u30C8\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u306F\u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9\u3067\u3059\u3002
-
param.source-dir.name=\u30BD\u30FC\u30B9\u30FB\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA
param.source-dir.description=\u30D0\u30F3\u30C9\u30EB\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u3092\u542B\u3080\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3078\u306E\u30D1\u30B9\u3002
@@ -163,7 +171,6 @@
param.main.module.name=\u30E1\u30A4\u30F3\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB
param.main.module.description=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u30E1\u30A4\u30F3\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB\u3002\u3053\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u306Fmain-class\u3092\u6301\u3064\u5FC5\u8981\u304C\u3042\u308A\u3001\u30E2\u30B8\u30E5\u30FC\u30EB\u30FB\u30D1\u30B9\u4E0A\u306B\u3042\u308A\u307E\u3059\u3002
-error.required-parameter={0}\u306F\u5FC5\u9808\u30D1\u30E9\u30E1\u30FC\u30BF\u3067\u3059\u3002
error.no-main-class-with-main-jar=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30AF\u30E9\u30B9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u306A\u304B\u3063\u305F\u304B\u3001jar {0}\u306B\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F
error.no-main-class-with-main-jar.advice=applicationClass\u3092\u6307\u5B9A\u3059\u308B\u304B\u3001jar {0}\u304C\u30DE\u30CB\u30D5\u30A7\u30B9\u30C8\u306EapplicationClass\u3092\u6307\u5B9A\u3057\u3066\u3044\u308B\u3053\u3068\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002
error.no-main-class-with-classpath=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30AF\u30E9\u30B9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u306A\u304B\u3063\u305F\u304B\u3001\u6307\u5B9A\u3055\u308C\u305F\u30AF\u30E9\u30B9\u30D1\u30B9\u306B\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F
@@ -173,7 +180,4 @@
error.main-jar-does-not-exist=\u69CB\u6210\u3055\u308C\u305F\u30E1\u30A4\u30F3jar\u306F{0}\u306B\u5B58\u5728\u3057\u307E\u305B\u3093
error.main-jar-does-not-exist.advice=\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30EA\u30BD\u30FC\u30B9\u306B\u5BFE\u3057\u3066\u76F8\u5BFE\u7684\u306B(\u7D76\u5BFE\u30D1\u30B9\u3067\u306F\u306A\u3044)\u30E1\u30A4\u30F3jar\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u3001\u305D\u306E\u30EA\u30BD\u30FC\u30B9\u5185\u306B\u5B58\u5728\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
-message.fx-app-does-not-match-specified-main=jar {0}\u306B\u306F\u3001\u5BA3\u8A00\u3055\u308C\u3066\u3044\u308B\u30E1\u30A4\u30F3{2}\u3068\u4E00\u81F4\u3057\u306A\u3044FX\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30AF\u30E9\u30B9{1}\u304C\u3042\u308A\u307E\u3059
-message.main-class-does-not-match-specified-main=jar {0}\u306B\u306F\u3001\u5BA3\u8A00\u3055\u308C\u3066\u3044\u308B\u30E1\u30A4\u30F3{2}\u3068\u4E00\u81F4\u3057\u306A\u3044\u30E1\u30A4\u30F3\u30FB\u30AF\u30E9\u30B9{1}\u304C\u3042\u308A\u307E\u3059
-
warning.no.jdk.modules.found=\u8B66\u544A: JDK\u30E2\u30B8\u30E5\u30FC\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/StandardBundlerParam_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/StandardBundlerParam_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
param.app-name.name=\u5E94\u7528\u7A0B\u5E8F\u540D\u79F0
param.app-name.description=\u5E94\u7528\u7A0B\u5E8F\u7684\u540D\u79F0\u3002
@@ -86,12 +112,6 @@
param.preferences-id.name=\u9996\u9009 ID
param.preferences-id.description=\u5728\u5176\u4E2D\u641C\u7D22\u7528\u6237 JVM \u9009\u9879\u7684\u9996\u9009\u8282\u70B9\u3002\u5176\u683C\u5F0F\u5E94\u4E3A\u4E3B\u7A0B\u5E8F\u5305\u540D\u79F0\u4EE5\u659C\u6760\u5206\u9694\u7684\u7248\u672C, \u4F8B\u5982 "com/example/myapplication"\u3002
-param.preloader.name=JavaFX \u9884\u52A0\u8F7D\u5668\u7C7B\u540D
-param.preloader.description=\u4EC5\u7528\u4E8E JavaFX \u5E94\u7528\u7A0B\u5E8F, \u8FD9\u662F\u9884\u52A0\u8F7D\u5668\u7C7B\u7684\u5168\u9650\u5B9A\u7C7B\u540D\u3002\u7C7B\u8DEF\u5F84\u4E2D\u5FC5\u987B\u5B58\u5728\u6B64\u7C7B, \u6700\u597D\u662F\u5728\u8DEF\u5F84\u524D\u7AEF\u3002
-
-param.runtime.name=JRE
-param.runtime.description=\u8981\u5171\u540C\u6253\u5305\u7684 Java \u8FD0\u884C\u65F6\u3002\u9ED8\u8BA4\u503C\u4E3A\u8FD0\u884C\u6253\u5305\u7A0B\u5E8F\u7684\u5F53\u524D JRE\u3002\u503C\u4E3A\u7A7A\u503C\u5C06\u5BFC\u81F4\u4E0D\u4F1A\u5171\u540C\u6253\u5305\u4EFB\u4F55 JRE, \u5E76\u4E14\u5C06\u4F7F\u7528\u7CFB\u7EDF JRE \u6765\u542F\u52A8\u5E94\u7528\u7A0B\u5E8F\u3002
-
param.system-wide.name=\u7CFB\u7EDF\u8303\u56F4
param.system-wide.description=\u6B64\u5E94\u7528\u7A0B\u5E8F\u662F\u5E94\u5C1D\u8BD5\u5728\u7CFB\u7EDF\u8303\u56F4\u5185\u5B89\u88C5, \u8FD8\u662F\u4EC5\u4E3A\u6BCF\u4E2A\u7528\u6237\u5B89\u88C5? \u7A7A\u503C\u8868\u793A\u4F7F\u7528\u7CFB\u7EDF\u9ED8\u8BA4\u503C\u3002
@@ -133,18 +153,6 @@
param.fa-description.name=\u6587\u4EF6\u5173\u8054\u8BF4\u660E
param.fa-description.description=\u7528\u4E8E\u6240\u5173\u8054\u6587\u4EF6\u7684\u8BF4\u660E\u3002\u9ED8\u8BA4\u503C\u4E3A "<appName> \u6587\u4EF6"\u3002
-param.commercial-features.name=\u5F00\u542F\u5546\u4E1A\u529F\u80FD
-param.commercial-features.description=\u4E00\u4E9B\u9009\u9879\u9700\u8981\u5F00\u542F\u5546\u4E1A\u529F\u80FD\u3002\u8FD9\u5FC5\u987B\u4F20\u5165 true \u6765\u5F00\u542F\u8FD9\u4E9B\u529F\u80FD\u3002\u5426\u5219\u5C06\u5FFD\u7565\u3002
-
-param.com-app-cds.name=\u542F\u7528 AppCDS
-param.com-app-cds.description=\u542F\u7528\u5E94\u7528\u7A0B\u5E8F\u7C7B\u6570\u636E\u5171\u4EAB\u529F\u80FD\u5E76\u6253\u5305, \u5305\u62EC\u751F\u6210 .jsa \u6587\u4EF6\u3002
-
-param.com-app-cds-cache-mode.name=AppCDS \u9AD8\u901F\u7F13\u5B58\u6A21\u5F0F
-param.com-app-cds-cache-mode.description=\u751F\u6210\u548C\u9AD8\u901F\u7F13\u5B58 AppCDS .jpa \u6587\u4EF6\u7684\u6A21\u5F0F\u3002\u5F53\u524D\u503C\u4E3A 'install', 'auto' \u548C 'auto+install'\u3002
-
-param.com-app-cds-root.name=AppCDS \u6839\u7C7B
-param.com-app-cds-root.description=\u4ECE\u5176\u4E2D\u751F\u6210\u7C7B\u5171\u4EAB\u6570\u636E\u7684 AppCDS \u7684 "\u6839\u7C7B" \u5217\u8868\u3002\u9ED8\u8BA4\u503C\u4E3A\u4E3B\u7C7B\u3002
-
param.source-dir.name=\u6E90\u76EE\u5F55
param.source-dir.description=\u5305\u542B\u8981\u6253\u5305\u6587\u4EF6\u7684\u76EE\u5F55\u8DEF\u5F84\u3002
@@ -163,7 +171,6 @@
param.main.module.name=\u4E3B\u6A21\u5757
param.main.module.description=\u5E94\u7528\u7A0B\u5E8F\u7684\u4E3B\u6A21\u5757\u3002\u6B64\u6A21\u5757\u5E94\u5177\u6709\u4E3B\u7C7B, \u5E76\u4E14\u4F4D\u4E8E\u6A21\u5757\u8DEF\u5F84\u4E0A\u3002
-error.required-parameter={0} \u662F\u5FC5\u9700\u7684\u53C2\u6570\u3002
error.no-main-class-with-main-jar=\u672A\u6307\u5B9A\u5E94\u7528\u7A0B\u5E8F\u7C7B, \u5728 jar {0} \u4E2D\u4E5F\u672A\u627E\u5230\u5E94\u7528\u7A0B\u5E8F\u7C7B
error.no-main-class-with-main-jar.advice=\u8BF7\u6307\u5B9A applicationClass \u6216\u786E\u4FDD jar {0} \u5728\u6E05\u5355\u4E2D\u6307\u5B9A\u4E00\u4E2A\u3002
error.no-main-class-with-classpath=\u672A\u6307\u5B9A\u5E94\u7528\u7A0B\u5E8F\u7C7B, \u5728\u63D0\u4F9B\u7684\u7C7B\u8DEF\u5F84\u4E2D\u4E5F\u672A\u627E\u5230\u5E94\u7528\u7A0B\u5E8F\u7C7B
@@ -173,7 +180,4 @@
error.main-jar-does-not-exist=\u914D\u7F6E\u7684\u4E3B jar \u4E0D\u5B58\u5728 {0}
error.main-jar-does-not-exist.advice=\u4E3B jar \u5FC5\u987B\u76F8\u5BF9\u4E8E\u5E94\u7528\u7A0B\u5E8F\u8D44\u6E90\u6307\u5B9A (\u4E0D\u662F\u7EDD\u5BF9\u8DEF\u5F84), \u5E76\u4E14\u5FC5\u987B\u5B58\u5728\u4E8E\u8FD9\u4E9B\u8D44\u6E90\u4E2D\u3002
-message.fx-app-does-not-match-specified-main=jar {0} \u5177\u6709\u4E0E\u6240\u58F0\u660E\u4E3B {2} \u4E0D\u5339\u914D\u7684 FX \u5E94\u7528\u7A0B\u5E8F\u7C7B {1}
-message.main-class-does-not-match-specified-main=jar {0} \u5177\u6709\u4E0E\u6240\u58F0\u660E\u4E3B {2} \u4E0D\u5339\u914D\u7684\u4E3B\u7C7B {1}
-
warning.no.jdk.modules.found=\u8B66\u544A: \u672A\u627E\u5230 JDK \u6A21\u5757\u3002
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/builders/AbstractAppImageBuilder.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/builders/AbstractAppImageBuilder.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
message.using-default-resource=Using default package resource {0} (add {1} to the class path to customize)
message.using-custom-resource-from-file=Using custom package resource {0} (loaded from file {1})
message.using-custom-resource-from-classpath=Using custom package resource {0} (loaded from {1})
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/builders/AbstractAppImageBuilder_ja.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/builders/AbstractAppImageBuilder_ja.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
message.using-default-resource=\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30D1\u30C3\u30B1\u30FC\u30B8\u30FB\u30EA\u30BD\u30FC\u30B9{0}\u306E\u4F7F\u7528({1}\u3092\u30AF\u30E9\u30B9\u30FB\u30D1\u30B9\u306B\u8FFD\u52A0\u3057\u3066\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA)
message.using-custom-resource-from-file=\u30AB\u30B9\u30BF\u30E0\u30FB\u30D1\u30C3\u30B1\u30FC\u30B8\u30FB\u30EA\u30BD\u30FC\u30B9{0}\u306E\u4F7F\u7528(\u30D5\u30A1\u30A4\u30EB{1}\u304B\u3089\u30ED\u30FC\u30C9\u6E08)
message.using-custom-resource-from-classpath=\u30AB\u30B9\u30BF\u30E0\u30FB\u30D1\u30C3\u30B1\u30FC\u30B8\u30FB\u30EA\u30BD\u30FC\u30B9{0}\u306E\u4F7F\u7528({1}\u304B\u3089\u30ED\u30FC\u30C9\u6E08)
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/builders/AbstractAppImageBuilder_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/builders/AbstractAppImageBuilder_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
message.using-default-resource=\u4F7F\u7528\u9ED8\u8BA4\u7A0B\u5E8F\u5305\u8D44\u6E90 {0} (\u5C06 {1} \u6DFB\u52A0\u5230\u7C7B\u8DEF\u5F84\u4EE5\u5B9A\u5236)
message.using-custom-resource-from-file=\u4F7F\u7528\u5B9A\u5236\u7A0B\u5E8F\u5305\u8D44\u6E90 {0} (\u4ECE\u6587\u4EF6 {1} \u52A0\u8F7D)
message.using-custom-resource-from-classpath=\u4F7F\u7528\u5B9A\u5236\u7A0B\u5E8F\u5305\u8D44\u6E90 {0} (\u4ECE {1} \u52A0\u8F7D)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.packager/share/classes/jdk/packager/internal/resources/jre.module.list Wed Oct 17 13:50:11 2018 -0400
@@ -0,0 +1,56 @@
+; This file contains a list of all modules in a modular JDK that match a JRE.
+
+java.base
+java.compiler
+java.datatransfer
+java.xml
+java.prefs
+java.desktop
+java.instrument
+java.logging
+java.management
+java.security.sasl
+java.naming
+java.rmi
+java.management.rmi
+java.net.http
+java.scripting
+java.security.jgss
+java.transaction.xa
+java.sql
+java.sql.rowset
+java.xml.crypto
+java.se
+java.smartcardio
+jdk.internal.jvmstat
+jdk.attach
+jdk.charsets
+jdk.compiler
+jdk.crypto.ec
+jdk.crypto.cryptoki
+jdk.dynalink
+jdk.httpserver
+jdk.internal.le
+jdk.internal.opt
+jdk.internal.vm.ci
+jdk.management
+jdk.unsupported
+jdk.internal.vm.compiler
+jdk.internal.vm.compiler.management
+jdk.jartool
+jdk.jcmd
+jdk.jdwp.agent
+jdk.jdi
+jdk.jsobject
+jdk.jstatd
+jdk.localedata
+jdk.management.agent
+jdk.naming.dns
+jdk.naming.rmi
+jdk.net
+jdk.scripting.nashorn
+jdk.sctp
+jdk.security.auth
+jdk.security.jgss
+jdk.xml.dom
+jdk.zipfs
--- a/src/jdk.packager/share/classes/jdk/packager/internal/resources/server.jre.list Fri Oct 12 19:00:51 2018 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-; This file contains a list of all modules in a modular JDK that match a JRE.
-
-java.base
-java.compiler
-java.datatransfer
-java.xml
-java.prefs
-java.desktop
-java.instrument
-java.logging
-java.management
-java.security.sasl
-java.naming
-java.rmi
-java.management.rmi
-java.net.http
-java.scripting
-java.security.jgss
-java.transaction.xa
-java.sql
-java.sql.rowset
-java.xml.crypto
-java.se
-java.smartcardio
-jdk.internal.jvmstat
-jdk.attach
-jdk.charsets
-jdk.compiler
-jdk.crypto.ec
-jdk.crypto.cryptoki
-jdk.dynalink
-jdk.httpserver
-jdk.internal.le
-jdk.internal.opt
-jdk.internal.vm.ci
-jdk.management
-jdk.unsupported
-jdk.internal.vm.compiler
-jdk.internal.vm.compiler.management
-jdk.jartool
-jdk.jcmd
-jdk.jdwp.agent
-jdk.jdi
-jdk.jsobject
-jdk.jstatd
-jdk.localedata
-jdk.management.agent
-jdk.naming.dns
-jdk.naming.rmi
-jdk.net
-jdk.scripting.nashorn
-jdk.sctp
-jdk.security.auth
-jdk.security.jgss
-jdk.xml.dom
-jdk.zipfs
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.packager/share/classes/jdk/packager/main/Main.java Wed Oct 17 13:50:11 2018 -0400
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package jdk.packager.main;
+
+import jdk.packager.internal.Arguments;
+import jdk.packager.internal.Log;
+import jdk.packager.internal.CLIHelp;
+import java.io.PrintWriter;
+import java.util.ResourceBundle;
+
+public class Main {
+
+ private static final ResourceBundle bundle =
+ ResourceBundle.getBundle("jdk.packager.internal.resources.Bundle");
+
+ private static final String version = bundle.getString("MSG_Version")
+ + " " + System.getProperty("java.version") + "\n";
+
+ /**
+ * main(String... args)
+ * This is the entry point for the jpackager tool.
+ *
+ * @param args command line arguments
+ */
+ public static void main(String... args) throws Exception {
+ // Create logger with default system.out and system.err
+ Log.Logger logger = new Log.Logger(false);
+ Log.setLogger(logger);
+
+ int status = run(args);
+ System.exit(status);
+ }
+
+ /**
+ * run() - this is the entry point for the ToolProvider API.
+ *
+ * @param out output stream
+ * @param err error output stream
+ * @param args command line arguments
+ * @return an exit code. 0 means success, non-zero means an error occurred.
+ */
+ public static int run(PrintWriter out, PrintWriter err, String... args)
+ throws Exception {
+ // Create logger with provided streams
+ Log.Logger logger = new Log.Logger(false);
+ logger.setPrintWriter(out, err);
+ Log.setLogger(logger);
+
+ int status = run(args);
+ Log.flush();
+ return status;
+ }
+
+ private static int run(String... args) throws Exception {
+ if (args.length == 0) {
+ CLIHelp.showHelp(true);
+ } else if (hasHelp(args)){
+ CLIHelp.showHelp(false);
+ } else if (args.length == 1 && args[0].equals("--version")) {
+ Log.info(version);
+ } else {
+ try {
+ Arguments arguments = new Arguments(args);
+ arguments.processArguments();
+ } catch (Exception e) {
+ if (Arguments.verbose()) {
+ Log.verbose(e);
+ } else {
+ Log.error(e.getMessage());
+ if (e.getCause() != null && e.getCause() != e) {
+ Log.error(e.getCause().getMessage());
+ }
+ }
+ return -1;
+ }
+ }
+
+ return 0;
+ }
+
+ private static boolean hasHelp(String[] args) {
+ for (String a : args) {
+ if ("--help".equals(a) || "-h".equals(a)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+}
--- a/src/jdk.packager/share/classes/module-info.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/classes/module-info.java Wed Oct 17 13:50:11 2018 -0400
@@ -26,15 +26,10 @@
/**
* Defines the Java packager tool, jpackager.
*
- * <p>The jpackager is a tool for generating bundles for self-contained applications.
- * It can be located under the name {@code "jpackager"} using the {@link ToolProvider}, for example:
- * <pre>{@code
- * ToolProvider jpackager = ToolProvider.findFirst("jpackager").orElseThrow(...);
- * jpackager.run(...);
- * }</pre>
+ * <p>jpackager is a tool for generating self-contained application bundles.
*
* @moduleGraph
- * @since 11
+ * @since 12
*/
module jdk.packager {
@@ -51,5 +46,5 @@
jdk.packager.internal.BasicBundlers;
provides java.util.spi.ToolProvider
- with jdk.packager.internal.JavaPackagerToolProvider;
+ with jdk.packager.internal.JPackagerToolProvider;
}
--- a/src/jdk.packager/share/native/library/common/Exports.cpp Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/Exports.cpp Wed Oct 17 13:50:11 2018 -0400
@@ -28,7 +28,7 @@
#include "PlatformString.h"
#include "PropertyFile.h"
#include "Lock.h"
-#include "Java.h"
+#include "JavaTypes.h"
#include "jni.h"
@@ -60,7 +60,8 @@
jstring result = NULL;
Package& package = Package::GetInstance();
- OrderedMap<TString, TString> defaultuserargs = package.GetDefaultJVMUserArgs();
+ OrderedMap<TString, TString> defaultuserargs =
+ package.GetDefaultJVMUserArgs();
TString loption = PlatformString(env, option).toString();
TString temp;
@@ -84,7 +85,8 @@
Package& package = Package::GetInstance();
try {
- result = MapKeysToJObjectArray(env, package.GetDefaultJVMUserArgs());
+ result = MapKeysToJObjectArray(
+ env, package.GetDefaultJVMUserArgs());
}
catch (const JavaException&) {
}
@@ -114,7 +116,8 @@
return result;
}
- static void _setUserJvmKeysAndValues(JNIEnv *env, jobjectArray options, jobjectArray values) {
+ static void _setUserJvmKeysAndValues(
+ JNIEnv *env, jobjectArray options, jobjectArray values) {
if (env == NULL || options == NULL || values == NULL)
return;
@@ -126,8 +129,10 @@
JavaStringArray lvalues(env, values);
for (unsigned int index = 0; index < loptions.Count(); index++) {
- TString name = PlatformString(env, loptions.GetValue(index)).toString();
- TString value = PlatformString(env, lvalues.GetValue(index)).toString();
+ TString name = PlatformString(
+ env, loptions.GetValue(index)).toString();
+ TString value = PlatformString(
+ env, lvalues.GetValue(index)).toString();
newMap.Append(name, value);
}
}
@@ -158,23 +163,34 @@
extern "C" {
- JNIEXPORT jstring JNICALL Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionDefaultValue(JNIEnv *env, jclass klass, jstring option) {
+ JNIEXPORT jstring JNICALL
+ Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionDefaultValue(
+ JNIEnv *env, jclass klass, jstring option) {
return UserJVMArgsExports::_getUserJvmOptionDefaultValue(env, option);
}
- JNIEXPORT jobjectArray JNICALL Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionDefaultKeys(JNIEnv *env, jclass klass) {
+ JNIEXPORT jobjectArray JNICALL
+ Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionDefaultKeys(
+ JNIEnv *env, jclass klass) {
return UserJVMArgsExports::_getUserJvmOptionDefaultKeys(env);
}
- JNIEXPORT jstring JNICALL Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionValue(JNIEnv *env, jclass klass, jstring option) {
+ JNIEXPORT jstring JNICALL
+ Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionValue(
+ JNIEnv *env, jclass klass, jstring option) {
return UserJVMArgsExports::_getUserJvmOptionValue(env, option);
}
- JNIEXPORT void JNICALL Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1setUserJvmKeysAndValues(JNIEnv *env, jclass klass, jobjectArray options, jobjectArray values) {
+ JNIEXPORT void JNICALL
+ Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1setUserJvmKeysAndValues(
+ JNIEnv *env, jclass klass, jobjectArray options,
+ jobjectArray values) {
UserJVMArgsExports::_setUserJvmKeysAndValues(env, options, values);
}
- JNIEXPORT jobjectArray JNICALL Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionKeys(JNIEnv *env, jclass klass) {
+ JNIEXPORT jobjectArray JNICALL
+ Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionKeys(
+ JNIEnv *env, jclass klass) {
return UserJVMArgsExports::_getUserJvmOptionKeys(env);
}
}
@@ -209,10 +225,12 @@
// }
// }
//
-// The call to isdebugger() will wait until a native debugger is attached. The process
-// identifier (pid) will be printed to the console for you to attach your debugger to.
+// The call to isdebugger() will wait until a native debugger is attached.
+// The process identifier (pid) will be printed to the console
+// for you to attach your debugger to.
extern "C" {
- JNIEXPORT jboolean JNICALL Java_com_DebugExports_isdebugged(JNIEnv *env, jclass klass) {
+ JNIEXPORT jboolean JNICALL Java_com_DebugExports_isdebugged(
+ JNIEnv *env, jclass klass) {
jboolean result = false;
Package& package = Package::GetInstance();
@@ -224,7 +242,8 @@
return result;
}
- JNIEXPORT jint JNICALL Java_com_DebugExports_getpid(JNIEnv *env, jclass klass) {
+ JNIEXPORT jint JNICALL Java_com_DebugExports_getpid(
+ JNIEnv *env, jclass klass) {
Platform& platform = Platform::GetInstance();
return platform.GetProcessID();
}
--- a/src/jdk.packager/share/native/library/common/Exports.h Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/Exports.h Wed Oct 17 13:50:11 2018 -0400
@@ -37,40 +37,45 @@
* Method: _getUserJvmOptionDefaultValue
* Signature: (Ljava/lang/String;)Ljava/lang/String;
*/
-JNIEXPORT jstring JNICALL Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionDefaultValue
- (JNIEnv *, jclass, jstring);
+JNIEXPORT jstring JNICALL
+ Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionDefaultValue(
+ JNIEnv *, jclass, jstring);
/*
* Class: jdk_packager_services_userjvmoptions_LauncherUserJvmOptions
* Method: _getUserJvmOptionDefaultKeys
* Signature: ()[Ljava/lang/String;
*/
-JNIEXPORT jobjectArray JNICALL Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionDefaultKeys
- (JNIEnv *, jclass);
+JNIEXPORT jobjectArray JNICALL
+ Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionDefaultKeys(
+ JNIEnv *, jclass);
/*
* Class: jdk_packager_services_userjvmoptions_LauncherUserJvmOptions
* Method: _getUserJvmOptionValue
* Signature: (Ljava/lang/String;)Ljava/lang/String;
*/
-JNIEXPORT jstring JNICALL Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionValue
- (JNIEnv *, jclass, jstring);
+JNIEXPORT jstring JNICALL
+ Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionValue(
+ JNIEnv *, jclass, jstring);
/*
* Class: jdk_packager_services_userjvmoptions_LauncherUserJvmOptions
* Method: _setUserJvmKeysAndValues
* Signature: ([Ljava/lang/String;[Ljava/lang/String;)V
*/
-JNIEXPORT void JNICALL Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1setUserJvmKeysAndValues
- (JNIEnv *, jclass, jobjectArray, jobjectArray);
+JNIEXPORT void JNICALL
+ Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1setUserJvmKeysAndValues(
+ JNIEnv *, jclass, jobjectArray, jobjectArray);
/*
* Class: jdk_packager_services_userjvmoptions_LauncherUserJvmOptions
* Method: _getUserJvmOptionKeys
* Signature: ()[Ljava/lang/String;
*/
-JNIEXPORT jobjectArray JNICALL Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionKeys
- (JNIEnv *, jclass);
+JNIEXPORT jobjectArray JNICALL
+ Java_jdk_packager_services_userjvmoptions_LauncherUserJvmOptions__1getUserJvmOptionKeys(
+ JNIEnv *, jclass);
#ifdef __cplusplus
}
--- a/src/jdk.packager/share/native/library/common/FilePath.cpp Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/FilePath.cpp Wed Oct 17 13:50:11 2018 -0400
@@ -30,11 +30,11 @@
#ifdef WINDOWS
#include <ShellAPI.h>
-#endif //WINDOWS
+#endif // WINDOWS
#ifdef POSIX
#include <sys/stat.h>
-#endif //POSIX
+#endif // POSIX
bool FilePath::FileExists(const TString FileName) {
@@ -54,14 +54,15 @@
FindClose(handle);
}
-#endif //WINDOWS
+#endif // WINDOWS
#ifdef POSIX
struct stat buf;
- if ((stat(StringToFileSystemString(FileName), &buf) == 0) && (S_ISREG(buf.st_mode) != 0)) {
+ if ((stat(StringToFileSystemString(FileName), &buf) == 0) &&
+ (S_ISREG(buf.st_mode) != 0)) {
result = true;
}
-#endif //POSIX
+#endif // POSIX
return result;
}
@@ -79,20 +80,21 @@
FindClose(handle);
}
-#endif //WINDOWS
+#endif // WINDOWS
#ifdef POSIX
struct stat buf;
- if ((stat(StringToFileSystemString(DirectoryName), &buf) == 0) && (S_ISDIR(buf.st_mode) != 0)) {
+ if ((stat(StringToFileSystemString(DirectoryName), &buf) == 0) &&
+ (S_ISDIR(buf.st_mode) != 0)) {
result = true;
}
-#endif //POSIX
+#endif // POSIX
return result;
}
#ifdef WINDOWS
std::string GetLastErrorAsString() {
- //Get the error message, if any.
+ // Get the error message, if any.
DWORD errorMessageID = ::GetLastError();
if (errorMessageID == 0) {
@@ -100,8 +102,10 @@
}
LPSTR messageBuffer = NULL;
- size_t size = FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL, errorMessageID, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&messageBuffer, 0, NULL);
+ size_t size = FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER
+ | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL, errorMessageID, MAKELANGID(LANG_NEUTRAL,
+ SUBLANG_DEFAULT), (LPSTR)&messageBuffer, 0, NULL);
std::string message(messageBuffer, size);
@@ -110,7 +114,7 @@
return message;
}
-#endif //WINDOWS
+#endif // WINDOWS
bool FilePath::DeleteFile(const TString FileName) {
bool result = false;
@@ -125,12 +129,12 @@
}
result = ::DeleteFile(lFileName.data()) == TRUE;
-#endif //WINDOWS
+#endif // WINDOWS
#ifdef POSIX
if (unlink(StringToFileSystemString(FileName)) == 0) {
result = true;
}
-#endif //POSIX
+#endif // POSIX
}
return result;
@@ -145,25 +149,26 @@
TString directoryName = FixPathForPlatform(DirectoryName);
DynamicBuffer<TCHAR> lDirectoryName(directoryName.size() + 2);
memcpy(lDirectoryName.GetData(), directoryName.data(), (directoryName.size() + 2) * sizeof(TCHAR));
- lDirectoryName[directoryName.size() + 1] = NULL; // Double null terminate for SHFileOperation.
+ lDirectoryName[directoryName.size() + 1] = NULL;
+ // Double null terminate for SHFileOperation.
// Delete the folder and everything inside.
fos.wFunc = FO_DELETE;
fos.pFrom = lDirectoryName.GetData();
fos.fFlags = FOF_NO_UI;
result = SHFileOperation(&fos) == 0;
-#endif //WINDOWS
+#endif // WINDOWS
#ifdef POSIX
if (unlink(StringToFileSystemString(DirectoryName)) == 0) {
result = true;
}
-#endif //POSIX
+#endif // POSIX
}
return result;
}
-TString FilePath::IncludeTrailingSeparater(const TString value) {
+TString FilePath::IncludeTrailingSeparator(const TString value) {
TString result = value;
if (value.size() > 0) {
@@ -178,14 +183,14 @@
return result;
}
-TString FilePath::IncludeTrailingSeparater(const char* value) {
+TString FilePath::IncludeTrailingSeparator(const char* value) {
TString lvalue = PlatformString(value).toString();
- return IncludeTrailingSeparater(lvalue);
+ return IncludeTrailingSeparator(lvalue);
}
-TString FilePath::IncludeTrailingSeparater(const wchar_t* value) {
+TString FilePath::IncludeTrailingSeparator(const wchar_t* value) {
TString lvalue = PlatformString(value).toString();
- return IncludeTrailingSeparater(lvalue);
+ return IncludeTrailingSeparator(lvalue);
}
TString FilePath::ExtractFilePath(TString Path) {
@@ -195,10 +200,10 @@
if (slash != TString::npos)
result = Path.substr(0, slash);
return result;
-#endif //WINDOWS
+#endif // WINDOWS
#ifdef POSIX
return dirname(StringToFileSystemString(Path));
-#endif //POSIX
+#endif // POSIX
}
TString FilePath::ExtractFileExt(TString Path) {
@@ -221,10 +226,10 @@
result = Path.substr(slash + 1, Path.size() - slash - 1);
return result;
-#endif // WINDOWS
+#endif // WINDOWS
#ifdef POSIX
return basename(StringToFileSystemString(Path));
-#endif //POSIX
+#endif // POSIX
}
TString FilePath::ChangeFileExt(TString Path, TString Extension) {
@@ -244,7 +249,8 @@
TString FilePath::FixPathForPlatform(TString Path) {
TString result = Path;
- std::replace(result.begin(), result.end(), BAD_TRAILING_PATHSEPARATOR, TRAILING_PATHSEPARATOR);
+ std::replace(result.begin(), result.end(),
+ BAD_TRAILING_PATHSEPARATOR, TRAILING_PATHSEPARATOR);
#ifdef WINDOWS
// The maximum path that does not require long path prefix. On Windows the
// maximum path is 260 minus 1 (NUL) but for directories it is 260 minus
@@ -268,7 +274,8 @@
TString FilePath::FixPathSeparatorForPlatform(TString Path) {
TString result = Path;
- std::replace(result.begin(), result.end(), BAD_PATH_SEPARATOR, PATH_SEPARATOR);
+ std::replace(result.begin(), result.end(),
+ BAD_PATH_SEPARATOR, PATH_SEPARATOR);
return result;
}
@@ -289,7 +296,8 @@
lpath = ExtractFilePath(lpath);
}
- for (std::list<TString>::iterator iterator = paths.begin(); iterator != paths.end(); iterator++) {
+ for (std::list<TString>::iterator iterator = paths.begin();
+ iterator != paths.end(); iterator++) {
lpath = *iterator;
#ifdef WINDOWS
@@ -301,7 +309,7 @@
mode |= S_IRWXG | S_IROTH | S_IXOTH;
}
if (mkdir(StringToFileSystemString(lpath), mode) == 0) {
-#endif //POSIX
+#endif // POSIX
result = true;
}
else {
@@ -323,7 +331,7 @@
#endif // POSIX
}
-//--------------------------------------------------------------------------------------------------
+//----------------------------------------------------------------------------
#include <algorithm>
@@ -339,8 +347,9 @@
#ifdef WINDOWS
DWORD attributes = 0;
- for (std::vector<FileAttribute>::const_iterator iterator = FAttributes.begin();
- iterator != FAttributes.end(); iterator++) {
+ for (std::vector<FileAttribute>::const_iterator iterator =
+ FAttributes.begin();
+ iterator != FAttributes.end(); iterator++) {
switch (*iterator) {
case faArchive: {
attributes = attributes & FILE_ATTRIBUTE_ARCHIVE;
@@ -366,10 +375,6 @@
attributes = attributes & FILE_ATTRIBUTE_HIDDEN;
break;
}
-// case faIntegrityStream: {
-// attributes = attributes & FILE_ATTRIBUTE_INTEGRITY_STREAM;
-// break;
-// }
case faNormal: {
attributes = attributes & FILE_ATTRIBUTE_NORMAL;
break;
@@ -378,10 +383,6 @@
attributes = attributes & FILE_ATTRIBUTE_NOT_CONTENT_INDEXED;
break;
}
-// case faNoScrubData: {
-// attributes = attributes & FILE_ATTRIBUTE_NO_SCRUB_DATA;
-// break;
-// }
case faOffline: {
attributes = attributes & FILE_ATTRIBUTE_OFFLINE;
break;
@@ -420,8 +421,9 @@
#ifdef POSIX
mode_t attributes = 0;
- for (std::vector<FileAttribute>::const_iterator iterator = FAttributes.begin();
- iterator != FAttributes.end(); iterator++) {
+ for (std::vector<FileAttribute>::const_iterator iterator =
+ FAttributes.begin();
+ iterator != FAttributes.end(); iterator++) {
switch (*iterator) {
case faBlockSpecial: {
attributes |= S_IFBLK;
@@ -516,7 +518,7 @@
if (chmod(FFileName.data(), attributes) == 0) {
result = true;
}
-#endif //POSIX
+#endif // POSIX
return result;
}
@@ -542,23 +544,57 @@
if (attributes != INVALID_FILE_ATTRIBUTES) {
result = true;
- if (attributes | FILE_ATTRIBUTE_ARCHIVE) { FAttributes.push_back(faArchive); }
- if (attributes | FILE_ATTRIBUTE_COMPRESSED) { FAttributes.push_back(faCompressed); }
- if (attributes | FILE_ATTRIBUTE_DEVICE) { FAttributes.push_back(faDevice); }
- if (attributes | FILE_ATTRIBUTE_DIRECTORY) { FAttributes.push_back(faDirectory); }
- if (attributes | FILE_ATTRIBUTE_ENCRYPTED) { FAttributes.push_back(faEncrypted); }
- if (attributes | FILE_ATTRIBUTE_HIDDEN) { FAttributes.push_back(faHidden); }
- //if (attributes | FILE_ATTRIBUTE_INTEGRITY_STREAM) { FAttributes.push_back(faIntegrityStream); }
- if (attributes | FILE_ATTRIBUTE_NORMAL) { FAttributes.push_back(faNormal); }
- if (attributes | FILE_ATTRIBUTE_NOT_CONTENT_INDEXED) { FAttributes.push_back(faNotContentIndexed); }
- //if (attributes | FILE_ATTRIBUTE_NO_SCRUB_DATA) { FAttributes.push_back(faNoScrubData); }
- if (attributes | FILE_ATTRIBUTE_SYSTEM) { FAttributes.push_back(faSystem); }
- if (attributes | FILE_ATTRIBUTE_OFFLINE) { FAttributes.push_back(faOffline); }
- if (attributes | FILE_ATTRIBUTE_REPARSE_POINT) { FAttributes.push_back(faSymbolicLink); }
- if (attributes | FILE_ATTRIBUTE_SPARSE_FILE) { FAttributes.push_back(faSparceFile); }
- if (attributes | FILE_ATTRIBUTE_READONLY ) { FAttributes.push_back(faReadOnly); }
- if (attributes | FILE_ATTRIBUTE_TEMPORARY) { FAttributes.push_back(faTemporary); }
- if (attributes | FILE_ATTRIBUTE_VIRTUAL) { FAttributes.push_back(faVirtual); }
+ if (attributes | FILE_ATTRIBUTE_ARCHIVE) {
+ FAttributes.push_back(faArchive);
+ }
+ if (attributes | FILE_ATTRIBUTE_COMPRESSED) {
+ FAttributes.push_back(faCompressed);
+ }
+ if (attributes | FILE_ATTRIBUTE_DEVICE) {
+ FAttributes.push_back(faDevice);
+ }
+ if (attributes | FILE_ATTRIBUTE_DIRECTORY) {
+ FAttributes.push_back(faDirectory);
+ }
+ if (attributes | FILE_ATTRIBUTE_ENCRYPTED) {
+ FAttributes.push_back(faEncrypted);
+ }
+ if (attributes | FILE_ATTRIBUTE_HIDDEN) {
+ FAttributes.push_back(faHidden);
+ }
+ // if (attributes | FILE_ATTRIBUTE_INTEGRITY_STREAM) {
+ // FAttributes.push_back(faIntegrityStream);
+ // }
+ if (attributes | FILE_ATTRIBUTE_NORMAL) {
+ FAttributes.push_back(faNormal);
+ }
+ if (attributes | FILE_ATTRIBUTE_NOT_CONTENT_INDEXED) {
+ FAttributes.push_back(faNotContentIndexed);
+ }
+ // if (attributes | FILE_ATTRIBUTE_NO_SCRUB_DATA) {
+ // FAttributes.push_back(faNoScrubData);
+ // }
+ if (attributes | FILE_ATTRIBUTE_SYSTEM) {
+ FAttributes.push_back(faSystem);
+ }
+ if (attributes | FILE_ATTRIBUTE_OFFLINE) {
+ FAttributes.push_back(faOffline);
+ }
+ if (attributes | FILE_ATTRIBUTE_REPARSE_POINT) {
+ FAttributes.push_back(faSymbolicLink);
+ }
+ if (attributes | FILE_ATTRIBUTE_SPARSE_FILE) {
+ FAttributes.push_back(faSparceFile);
+ }
+ if (attributes | FILE_ATTRIBUTE_READONLY ) {
+ FAttributes.push_back(faReadOnly);
+ }
+ if (attributes | FILE_ATTRIBUTE_TEMPORARY) {
+ FAttributes.push_back(faTemporary);
+ }
+ if (attributes | FILE_ATTRIBUTE_VIRTUAL) {
+ FAttributes.push_back(faVirtual);
+ }
}
#endif // WINDOWS
#ifdef POSIX
@@ -567,47 +603,80 @@
if (stat(StringToFileSystemString(FFileName), &status) == 0) {
result = true;
- if (S_ISBLK(status.st_mode) != 0) { FAttributes.push_back(faBlockSpecial); }
- if (S_ISCHR(status.st_mode) != 0) { FAttributes.push_back(faCharacterSpecial); }
- if (S_ISFIFO(status.st_mode) != 0) { FAttributes.push_back(faFIFOSpecial); }
- if (S_ISREG(status.st_mode) != 0) { FAttributes.push_back(faNormal); }
- if (S_ISDIR(status.st_mode) != 0) { FAttributes.push_back(faDirectory); }
- if (S_ISLNK(status.st_mode) != 0) { FAttributes.push_back(faSymbolicLink); }
- if (S_ISSOCK(status.st_mode) != 0) { FAttributes.push_back(faSocket); }
+ if (S_ISBLK(status.st_mode) != 0) {
+ FAttributes.push_back(faBlockSpecial);
+ }
+ if (S_ISCHR(status.st_mode) != 0) {
+ FAttributes.push_back(faCharacterSpecial);
+ }
+ if (S_ISFIFO(status.st_mode) != 0) {
+ FAttributes.push_back(faFIFOSpecial);
+ }
+ if (S_ISREG(status.st_mode) != 0) {
+ FAttributes.push_back(faNormal);
+ }
+ if (S_ISDIR(status.st_mode) != 0) {
+ FAttributes.push_back(faDirectory);
+ }
+ if (S_ISLNK(status.st_mode) != 0) {
+ FAttributes.push_back(faSymbolicLink);
+ }
+ if (S_ISSOCK(status.st_mode) != 0) {
+ FAttributes.push_back(faSocket);
+ }
// Owner
if (S_ISRUSR(status.st_mode) != 0) {
- if (S_ISWUSR(status.st_mode) != 0) { FAttributes.push_back(faReadWrite); }
- else { FAttributes.push_back(faReadOnly); }
+ if (S_ISWUSR(status.st_mode) != 0) {
+ FAttributes.push_back(faReadWrite);
+ } else {
+ FAttributes.push_back(faReadOnly);
+ }
+ } else if (S_ISWUSR(status.st_mode) != 0) {
+ FAttributes.push_back(faWriteOnly);
}
- else if (S_ISWUSR(status.st_mode) != 0) { FAttributes.push_back(faWriteOnly); }
- if (S_ISXUSR(status.st_mode) != 0) { FAttributes.push_back(faExecute); }
+ if (S_ISXUSR(status.st_mode) != 0) {
+ FAttributes.push_back(faExecute);
+ }
// Group
if (S_ISRGRP(status.st_mode) != 0) {
- if (S_ISWGRP(status.st_mode) != 0) { FAttributes.push_back(faGroupReadWrite); }
- else { FAttributes.push_back(faGroupReadOnly); }
+ if (S_ISWGRP(status.st_mode) != 0) {
+ FAttributes.push_back(faGroupReadWrite);
+ } else {
+ FAttributes.push_back(faGroupReadOnly);
+ }
+ } else if (S_ISWGRP(status.st_mode) != 0) {
+ FAttributes.push_back(faGroupWriteOnly);
}
- else if (S_ISWGRP(status.st_mode) != 0) { FAttributes.push_back(faGroupWriteOnly); }
- if (S_ISXGRP(status.st_mode) != 0) { FAttributes.push_back(faGroupExecute); }
+ if (S_ISXGRP(status.st_mode) != 0) {
+ FAttributes.push_back(faGroupExecute);
+ }
// Others
if (S_ISROTH(status.st_mode) != 0) {
- if (S_ISWOTH(status.st_mode) != 0) { FAttributes.push_back(faOthersReadWrite); }
- else { FAttributes.push_back(faOthersReadOnly); }
+ if (S_ISWOTH(status.st_mode) != 0) {
+ FAttributes.push_back(faOthersReadWrite);
+ } else {
+ FAttributes.push_back(faOthersReadOnly);
+ }
}
- else if (S_ISWOTH(status.st_mode) != 0) { FAttributes.push_back(faOthersWriteOnly); }
+ else if (S_ISWOTH(status.st_mode) != 0) {
+ FAttributes.push_back(faOthersWriteOnly);
+ }
- if (S_ISXOTH(status.st_mode) != 0) { FAttributes.push_back(faOthersExecute); }
+ if (S_ISXOTH(status.st_mode) != 0) {
+ FAttributes.push_back(faOthersExecute);
+ }
if (FFileName.size() > 0 && FFileName[0] == '.') {
FAttributes.push_back(faHidden);
}
}
-#endif //POSIX
+#endif // POSIX
return result;
}
@@ -633,7 +702,7 @@
case faOthersWriteOnly:
case faOthersReadOnly:
case faOthersExecute:
-#endif //POSIX
+#endif // POSIX
case faReadOnly: {
result = true;
@@ -653,7 +722,7 @@
(Value == faWriteOnly && Contains(faReadOnly) == true)) {
Value = faReadWrite;
}
-#endif //POSIX
+#endif // POSIX
FAttributes.push_back(Value);
WriteAttributes();
@@ -663,7 +732,8 @@
bool FileAttributes::Contains(FileAttribute Value) {
bool result = false;
- std::vector<FileAttribute>::const_iterator iterator = std::find(FAttributes.begin(), FAttributes.end(), Value);
+ std::vector<FileAttribute>::const_iterator iterator =
+ std::find(FAttributes.begin(), FAttributes.end(), Value);
if (iterator != FAttributes.end()) {
result = true;
@@ -683,9 +753,10 @@
Append(faReadOnly);
Remove(faReadWrite);
}
-#endif //POSIX
+#endif // POSIX
- std::vector<FileAttribute>::iterator iterator = std::find(FAttributes.begin(), FAttributes.end(), Value);
+ std::vector<FileAttribute>::iterator iterator =
+ std::find(FAttributes.begin(), FAttributes.end(), Value);
if (iterator != FAttributes.end()) {
FAttributes.erase(iterator);
--- a/src/jdk.packager/share/native/library/common/FilePath.h Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/FilePath.h Wed Oct 17 13:50:11 2018 -0400
@@ -117,9 +117,9 @@
static TString ExtractFileName(TString Path);
static TString ChangeFileExt(TString Path, TString Extension);
- static TString IncludeTrailingSeparater(const TString value);
- static TString IncludeTrailingSeparater(const char* value);
- static TString IncludeTrailingSeparater(const wchar_t* value);
+ static TString IncludeTrailingSeparator(const TString value);
+ static TString IncludeTrailingSeparator(const char* value);
+ static TString IncludeTrailingSeparator(const wchar_t* value);
static TString FixPathForPlatform(TString Path);
static TString FixPathSeparatorForPlatform(TString Path);
static TString PathSeparator();
--- a/src/jdk.packager/share/native/library/common/GenericPlatform.cpp Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/GenericPlatform.cpp Wed Oct 17 13:50:11 2018 -0400
@@ -30,7 +30,7 @@
#ifdef WINDOWS
#include <codecvt>
-#endif //WINDOWS
+#endif // WINDOWS
GenericPlatform::GenericPlatform(void) {
@@ -44,7 +44,7 @@
TString basedir = GetPackageAppDirectory();
if (basedir.empty() == false) {
- basedir = FilePath::IncludeTrailingSeparater(basedir);
+ basedir = FilePath::IncludeTrailingSeparator(basedir);
TString appConfig = basedir + GetAppName() + _T(".cfg");
if (FilePath::FileExists(appConfig) == true) {
@@ -64,19 +64,22 @@
TString GenericPlatform::GetPackageAppDirectory() {
#if defined(WINDOWS) || defined(LINUX)
- return FilePath::IncludeTrailingSeparater(GetPackageRootDirectory()) + _T("app");
-#endif //WINDOWS || LINUX
+ return FilePath::IncludeTrailingSeparator(
+ GetPackageRootDirectory()) + _T("app");
+#endif // WINDOWS || LINUX
#ifdef MAC
- return FilePath::IncludeTrailingSeparater(GetPackageRootDirectory()) + _T("Java");
+ return FilePath::IncludeTrailingSeparator(
+ GetPackageRootDirectory()) + _T("Java");
#endif
}
TString GenericPlatform::GetPackageLauncherDirectory() {
#if defined(WINDOWS) || defined(LINUX)
return GetPackageRootDirectory();
-#endif //WINDOWS || LINUX
+#endif // WINDOWS || LINUX
#ifdef MAC
- return FilePath::IncludeTrailingSeparater(GetPackageRootDirectory()) + _T("MacOS");
+ return FilePath::IncludeTrailingSeparator(
+ GetPackageRootDirectory()) + _T("MacOS");
#endif
}
@@ -88,14 +91,15 @@
#ifdef WINDOWS
const std::locale empty_locale = std::locale::empty();
-#endif //WINDOWS
+#endif // WINDOWS
#ifdef POSIX
const std::locale empty_locale = std::locale::classic();
-#endif //POSIX
+#endif // POSIX
#if defined(WINDOWS)
- const std::locale utf8_locale = std::locale(empty_locale, new std::codecvt_utf8<wchar_t>());
+ const std::locale utf8_locale =
+ std::locale(empty_locale, new std::codecvt_utf8<wchar_t>());
stream.imbue(utf8_locale);
-#endif //WINDOWS
+#endif // WINDOWS
if (stream.is_open() == true) {
while (stream.eof() == false) {
@@ -126,17 +130,19 @@
#ifdef WINDOWS
const std::locale empty_locale = std::locale::empty();
-#endif //WINDOWS
+#endif // WINDOWS
#ifdef POSIX
const std::locale empty_locale = std::locale::classic();
-#endif //POSIX
+#endif // POSIX
#if defined(WINDOWS)
- const std::locale utf8_locale = std::locale(empty_locale, new std::codecvt_utf8<wchar_t>());
+ const std::locale utf8_locale =
+ std::locale(empty_locale, new std::codecvt_utf8<wchar_t>());
stream.imbue(utf8_locale);
-#endif //WINDOWS || MAC
+#endif // WINDOWS || MAC
if (stream.is_open() == true) {
- for (std::list<TString>::const_iterator iterator = Contents.begin(); iterator != Contents.end(); iterator++) {
+ for (std::list<TString>::const_iterator iterator =
+ Contents.begin(); iterator != Contents.end(); iterator++) {
TString line = *iterator;
stream << PlatformString(line).toUnicodeString() << std::endl;
}
@@ -152,33 +158,60 @@
#endif
return result;
}
-#endif //WINDOWS || LINUX
+#endif // WINDOWS || LINUX
std::map<TString, TString> GenericPlatform::GetKeys() {
std::map<TString, TString> keys;
- keys.insert(std::map<TString, TString>::value_type(CONFIG_VERSION, _T("app.version")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_MAINJAR_KEY, _T("app.mainjar")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_MAINMODULE_KEY, _T("app.mainmodule")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_MAINCLASSNAME_KEY, _T("app.mainclass")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_CLASSPATH_KEY, _T("app.classpath")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_MODULEPATH_KEY, _T("app.modulepath")));
- keys.insert(std::map<TString, TString>::value_type(APP_NAME_KEY, _T("app.name")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_APP_ID_KEY, _T("app.preferences.id")));
- keys.insert(std::map<TString, TString>::value_type(JVM_RUNTIME_KEY, _T("app.runtime")));
- keys.insert(std::map<TString, TString>::value_type(PACKAGER_APP_DATA_DIR, _T("app.identifier")));
-
- keys.insert(std::map<TString, TString>::value_type(CONFIG_SPLASH_KEY, _T("app.splash")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_APP_MEMORY, _T("app.memory")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_APP_DEBUG, _T("app.debug")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_APPLICATION_INSTANCE, _T("app.application.instance")));
-
- keys.insert(std::map<TString, TString>::value_type(CONFIG_SECTION_APPLICATION, _T("Application")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_SECTION_JVMOPTIONS, _T("JVMOptions")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_SECTION_JVMUSEROPTIONS, _T("JVMUserOptions")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS, _T("JVMUserOverrideOptions")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_SECTION_APPCDSJVMOPTIONS, _T("AppCDSJVMOptions")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS, _T("AppCDSGenerateCacheJVMOptions")));
- keys.insert(std::map<TString, TString>::value_type(CONFIG_SECTION_ARGOPTIONS, _T("ArgOptions")));
+ keys.insert(std::map<TString, TString>::value_type(CONFIG_VERSION,
+ _T("app.version")));
+ keys.insert(std::map<TString, TString>::value_type(CONFIG_MAINJAR_KEY,
+ _T("app.mainjar")));
+ keys.insert(std::map<TString, TString>::value_type(CONFIG_MAINMODULE_KEY,
+ _T("app.mainmodule")));
+ keys.insert(std::map<TString, TString>::value_type(CONFIG_MAINCLASSNAME_KEY,
+ _T("app.mainclass")));
+ keys.insert(std::map<TString, TString>::value_type(CONFIG_CLASSPATH_KEY,
+ _T("app.classpath")));
+ keys.insert(std::map<TString, TString>::value_type(CONFIG_MODULEPATH_KEY,
+ _T("app.modulepath")));
+ keys.insert(std::map<TString, TString>::value_type(APP_NAME_KEY,
+ _T("app.name")));
+ keys.insert(std::map<TString, TString>::value_type(CONFIG_APP_ID_KEY,
+ _T("app.preferences.id")));
+ keys.insert(std::map<TString, TString>::value_type(JVM_RUNTIME_KEY,
+ _T("app.runtime")));
+ keys.insert(std::map<TString, TString>::value_type(PACKAGER_APP_DATA_DIR,
+ _T("app.identifier")));
+ keys.insert(std::map<TString, TString>::value_type(CONFIG_SPLASH_KEY,
+ _T("app.splash")));
+ keys.insert(std::map<TString, TString>::value_type(CONFIG_APP_MEMORY,
+ _T("app.memory")));
+ keys.insert(std::map<TString, TString>::value_type(CONFIG_APP_DEBUG,
+ _T("app.debug")));
+ keys.insert(std::map<TString,
+ TString>::value_type(CONFIG_APPLICATION_INSTANCE,
+ _T("app.application.instance")));
+ keys.insert(std::map<TString,
+ TString>::value_type(CONFIG_SECTION_APPLICATION,
+ _T("Application")));
+ keys.insert(std::map<TString,
+ TString>::value_type(CONFIG_SECTION_JVMOPTIONS,
+ _T("JVMOptions")));
+ keys.insert(std::map<TString,
+ TString>::value_type(CONFIG_SECTION_JVMUSEROPTIONS,
+ _T("JVMUserOptions")));
+ keys.insert(std::map<TString,
+ TString>::value_type(CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS,
+ _T("JVMUserOverrideOptions")));
+ keys.insert(std::map<TString,
+ TString>::value_type(CONFIG_SECTION_APPCDSJVMOPTIONS,
+ _T("AppCDSJVMOptions")));
+ keys.insert(std::map<TString,
+ TString>::value_type(CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS,
+ _T("AppCDSGenerateCacheJVMOptions")));
+ keys.insert(std::map<TString,
+ TString>::value_type(CONFIG_SECTION_ARGOPTIONS,
+ _T("ArgOptions")));
return keys;
}
@@ -193,4 +226,4 @@
return result;
}
-#endif //DEBUG
+#endif // DEBUG
--- a/src/jdk.packager/share/native/library/common/GenericPlatform.h Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/GenericPlatform.h Wed Oct 17 13:50:11 2018 -0400
@@ -27,11 +27,12 @@
#define GENERICPLATFORM_H
#include "FilePath.h"
-//#include "Platform.h"
+// #include "Platform.h"
#ifdef WINDOWS
#pragma warning( push )
-#pragma warning( disable : 4250 ) // C4250 - 'class1' : inherits 'class2::member' via dominance
+// C4250 - 'class1' : inherits 'class2::member' via dominance
+#pragma warning( disable : 4250 )
#endif
class GenericPlatform : virtual public Platform {
@@ -45,19 +46,20 @@
virtual TString GetConfigFileName();
virtual std::list<TString> LoadFromFile(TString FileName);
- virtual void SaveToFile(TString FileName, std::list<TString> Contents, bool ownerOnly);
+ virtual void SaveToFile(TString FileName,
+ std::list<TString> Contents, bool ownerOnly);
#if defined(WINDOWS) || defined(LINUX)
virtual TString GetAppName();
-#endif //WINDOWS || LINUX
+#endif // WINDOWS || LINUX
virtual std::map<TString, TString> GetKeys();
#ifdef DEBUG
virtual DebugState GetDebugState();
-#endif //DEBUG
+#endif // DEBUG
};
#ifdef WINDOWS
#pragma warning( pop ) // C4250
#endif
-#endif //GENERICPLATFORM_H
+#endif // GENERICPLATFORM_H
--- a/src/jdk.packager/share/native/library/common/Helpers.cpp Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/Helpers.cpp Wed Oct 17 13:50:11 2018 -0400
@@ -28,7 +28,8 @@
#include "PropertyFile.h"
-bool Helpers::SplitOptionIntoNameValue(TString option, TString& Name, TString& Value) {
+bool Helpers::SplitOptionIntoNameValue(
+ TString option, TString& Name, TString& Value) {
bool result = false;
Name = _T("");
Value = _T("");
@@ -80,7 +81,7 @@
Value = option.substr(index, index - option.length());
}
- return true;
+ return result;
}
@@ -123,11 +124,13 @@
return result;
}
-OrderedMap<TString, TString> Helpers::GetJVMArgsFromConfig(IPropertyContainer* config) {
+OrderedMap<TString, TString>
+ Helpers::GetJVMArgsFromConfig(IPropertyContainer* config) {
OrderedMap<TString, TString> result;
for (unsigned int index = 0; index < config->GetCount(); index++) {
- TString argname = TString(_T("jvmarg.")) + PlatformString(index + 1).toString();
+ TString argname =
+ TString(_T("jvmarg.")) + PlatformString(index + 1).toString();
TString argvalue;
if (config->GetValue(argname, argvalue) == false) {
@@ -136,25 +139,29 @@
else if (argvalue.empty() == false) {
TString name;
TString value;
- Helpers::SplitOptionIntoNameValue(argvalue, name, value);
- result.Append(name, value);
+ if (Helpers::SplitOptionIntoNameValue(argvalue, name, value)) {
+ result.Append(name, value);
+ }
}
}
return result;
}
-OrderedMap<TString, TString> Helpers::GetJVMUserArgsFromConfig(IPropertyContainer* config) {
+OrderedMap<TString, TString>
+ Helpers::GetJVMUserArgsFromConfig(IPropertyContainer* config) {
OrderedMap<TString, TString> result;
for (unsigned int index = 0; index < config->GetCount(); index++) {
- TString prefix = TString(_T("jvmuserarg.")) + PlatformString(index + 1).toString();
+ TString prefix = TString(_T("jvmuserarg."))
+ + PlatformString(index + 1).toString();
TString argname = prefix + _T(".name");
TString argvalue = prefix + _T(".value");
TString name;
TString value;
- if ((config->GetValue(argname, name) == false) || (config->GetValue(argvalue, value) == false)) {
+ if ((config->GetValue(argname, name) == false) ||
+ (config->GetValue(argvalue, value) == false)) {
break;
}
else if ((name.empty() == false) && (value.empty() == false)) {
@@ -169,7 +176,8 @@
std::list<TString> result;
for (unsigned int index = 0; index < config->GetCount(); index++) {
- TString argname = TString(_T("arg.")) + PlatformString(index + 1).toString();
+ TString argname = TString(_T("arg."))
+ + PlatformString(index + 1).toString();
TString argvalue;
if (config->GetValue(argname, argvalue) == false) {
@@ -215,18 +223,22 @@
AppendToIni(propertyFile, Container, keys[CONFIG_SPLASH_KEY]);
// JVMOptions Section
- OrderedMap<TString, TString> JVMArgs = Helpers::GetJVMArgsFromConfig(&propertyFile);
+ OrderedMap<TString, TString> JVMArgs =
+ Helpers::GetJVMArgsFromConfig(&propertyFile);
Container->AppendSection(keys[CONFIG_SECTION_JVMOPTIONS], JVMArgs);
// JVMUserOptions Section
- OrderedMap<TString, TString> defaultJVMUserArgs = Helpers::GetJVMUserArgsFromConfig(&propertyFile);
- Container->AppendSection(keys[CONFIG_SECTION_JVMUSEROPTIONS], defaultJVMUserArgs);
+ OrderedMap<TString, TString> defaultJVMUserArgs =
+ Helpers::GetJVMUserArgsFromConfig(&propertyFile);
+ Container->AppendSection(keys[CONFIG_SECTION_JVMUSEROPTIONS],
+ defaultJVMUserArgs);
// ArgOptions Section
std::list<TString> args = Helpers::GetArgsFromConfig(&propertyFile);
OrderedMap<TString, TString> convertedArgs;
- for (std::list<TString>::iterator iterator = args.begin(); iterator != args.end(); iterator++) {
+ for (std::list<TString>::iterator iterator = args.begin();
+ iterator != args.end(); iterator++) {
TString arg = *iterator;
TString name;
TString value;
@@ -236,7 +248,8 @@
}
}
- Container->AppendSection(keys[CONFIG_SECTION_ARGOPTIONS], convertedArgs);
+ Container->AppendSection(keys[CONFIG_SECTION_ARGOPTIONS],
+ convertedArgs);
}
}
@@ -251,16 +264,20 @@
std::map<TString, TString> keys = platform.GetKeys();
// JVMUserOverridesOptions Section
- OrderedMap<TString, TString> defaultJVMUserArgs = Helpers::GetJVMUserArgsFromConfig(&propertyFile);
- Container->AppendSection(keys[CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS], defaultJVMUserArgs);
+ OrderedMap<TString, TString> defaultJVMUserArgs =
+ Helpers::GetJVMUserArgsFromConfig(&propertyFile);
+ Container->AppendSection(keys[CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS],
+ defaultJVMUserArgs);
}
}
-std::list<TString> Helpers::MapToNameValueList(OrderedMap<TString, TString> Map) {
+std::list<TString>
+ Helpers::MapToNameValueList(OrderedMap<TString, TString> Map) {
std::list<TString> result;
std::vector<TString> keys = Map.GetKeys();
- for (OrderedMap<TString, TString>::const_iterator iterator = Map.begin(); iterator != Map.end(); iterator++) {
+ for (OrderedMap<TString, TString>::const_iterator iterator = Map.begin();
+ iterator != Map.end(); iterator++) {
pair<TString, TString> *item = *iterator;
TString key = item->first;
TString value = item->second;
@@ -296,8 +313,6 @@
for (unsigned int index = 0; index < Value.length(); index++) {
TCHAR c = Value[index];
-// Environment::NewLine;
-
switch (c) {
case '\n': {
result.push_back(line);
--- a/src/jdk.packager/share/native/library/common/Helpers.h Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/Helpers.h Wed Oct 17 13:50:11 2018 -0400
@@ -43,26 +43,29 @@
//
// Example 2:
// <name=foo=, value=goo>
- static bool SplitOptionIntoNameValue(TString option, TString& Name, TString& Value);
+ static bool SplitOptionIntoNameValue(TString option,
+ TString& Name, TString& Value);
static TString ReplaceString(TString subject, const TString& search,
- const TString& replace);
+ const TString& replace);
static TString ConvertIdToFilePath(TString Value);
static TString ConvertIdToJavaPath(TString Value);
static TString ConvertJavaPathToId(TString Value);
- static OrderedMap<TString, TString> GetJVMArgsFromConfig(IPropertyContainer* config);
- static OrderedMap<TString, TString> GetJVMUserArgsFromConfig(IPropertyContainer* config);
- //static OrderedMap<TString, TString> GetConfigFromJVMUserArgs(OrderedMap<TString, TString> Value);
+ static OrderedMap<TString, TString>
+ GetJVMArgsFromConfig(IPropertyContainer* config);
+ static OrderedMap<TString, TString>
+ GetJVMUserArgsFromConfig(IPropertyContainer* config);
static std::list<TString> GetArgsFromConfig(IPropertyContainer* config);
static void LoadOldConfigFile(TString FileName, IniFile* Container);
static void LoadOldUserConfigFile(TString FileName, IniFile* Container);
- static std::list<TString> MapToNameValueList(OrderedMap<TString, TString> Map);
+ static std::list<TString>
+ MapToNameValueList(OrderedMap<TString, TString> Map);
static TString NameValueToString(TString name, TString value);
static std::list<TString> StringToArray(TString Value);
};
-#endif //HELPERS_H
+#endif // HELPERS_H
--- a/src/jdk.packager/share/native/library/common/IniFile.cpp Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/IniFile.cpp Wed Oct 17 13:50:11 2018 -0400
@@ -33,7 +33,8 @@
}
IniFile::~IniFile() {
- for (OrderedMap<TString, IniSectionData*>::iterator iterator = FMap.begin(); iterator != FMap.end(); iterator++) {
+ for (OrderedMap<TString, IniSectionData*>::iterator iterator =
+ FMap.begin(); iterator != FMap.end(); iterator++) {
pair<TString, IniSectionData*> *item = *iterator;
delete item->second;
}
@@ -48,9 +49,11 @@
if (contents.empty() == false) {
bool found = false;
- // Determine the if file is an INI file or property file. Assign FDefaultSection if it is
+ // Determine the if file is an INI file or property file.
+ // Assign FDefaultSection if it is
// an INI file. Otherwise FDefaultSection is NULL.
- for (std::list<TString>::const_iterator iterator = contents.begin(); iterator != contents.end(); iterator++) {
+ for (std::list<TString>::const_iterator iterator = contents.begin();
+ iterator != contents.end(); iterator++) {
TString line = *iterator;
if (line[0] == ';') {
@@ -69,7 +72,8 @@
if (found == true) {
TString sectionName;
- for (std::list<TString>::const_iterator iterator = contents.begin(); iterator != contents.end(); iterator++) {
+ for (std::list<TString>::const_iterator iterator = contents.begin();
+ iterator != contents.end(); iterator++) {
TString line = *iterator;
if (line[0] == ';') {
@@ -83,7 +87,8 @@
TString name;
TString value;
- if (Helpers::SplitOptionIntoNameValue(line, name, value) == true) {
+ if (Helpers::SplitOptionIntoNameValue(
+ line, name, value) == true) {
Append(sectionName, name, value);
}
}
@@ -120,7 +125,8 @@
return result;
}
-void IniFile::Append(const TString SectionName, const TString Key, TString Value) {
+void IniFile::Append(const TString SectionName,
+ const TString Key, TString Value) {
if (FMap.ContainsKey(SectionName) == true) {
IniSectionData* section;
@@ -135,7 +141,8 @@
}
}
-void IniFile::AppendSection(const TString SectionName, OrderedMap<TString, TString> Values) {
+void IniFile::AppendSection(const TString SectionName,
+ OrderedMap<TString, TString> Values) {
if (FMap.ContainsKey(SectionName) == true) {
IniSectionData* section;
@@ -149,7 +156,8 @@
}
}
-bool IniFile::GetValue(const TString SectionName, const TString Key, TString& Value) {
+bool IniFile::GetValue(const TString SectionName,
+ const TString Key, TString& Value) {
bool result = false;
IniSectionData* section;
@@ -160,7 +168,8 @@
return result;
}
-bool IniFile::SetValue(const TString SectionName, const TString Key, TString Value) {
+bool IniFile::SetValue(const TString SectionName,
+ const TString Key, TString Value) {
bool result = false;
IniSectionData* section;
@@ -175,7 +184,8 @@
return result;
}
-bool IniFile::GetSection(const TString SectionName, OrderedMap<TString, TString> &Data) {
+bool IniFile::GetSection(const TString SectionName,
+ OrderedMap<TString, TString> &Data) {
bool result = false;
if (FMap.ContainsKey(SectionName) == true) {
@@ -195,7 +205,7 @@
return FMap.ContainsKey(SectionName);
}
-//--------------------------------------------------------------------------------------------------
+//----------------------------------------------------------------------------
IniSectionData::IniSectionData() {
FMap.SetAllowDuplicates(true);
--- a/src/jdk.packager/share/native/library/common/IniFile.h Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/IniFile.h Wed Oct 17 13:50:11 2018 -0400
@@ -66,13 +66,17 @@
bool SaveToFile(const TString FileName, bool ownerOnly = true);
void Append(const TString SectionName, const TString Key, TString Value);
- void AppendSection(const TString SectionName, OrderedMap<TString, TString> Values);
- bool SetValue(const TString SectionName, const TString Key, TString Value);
+ void AppendSection(const TString SectionName,
+ OrderedMap<TString, TString> Values);
+ bool SetValue(const TString SectionName,
+ const TString Key, TString Value);
// ISectionalPropertyContainer
- virtual bool GetSection(const TString SectionName, OrderedMap<TString, TString> &Data);
+ virtual bool GetSection(const TString SectionName,
+ OrderedMap<TString, TString> &Data);
virtual bool ContainsSection(const TString SectionName);
- virtual bool GetValue(const TString SectionName, const TString Key, TString& Value);
+ virtual bool GetValue(const TString SectionName,
+ const TString Key, TString& Value);
};
-#endif //INIFILE_H
+#endif // INIFILE_H
--- a/src/jdk.packager/share/native/library/common/Java.cpp Fri Oct 12 19:00:51 2018 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,324 +0,0 @@
-/*
- * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-#include "Java.h"
-#include "PlatformString.h"
-
-#include <list>
-
-
-//--------------------------------------------------------------------------------------------------
-
-#ifdef DEBUG
-TString JavaException::CreateExceptionMessage(JNIEnv* Env, jthrowable Exception,
- jmethodID GetCauseMethod, jmethodID GetStackTraceMethod, jmethodID ThrowableToTStringMethod,
- jmethodID FrameToTStringMethod) {
-
- TString result;
- jobjectArray frames = (jobjectArray)Env->CallObjectMethod(Exception, GetStackTraceMethod);
-
- // Append Throwable.toTString().
- if (0 != frames) {
- jstring jstr = (jstring)Env->CallObjectMethod(Exception, ThrowableToTStringMethod);
- const char* str = Env->GetStringUTFChars(jstr, 0);
- result += PlatformString(str).toPlatformString();
- Env->ReleaseStringUTFChars(jstr, str);
- Env->DeleteLocalRef(jstr);
- }
-
- // Append stack trace if one exists.
- if (Env->GetArrayLength(frames) > 0) {
- jsize i = 0;
-
- for (i = 0; i < Env->GetArrayLength(frames); i++) {
- // Get the string from the next frame and append it to
- // the error message.
- jobject frame = Env->GetObjectArrayElement(frames, i);
- jstring obj = (jstring)Env->CallObjectMethod(frame, FrameToTStringMethod);
- const char* str = Env->GetStringUTFChars(obj, 0);
- result += _T("\n ");
- result += PlatformString(str).toPlatformString();
- Env->ReleaseStringUTFChars(obj, str);
- Env->DeleteLocalRef(obj);
- Env->DeleteLocalRef(frame);
- }
- }
-
- // If Exception has a cause then append the stack trace messages.
- if (0 != frames) {
- jthrowable cause = (jthrowable)Env->CallObjectMethod(Exception, GetCauseMethod);
-
- if (cause != NULL) {
- result += CreateExceptionMessage(Env, cause, GetCauseMethod,
- GetStackTraceMethod, ThrowableToTStringMethod,
- FrameToTStringMethod);
- }
- }
-
- return result;
-}
-#endif //DEBUG
-
-JavaException::JavaException() : Exception() {}
-
-//#ifdef WINDOWS
-JavaException::JavaException(JNIEnv *Env, const TString Message) : Exception(Message) {
-//#endif //WINDOWS
-//#ifdef POSIX
-//JavaException::JavaException(JNIEnv *Env, TString message) {
-//#endif //POSIX
-
- FEnv = Env;
- FException = Env->ExceptionOccurred();
- Env->ExceptionClear();
-
-#ifdef DEBUG
- Platform& platform = Platform::GetInstance();
-
- if (platform.GetDebugState() == dsNone) {
- jclass ThrowableClass = Env->FindClass("java/lang/Throwable");
-
- if (FEnv->ExceptionCheck() == JNI_TRUE) {
- Env->ExceptionClear();
- return;
- }
-
- jmethodID GetCauseMethod = Env->GetMethodID(ThrowableClass,
- "getCause",
- "()Ljava/lang/Throwable;");
-
- if (FEnv->ExceptionCheck() == JNI_TRUE) {
- Env->ExceptionClear();
- return;
- }
-
- jmethodID GetStackTraceMethod = Env->GetMethodID(ThrowableClass,
- "getStackTrace",
- "()[Ljava/lang/StackTraceElement;");
-
- if (FEnv->ExceptionCheck() == JNI_TRUE) {
- Env->ExceptionClear();
- return;
- }
-
- jmethodID ThrowableToTStringMethod = Env->GetMethodID(ThrowableClass,
- "toString",
- "()Ljava/lang/String;");
-
- if (FEnv->ExceptionCheck() == JNI_TRUE) {
- Env->ExceptionClear();
- return;
- }
-
- jclass FrameClass = Env->FindClass("java/lang/StackTraceElement");
-
- if (FEnv->ExceptionCheck() == JNI_TRUE) {
- Env->ExceptionClear();
- return;
- }
-
- jmethodID FrameToTStringMethod = Env->GetMethodID(FrameClass,
- "toString",
- "()Ljava/lang/String;");
-
- if (FEnv->ExceptionCheck() == JNI_TRUE) {
- Env->ExceptionClear();
- return;
- }
-
- TString lmessage = CreateExceptionMessage(Env, FException, GetCauseMethod,
- GetStackTraceMethod, ThrowableToTStringMethod, FrameToTStringMethod);
- SetMessage(lmessage);
- }
-#endif //DEBUG
-}
-
-void JavaException::Rethrow() {
- FEnv->Throw(FException);
-}
-
-//--------------------------------------------------------------------------------------------------
-
-JavaStaticMethod::JavaStaticMethod(JNIEnv *Env, jclass Class, jmethodID Method) {
- FEnv = Env;
- FClass = Class;
- FMethod = Method;
-}
-
-void JavaStaticMethod::CallVoidMethod(int Count, ...) {
- va_list args;
- va_start(args, Count);
- FEnv->CallStaticVoidMethodV(FClass, FMethod, args);
- va_end(args);
-
- if (FEnv->ExceptionCheck() == JNI_TRUE) {
- Messages& messages = Messages::GetInstance();
- throw JavaException(FEnv, messages.GetMessage(ERROR_INVOKING_METHOD));
- }
-}
-
-JavaStaticMethod::operator jmethodID () {
- return FMethod;
-}
-
-//--------------------------------------------------------------------------------------------------
-
-JavaMethod::JavaMethod(JNIEnv *Env, jobject Obj, jmethodID Method) {
- FEnv = Env;
- FObj = Obj;
- FMethod = Method;
-}
-
-void JavaMethod::CallVoidMethod(int Count, ...) {
- va_list args;
- va_start(args, Count);
- FEnv->CallVoidMethodV(FObj, FMethod, args);
- va_end(args);
-
- if (FEnv->ExceptionCheck() == JNI_TRUE) {
- Messages& messages = Messages::GetInstance();
- throw JavaException(FEnv, messages.GetMessage(ERROR_INVOKING_METHOD));
- }
-}
-
-JavaMethod::operator jmethodID () {
- return FMethod;
-}
-
-//--------------------------------------------------------------------------------------------------
-
-JavaClass::JavaClass(JNIEnv *Env, TString Name) {
- FEnv = Env;
- FClassName = Name;
- FClass = FEnv->FindClass(PlatformString(FClassName));
-
- if (FClass == NULL || FEnv->ExceptionCheck() == JNI_TRUE) {
- Messages& messages = Messages::GetInstance();
- TString message = messages.GetMessage(CLASS_NOT_FOUND);
- message = PlatformString::Format(message, FClassName.data());
- throw JavaException(FEnv, message);
- }
-}
-
-JavaClass::~JavaClass() {
- FEnv->DeleteLocalRef(FClass);
-
- if (FEnv->ExceptionCheck() == JNI_TRUE) {
- // throw JavaException(FEnv, _T("Error")); // VS2017 - FIXME
- }
-}
-
-JavaStaticMethod JavaClass::GetStaticMethod(TString Name, TString Signature) {
- jmethodID method = FEnv->GetStaticMethodID(FClass, PlatformString(Name), PlatformString(Signature));
-
- if (method == NULL || FEnv->ExceptionCheck() == JNI_TRUE) {
- Messages& messages = Messages::GetInstance();
- TString message = messages.GetMessage(METHOD_NOT_FOUND);
- message = PlatformString::Format(message, Name.data(), FClassName.data());
- throw JavaException(FEnv, message);
- }
-
- return JavaStaticMethod(FEnv, FClass, method);
-}
-
-JavaClass::operator jclass () {
- return FClass;
-}
-
-//--------------------------------------------------------------------------------------------------
-
-void JavaStringArray::Initialize(size_t Size) {
- JavaClass jstringClass(FEnv, _T("java/lang/String"));
-
- if (FEnv->ExceptionCheck() == JNI_TRUE) {
- Messages& messages = Messages::GetInstance();
- TString message = messages.GetMessage(CLASS_NOT_FOUND);
- message = PlatformString::Format(message, _T("String"));
- throw JavaException(FEnv, message.data());
- }
-
- jstring str = PlatformString("").toJString(FEnv);
- FData = (jobjectArray)FEnv->NewObjectArray((jsize)Size, jstringClass, str);
-
- if (FEnv->ExceptionCheck() == JNI_TRUE) {
- throw JavaException(FEnv, _T("Error"));
- }
-}
-
-JavaStringArray::JavaStringArray(JNIEnv *Env, size_t Size) {
- FEnv = Env;
- Initialize(Size);
-}
-
-JavaStringArray::JavaStringArray(JNIEnv *Env, jobjectArray Data) {
- FEnv = Env;
- FData = Data;
-}
-
-JavaStringArray::JavaStringArray(JNIEnv *Env, std::list<TString> Items) {
- FEnv = Env;
- Initialize(Items.size());
- unsigned int index = 0;
-
- for (std::list<TString>::const_iterator iterator = Items.begin(); iterator != Items.end(); iterator++) {
- TString item = *iterator;
- SetValue(index, PlatformString(item).toJString(FEnv));
- index++;
- }
-}
-
-jobjectArray JavaStringArray::GetData() {
- return FData;
-}
-
-void JavaStringArray::SetValue(jsize Index, jstring Item) {
- FEnv->SetObjectArrayElement(FData, Index, Item);
-
- if (FEnv->ExceptionCheck() == JNI_TRUE) {
- throw JavaException(FEnv, _T("Error"));
- }
-}
-
-jstring JavaStringArray::GetValue(jsize Index) {
- jstring result = (jstring)FEnv->GetObjectArrayElement(FData, Index);
-
- if (FEnv->ExceptionCheck() == JNI_TRUE) {
- throw JavaException(FEnv, _T("Error"));
- }
-
- return result;
-}
-
-unsigned int JavaStringArray::Count() {
- unsigned int result = FEnv->GetArrayLength(FData);
-
- if (FEnv->ExceptionCheck() == JNI_TRUE) {
- throw JavaException(FEnv, _T("Error"));
- }
-
- return result;
-}
-
-//--------------------------------------------------------------------------------------------------
--- a/src/jdk.packager/share/native/library/common/Java.h Fri Oct 12 19:00:51 2018 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,153 +0,0 @@
-/*
- * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-#ifndef JAVA_H
-#define JAVA_H
-
-#include "Platform.h"
-#include "Messages.h"
-
-#include "jni.h"
-
-
-class JavaClass;
-class JavaStaticMethod;
-class JavaMethod;
-class JavaStringArray;
-
-
-class JavaException : public Exception {
-// Prohibit Heap-Based Classes.
-private:
- static void *operator new(size_t size);
-
-private:
-#ifdef DEBUG
- static TString CreateExceptionMessage(JNIEnv* Env, jthrowable Exception,
- jmethodID GetCauseMethod, jmethodID GetStackTraceMethod, jmethodID ThrowableToStringMethod,
- jmethodID FrameToStringMethod);
-#endif //DEBUG
-
- jthrowable FException;
- JNIEnv *FEnv;
-
-public:
- explicit JavaException();
- explicit JavaException(JNIEnv *Env, const TString message);
- virtual ~JavaException() throw() {}
-
- void Rethrow();
-};
-
-
-class JavaStaticMethod {
-// Prohibit Heap-Based Classes.
-private:
- static void *operator new(size_t size);
- static void operator delete(void *ptr);
-
-private:
- JNIEnv *FEnv;
- jmethodID FMethod;
- jclass FClass;
-public:
- JavaStaticMethod(JNIEnv *Env, jclass Class, jmethodID Method);
-
- void CallVoidMethod(int Count, ...);
- operator jmethodID ();
-};
-
-
-class JavaMethod {
-// Prohibit Heap-Based Classes.
-private:
- static void *operator new(size_t size);
- static void operator delete(void *ptr);
-
- JavaMethod(JavaMethod const&); // Don't Implement.
- void operator=(JavaMethod const&); // Don't implement
-
-private:
- JNIEnv *FEnv;
- jmethodID FMethod;
- jobject FObj;
-public:
- JavaMethod(JNIEnv *Env, jobject Obj, jmethodID Method);
-
- void CallVoidMethod(int Count, ...);
- operator jmethodID ();
-};
-
-
-class JavaClass {
-// Prohibit Heap-Based Classes.
-private:
- static void *operator new(size_t size);
- static void operator delete(void *ptr);
-
- JavaClass(JavaClass const&); // Don't Implement.
- void operator=(JavaClass const&); // Don't implement
-
-private:
- JNIEnv *FEnv;
- jclass FClass;
- TString FClassName;
-
-public:
- JavaClass(JNIEnv *Env, TString Name);
- ~JavaClass();
-
- JavaStaticMethod GetStaticMethod(TString Name, TString Signature);
- operator jclass ();
-};
-
-
-class JavaStringArray {
-// Prohibit Heap-Based Classes.
-private:
- static void *operator new(size_t size);
- static void operator delete(void *ptr);
-
- JavaStringArray(JavaStringArray const&); // Don't Implement.
- void operator=(JavaStringArray const&); // Don't implement
-
-private:
- JNIEnv *FEnv;
- jobjectArray FData;
-
- void Initialize(size_t Size);
-
-public:
- JavaStringArray(JNIEnv *Env, size_t Size);
- JavaStringArray(JNIEnv *Env, jobjectArray Data);
- JavaStringArray(JNIEnv *Env, std::list<TString> Array);
-
- jobjectArray GetData();
- void SetValue(jsize Index, jstring Item);
- jstring GetValue(jsize Index);
- unsigned int Count();
-};
-
-#endif //JAVA_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.packager/share/native/library/common/JavaTypes.cpp Wed Oct 17 13:50:11 2018 -0400
@@ -0,0 +1,322 @@
+/*
+ * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+#include "JavaTypes.h"
+#include "PlatformString.h"
+
+#include <list>
+
+
+#ifdef DEBUG
+TString JavaException::CreateExceptionMessage(JNIEnv* Env,
+ jthrowable Exception, jmethodID GetCauseMethod,
+ jmethodID GetStackTraceMethod, jmethodID ThrowableToTStringMethod,
+ jmethodID FrameToTStringMethod) {
+
+ TString result;
+ jobjectArray frames =
+ (jobjectArray)Env->CallObjectMethod(Exception, GetStackTraceMethod);
+
+ // Append Throwable.toTString().
+ if (0 != frames) {
+ jstring jstr = (jstring)Env->CallObjectMethod(Exception,
+ ThrowableToTStringMethod);
+ const char* str = Env->GetStringUTFChars(jstr, 0);
+ result += PlatformString(str).toPlatformString();
+ Env->ReleaseStringUTFChars(jstr, str);
+ Env->DeleteLocalRef(jstr);
+ }
+
+ // Append stack trace if one exists.
+ if (Env->GetArrayLength(frames) > 0) {
+ jsize i = 0;
+
+ for (i = 0; i < Env->GetArrayLength(frames); i++) {
+ // Get the string from the next frame and append it to
+ // the error message.
+ jobject frame = Env->GetObjectArrayElement(frames, i);
+ jstring obj = (jstring)Env->CallObjectMethod(frame,
+ FrameToTStringMethod);
+ const char* str = Env->GetStringUTFChars(obj, 0);
+ result += _T("\n ");
+ result += PlatformString(str).toPlatformString();
+ Env->ReleaseStringUTFChars(obj, str);
+ Env->DeleteLocalRef(obj);
+ Env->DeleteLocalRef(frame);
+ }
+ }
+
+ // If Exception has a cause then append the stack trace messages.
+ if (0 != frames) {
+ jthrowable cause =
+ (jthrowable)Env->CallObjectMethod(Exception, GetCauseMethod);
+
+ if (cause != NULL) {
+ result += CreateExceptionMessage(Env, cause, GetCauseMethod,
+ GetStackTraceMethod, ThrowableToTStringMethod,
+ FrameToTStringMethod);
+ }
+ }
+
+ return result;
+}
+#endif //DEBUG
+
+JavaException::JavaException() : Exception() {}
+
+//#ifdef WINDOWS
+JavaException::JavaException(JNIEnv *Env,
+ const TString Message) : Exception(Message) {
+//#endif //WINDOWS
+//#ifdef POSIX
+//JavaException::JavaException(JNIEnv *Env, TString message) {
+//#endif //POSIX
+
+ FEnv = Env;
+ FException = Env->ExceptionOccurred();
+ Env->ExceptionClear();
+
+#ifdef DEBUG
+ Platform& platform = Platform::GetInstance();
+
+ if (platform.GetDebugState() == dsNone) {
+ jclass ThrowableClass = Env->FindClass("java/lang/Throwable");
+
+ if (FEnv->ExceptionCheck() == JNI_TRUE) {
+ Env->ExceptionClear();
+ return;
+ }
+
+ jmethodID GetCauseMethod = Env->GetMethodID(ThrowableClass,
+ "getCause", "()Ljava/lang/Throwable;");
+
+ if (FEnv->ExceptionCheck() == JNI_TRUE) {
+ Env->ExceptionClear();
+ return;
+ }
+
+ jmethodID GetStackTraceMethod = Env->GetMethodID(ThrowableClass,
+ "getStackTrace", "()[Ljava/lang/StackTraceElement;");
+
+ if (FEnv->ExceptionCheck() == JNI_TRUE) {
+ Env->ExceptionClear();
+ return;
+ }
+
+ jmethodID ThrowableToTStringMethod = Env->GetMethodID(ThrowableClass,
+ "toString", "()Ljava/lang/String;");
+
+ if (FEnv->ExceptionCheck() == JNI_TRUE) {
+ Env->ExceptionClear();
+ return;
+ }
+
+ jclass FrameClass = Env->FindClass("java/lang/StackTraceElement");
+
+ if (FEnv->ExceptionCheck() == JNI_TRUE) {
+ Env->ExceptionClear();
+ return;
+ }
+
+ jmethodID FrameToTStringMethod = Env->GetMethodID(FrameClass,
+ "toString", "()Ljava/lang/String;");
+
+ if (FEnv->ExceptionCheck() == JNI_TRUE) {
+ Env->ExceptionClear();
+ return;
+ }
+
+ TString lmessage = CreateExceptionMessage(Env, FException,
+ GetCauseMethod, GetStackTraceMethod, ThrowableToTStringMethod,
+ FrameToTStringMethod);
+ SetMessage(lmessage);
+ }
+#endif //DEBUG
+}
+
+void JavaException::Rethrow() {
+ FEnv->Throw(FException);
+}
+
+//----------------------------------------------------------------------------
+
+JavaStaticMethod::JavaStaticMethod(JNIEnv *Env, jclass Class, jmethodID Method) {
+ FEnv = Env;
+ FClass = Class;
+ FMethod = Method;
+}
+
+void JavaStaticMethod::CallVoidMethod(int Count, ...) {
+ va_list args;
+ va_start(args, Count);
+ FEnv->CallStaticVoidMethodV(FClass, FMethod, args);
+ va_end(args);
+
+ if (FEnv->ExceptionCheck() == JNI_TRUE) {
+ Messages& messages = Messages::GetInstance();
+ throw JavaException(FEnv, messages.GetMessage(ERROR_INVOKING_METHOD));
+ }
+}
+
+JavaStaticMethod::operator jmethodID () {
+ return FMethod;
+}
+
+//----------------------------------------------------------------------------
+
+JavaMethod::JavaMethod(JNIEnv *Env, jobject Obj, jmethodID Method) {
+ FEnv = Env;
+ FObj = Obj;
+ FMethod = Method;
+}
+
+void JavaMethod::CallVoidMethod(int Count, ...) {
+ va_list args;
+ va_start(args, Count);
+ FEnv->CallVoidMethodV(FObj, FMethod, args);
+ va_end(args);
+
+ if (FEnv->ExceptionCheck() == JNI_TRUE) {
+ Messages& messages = Messages::GetInstance();
+ throw JavaException(FEnv, messages.GetMessage(ERROR_INVOKING_METHOD));
+ }
+}
+
+JavaMethod::operator jmethodID () {
+ return FMethod;
+}
+
+//----------------------------------------------------------------------------
+
+JavaClass::JavaClass(JNIEnv *Env, TString Name) {
+ FEnv = Env;
+ FClassName = Name;
+ FClass = FEnv->FindClass(PlatformString(FClassName));
+
+ if (FClass == NULL || FEnv->ExceptionCheck() == JNI_TRUE) {
+ Messages& messages = Messages::GetInstance();
+ TString message = messages.GetMessage(CLASS_NOT_FOUND);
+ message = PlatformString::Format(message, FClassName.data());
+ throw JavaException(FEnv, message);
+ }
+}
+
+JavaClass::~JavaClass() {
+ FEnv->DeleteLocalRef(FClass);
+}
+
+JavaStaticMethod JavaClass::GetStaticMethod(TString Name, TString Signature) {
+ jmethodID method = FEnv->GetStaticMethodID(FClass, PlatformString(Name),
+ PlatformString(Signature));
+
+ if (method == NULL || FEnv->ExceptionCheck() == JNI_TRUE) {
+ Messages& messages = Messages::GetInstance();
+ TString message = messages.GetMessage(METHOD_NOT_FOUND);
+ message = PlatformString::Format(message, Name.data(),
+ FClassName.data());
+ throw JavaException(FEnv, message);
+ }
+
+ return JavaStaticMethod(FEnv, FClass, method);
+}
+
+JavaClass::operator jclass () {
+ return FClass;
+}
+
+//----------------------------------------------------------------------------
+
+void JavaStringArray::Initialize(size_t Size) {
+ JavaClass jstringClass(FEnv, _T("java/lang/String"));
+
+ if (FEnv->ExceptionCheck() == JNI_TRUE) {
+ Messages& messages = Messages::GetInstance();
+ TString message = messages.GetMessage(CLASS_NOT_FOUND);
+ message = PlatformString::Format(message, _T("String"));
+ throw JavaException(FEnv, message.data());
+ }
+
+ jstring str = PlatformString("").toJString(FEnv);
+ FData = (jobjectArray)FEnv->NewObjectArray((jsize)Size, jstringClass, str);
+
+ if (FEnv->ExceptionCheck() == JNI_TRUE) {
+ throw JavaException(FEnv, _T("Error"));
+ }
+}
+
+JavaStringArray::JavaStringArray(JNIEnv *Env, size_t Size) {
+ FEnv = Env;
+ Initialize(Size);
+}
+
+JavaStringArray::JavaStringArray(JNIEnv *Env, jobjectArray Data) {
+ FEnv = Env;
+ FData = Data;
+}
+
+JavaStringArray::JavaStringArray(JNIEnv *Env, std::list<TString> Items) {
+ FEnv = Env;
+ Initialize(Items.size());
+ unsigned int index = 0;
+
+ for (std::list<TString>::const_iterator iterator = Items.begin();
+ iterator != Items.end(); iterator++) {
+ TString item = *iterator;
+ SetValue(index, PlatformString(item).toJString(FEnv));
+ index++;
+ }
+}
+
+jobjectArray JavaStringArray::GetData() {
+ return FData;
+}
+
+void JavaStringArray::SetValue(jsize Index, jstring Item) {
+ FEnv->SetObjectArrayElement(FData, Index, Item);
+
+ if (FEnv->ExceptionCheck() == JNI_TRUE) {
+ throw JavaException(FEnv, _T("Error"));
+ }
+}
+
+jstring JavaStringArray::GetValue(jsize Index) {
+ jstring result = (jstring)FEnv->GetObjectArrayElement(FData, Index);
+
+ if (FEnv->ExceptionCheck() == JNI_TRUE) {
+ throw JavaException(FEnv, _T("Error"));
+ }
+
+ return result;
+}
+
+unsigned int JavaStringArray::Count() {
+ unsigned int result = FEnv->GetArrayLength(FData);
+
+ if (FEnv->ExceptionCheck() == JNI_TRUE) {
+ throw JavaException(FEnv, _T("Error"));
+ }
+
+ return result;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.packager/share/native/library/common/JavaTypes.h Wed Oct 17 13:50:11 2018 -0400
@@ -0,0 +1,153 @@
+/*
+ * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+#ifndef JAVATYPES_H
+#define JAVATYPES_H
+
+#include "Platform.h"
+#include "Messages.h"
+
+#include "jni.h"
+
+
+class JavaClass;
+class JavaStaticMethod;
+class JavaMethod;
+class JavaStringArray;
+
+
+class JavaException : public Exception {
+// Prohibit Heap-Based Classes.
+private:
+ static void *operator new(size_t size);
+
+private:
+#ifdef DEBUG
+ static TString CreateExceptionMessage(JNIEnv* Env, jthrowable Exception,
+ jmethodID GetCauseMethod, jmethodID GetStackTraceMethod,
+ jmethodID ThrowableToStringMethod, jmethodID FrameToStringMethod);
+#endif // DEBUG
+
+ jthrowable FException;
+ JNIEnv *FEnv;
+
+public:
+ explicit JavaException();
+ explicit JavaException(JNIEnv *Env, const TString message);
+ virtual ~JavaException() throw() {}
+
+ void Rethrow();
+};
+
+
+class JavaStaticMethod {
+// Prohibit Heap-Based Classes.
+private:
+ static void *operator new(size_t size);
+ static void operator delete(void *ptr);
+
+private:
+ JNIEnv *FEnv;
+ jmethodID FMethod;
+ jclass FClass;
+public:
+ JavaStaticMethod(JNIEnv *Env, jclass Class, jmethodID Method);
+
+ void CallVoidMethod(int Count, ...);
+ operator jmethodID ();
+};
+
+
+class JavaMethod {
+// Prohibit Heap-Based Classes.
+private:
+ static void *operator new(size_t size);
+ static void operator delete(void *ptr);
+
+ JavaMethod(JavaMethod const&); // Don't Implement.
+ void operator=(JavaMethod const&); // Don't implement
+
+private:
+ JNIEnv *FEnv;
+ jmethodID FMethod;
+ jobject FObj;
+public:
+ JavaMethod(JNIEnv *Env, jobject Obj, jmethodID Method);
+
+ void CallVoidMethod(int Count, ...);
+ operator jmethodID ();
+};
+
+
+class JavaClass {
+// Prohibit Heap-Based Classes.
+private:
+ static void *operator new(size_t size);
+ static void operator delete(void *ptr);
+
+ JavaClass(JavaClass const&); // Don't Implement.
+ void operator=(JavaClass const&); // Don't implement
+
+private:
+ JNIEnv *FEnv;
+ jclass FClass;
+ TString FClassName;
+
+public:
+ JavaClass(JNIEnv *Env, TString Name);
+ ~JavaClass();
+
+ JavaStaticMethod GetStaticMethod(TString Name, TString Signature);
+ operator jclass ();
+};
+
+
+class JavaStringArray {
+// Prohibit Heap-Based Classes.
+private:
+ static void *operator new(size_t size);
+ static void operator delete(void *ptr);
+
+ JavaStringArray(JavaStringArray const&); // Don't Implement.
+ void operator=(JavaStringArray const&); // Don't implement
+
+private:
+ JNIEnv *FEnv;
+ jobjectArray FData;
+
+ void Initialize(size_t Size);
+
+public:
+ JavaStringArray(JNIEnv *Env, size_t Size);
+ JavaStringArray(JNIEnv *Env, jobjectArray Data);
+ JavaStringArray(JNIEnv *Env, std::list<TString> Array);
+
+ jobjectArray GetData();
+ void SetValue(jsize Index, jstring Item);
+ jstring GetValue(jsize Index);
+ unsigned int Count();
+};
+
+#endif // JAVATYPES_H
--- a/src/jdk.packager/share/native/library/common/JavaVirtualMachine.cpp Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/JavaVirtualMachine.cpp Wed Oct 17 13:50:11 2018 -0400
@@ -28,7 +28,7 @@
#include "PlatformString.h"
#include "FilePath.h"
#include "Package.h"
-#include "Java.h"
+#include "JavaTypes.h"
#include "Helpers.h"
#include "Messages.h"
#include "Macros.h"
@@ -75,7 +75,8 @@
if (FCreateProc == NULL) {
Platform& platform = Platform::GetInstance();
Messages& messages = Messages::GetInstance();
- platform.ShowMessage(messages.GetMessage(FAILED_LOCATING_JVM_ENTRY_POINT));
+ platform.ShowMessage(
+ messages.GetMessage(FAILED_LOCATING_JVM_ENTRY_POINT));
return false;
}
@@ -92,7 +93,7 @@
0) == 0;
}
-//--------------------------------------------------------------------------------------------------
+//----------------------------------------------------------------------------
JavaOptions::JavaOptions(): FOptions(NULL) {
}
@@ -173,9 +174,10 @@
return FItems.size();
}
-// jvmuserargs can have a trailing equals in the key. This needs to be removed to use
-// other parts of the launcher.
-OrderedMap<TString, TString> RemoveTrailingEquals(OrderedMap<TString, TString> Map) {
+// jvmuserargs can have a trailing equals in the key. This needs to be
+// removed to use other parts of the launcher.
+OrderedMap<TString, TString> RemoveTrailingEquals(
+ OrderedMap<TString, TString> Map) {
OrderedMap<TString, TString> result;
std::vector<TString> keys = Map.GetKeys();
@@ -185,8 +187,8 @@
TString value;
if (Map.GetValue(name, value) == true) {
- // If the last character of the key is an equals, then remove it. If there is no
- // equals then combine the two as a key.
+ // If the last character of the key is an equals, then remove it.
+ // If there is no equals then combine the two as a key.
TString::iterator i = name.end();
i--;
@@ -212,7 +214,7 @@
return result;
}
-//--------------------------------------------------------------------------------------------------
+//----------------------------------------------------------------------------
JavaVirtualMachine::JavaVirtualMachine() {
}
@@ -232,8 +234,11 @@
options.AppendValue(_T("-Djava.module.path"), modulepath);
}
- options.AppendValue(_T("-Djava.library.path"), package.GetPackageAppDirectory() + FilePath::PathSeparator() + package.GetPackageLauncherDirectory());
- options.AppendValue(_T("-Djava.launcher.path"), package.GetPackageLauncherDirectory());
+ options.AppendValue(_T("-Djava.library.path"),
+ package.GetPackageAppDirectory() + FilePath::PathSeparator()
+ + package.GetPackageLauncherDirectory());
+ options.AppendValue(
+ _T("-Djava.launcher.path"), package.GetPackageLauncherDirectory());
options.AppendValue(_T("-Dapp.preferences.id"), package.GetAppID());
options.AppendValues(package.GetJVMArgs());
options.AppendValues(RemoveTrailingEquals(package.GetJVMUserArgs()));
@@ -241,10 +246,12 @@
#ifdef DEBUG
if (package.Debugging() == dsJava) {
options.AppendValue(_T("-Xdebug"), _T(""));
- options.AppendValue(_T("-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=localhost:5005"), _T(""));
+ options.AppendValue(
+ _T("-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=localhost:5005"),
+ _T(""));
platform.ShowMessage(_T("localhost:5005"));
}
-#endif //DEBUG
+#endif // DEBUG
TString maxHeapSizeOption;
TString minHeapSizeOption;
@@ -252,7 +259,8 @@
if (package.GetMemoryState() == PackageBootFields::msAuto) {
TPlatformNumber memorySize = package.GetMemorySize();
- TString memory = PlatformString((size_t)memorySize).toString() + _T("m");
+ TString memory =
+ PlatformString((size_t)memorySize).toString() + _T("m");
maxHeapSizeOption = TString(_T("-Xmx")) + memory;
options.AppendValue(maxHeapSizeOption, _T(""));
@@ -277,9 +285,9 @@
// Initialize the arguments to JLI_Launch()
//
- // On Mac OS X JLI_Launch spawns a new thread that actually starts the JVM. This
- // new thread simply re-runs main(argc, argv). Therefore we do not want
- // to add new args if we are still in the original main thread so we
+ // On Mac OS X JLI_Launch spawns a new thread that actually starts the JVM.
+ // This new thread simply re-runs main(argc, argv). Therefore we do not
+ // want to add new args if we are still in the original main thread so we
// will treat them as command line args provided by the user ...
// Only propagate original set of args first time.
@@ -290,13 +298,14 @@
vmargs.push_back(package.GetCommandName());
if (package.HasSplashScreen() == true) {
- options.AppendValue(TString(_T("-splash:")) + package.GetSplashScreenFileName(), _T(""));
+ options.AppendValue(TString(_T("-splash:"))
+ + package.GetSplashScreenFileName(), _T(""));
}
if (mainModule.empty() == true) {
- options.AppendValue(Helpers::ConvertJavaPathToId(mainClassName), _T(""));
- }
- else {
+ options.AppendValue(Helpers::ConvertJavaPathToId(mainClassName),
+ _T(""));
+ } else {
options.AppendValue(_T("-m"));
options.AppendValue(mainModule);
}
@@ -311,12 +320,16 @@
vmargs.push_back(package.GetCommandName());
JavaOptions options;
- options.AppendValue(_T("-Djava.library.path"), package.GetPackageAppDirectory()
- + FilePath::PathSeparator() + package.GetPackageLauncherDirectory());
- options.AppendValue(_T("-Djava.launcher.path"), package.GetPackageLauncherDirectory());
- // launch SingleInstanceNewActivation.main() to pass arguments to another instance
+ options.AppendValue(_T("-Djava.library.path"),
+ package.GetPackageAppDirectory() + FilePath::PathSeparator()
+ + package.GetPackageLauncherDirectory());
+ options.AppendValue(_T("-Djava.launcher.path"),
+ package.GetPackageLauncherDirectory());
+ // launch SingleInstanceNewActivation.main() to pass arguments to
+ // another instance
options.AppendValue(_T("-m"));
- options.AppendValue(_T("jdk.packager.services/jdk.packager.services.singleton.SingleInstanceNewActivation"));
+ options.AppendValue(
+ _T("jdk.packager.services/jdk.packager.services.singleton.SingleInstanceNewActivation"));
configureLibrary();
@@ -326,8 +339,8 @@
void JavaVirtualMachine::configureLibrary() {
Platform& platform = Platform::GetInstance();
Package& package = Package::GetInstance();
- // TODO: Clean this up. Because of bug JDK-8131321 the opening of the PE file
- // fails in WindowsPlatform.cpp on the check to
+ // TODO: Clean this up. Because of bug JDK-8131321 the opening of the
+ // PE file ails in WindowsPlatform.cpp on the check to
// if (pNTHeader->Signature == IMAGE_NT_SIGNATURE)
TString libName = package.GetJVMLibraryFileName();
#ifdef _WIN64
@@ -336,12 +349,14 @@
}
#else
javaLibrary.AddDependencies(
- platform.FilterOutRuntimeDependenciesForPlatform(platform.GetLibraryImports(libName)));
+ platform.FilterOutRuntimeDependenciesForPlatform(
+ platform.GetLibraryImports(libName)));
#endif
javaLibrary.Load(libName);
}
-bool JavaVirtualMachine::launchVM(JavaOptions& options, std::list<TString>& vmargs, bool addSiProcessId) {
+bool JavaVirtualMachine::launchVM(JavaOptions& options,
+ std::list<TString>& vmargs, bool addSiProcessId) {
Platform& platform = Platform::GetInstance();
Package& package = Package::GetInstance();
@@ -350,7 +365,8 @@
// filter out the psn since they it's not expected in the app
if (platform.IsMainThread() == false) {
std::list<TString> loptions = options.ToList();
- vmargs.splice(vmargs.end(), loptions, loptions.begin(), loptions.end());
+ vmargs.splice(vmargs.end(), loptions,
+ loptions.begin(), loptions.end());
}
#else
std::list<TString> loptions = options.ToList();
@@ -378,21 +394,22 @@
std::string arg = PlatformString(item).toStdString();
#ifdef DEBUG
printf("%i %s\n", index, arg.c_str());
-#endif //DEBUG
+#endif // DEBUG
argv[index] = PlatformString::duplicate(arg.c_str());
index++;
}
argv[argc] = NULL;
-// On Mac we can only free the boot fields if the calling thread is not the main thread.
+// On Mac we can only free the boot fields if the calling thread is
+// not the main thread.
#ifdef MAC
if (platform.IsMainThread() == false) {
package.FreeBootFields();
}
#else
package.FreeBootFields();
-#endif //MAC
+#endif // MAC
if (javaLibrary.JavaVMCreate(argc, argv.GetData()) == true) {
return true;
--- a/src/jdk.packager/share/native/library/common/JavaVirtualMachine.h Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/JavaVirtualMachine.h Wed Oct 17 13:50:11 2018 -0400
@@ -89,7 +89,8 @@
JavaLibrary javaLibrary;
void configureLibrary();
- bool launchVM(JavaOptions& options, std::list<TString>& vmargs, bool addSiProcessId);
+ bool launchVM(JavaOptions& options, std::list<TString>& vmargs,
+ bool addSiProcessId);
public:
JavaVirtualMachine();
~JavaVirtualMachine(void);
@@ -100,4 +101,4 @@
bool RunVM(JvmLaunchType type);
-#endif //JAVAVIRTUALMACHINE_H
+#endif // JAVAVIRTUALMACHINE_H
--- a/src/jdk.packager/share/native/library/common/LinuxPlatform.cpp Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/LinuxPlatform.cpp Wed Oct 17 13:50:11 2018 -0400
@@ -56,7 +56,8 @@
return result;
}
-LinuxPlatform::LinuxPlatform(void) : Platform(), GenericPlatform(), PosixPlatform() {
+LinuxPlatform::LinuxPlatform(void) : Platform(),
+ GenericPlatform(), PosixPlatform() {
FMainThread = pthread_self();
}
@@ -64,22 +65,26 @@
}
void LinuxPlatform::ShowMessage(TString title, TString description) {
- printf("%s %s\n", PlatformString(title).toPlatformString(), PlatformString(description).toPlatformString());
+ printf("%s %s\n", PlatformString(title).toPlatformString(),
+ PlatformString(description).toPlatformString());
fflush(stdout);
}
void LinuxPlatform::ShowMessage(TString description) {
TString appname = GetModuleFileName();
appname = FilePath::ExtractFileName(appname);
- ShowMessage(PlatformString(appname).toPlatformString(), PlatformString(description).toPlatformString());
+ ShowMessage(PlatformString(appname).toPlatformString(),
+ PlatformString(description).toPlatformString());
}
-TCHAR* LinuxPlatform::ConvertStringToFileSystemString(TCHAR* Source, bool &release) {
+TCHAR* LinuxPlatform::ConvertStringToFileSystemString(TCHAR* Source,
+ bool &release) {
// Not Implemented.
return NULL;
}
-TCHAR* LinuxPlatform::ConvertFileSystemStringToString(TCHAR* Source, bool &release) {
+TCHAR* LinuxPlatform::ConvertFileSystemStringToString(TCHAR* Source,
+ bool &release) {
// Not Implemented.
return NULL;
}
@@ -89,7 +94,8 @@
TString result;
DynamicBuffer<TCHAR> buffer(MAX_PATH);
- if ((len = readlink("/proc/self/exe", buffer.GetData(), MAX_PATH - 1)) != -1) {
+ if ((len = readlink("/proc/self/exe", buffer.GetData(),
+ MAX_PATH - 1)) != -1) {
buffer[len] = '\0';
result = buffer.GetData();
}
@@ -111,7 +117,7 @@
TString home = GetEnv(_T("HOME"));
if (home.empty() == false) {
- result += FilePath::IncludeTrailingSeparater(home) + _T(".local");
+ result += FilePath::IncludeTrailingSeparator(home) + _T(".local");
}
return result;
@@ -121,7 +127,8 @@
IniFile *result = new IniFile();
if (result->LoadFromFile(FileName) == false) {
- // New property file format was not found, attempt to load old property file format.
+ // New property file format was not found,
+ // attempt to load old property file format.
Helpers::LoadOldConfigFile(FileName, result);
}
@@ -129,11 +136,11 @@
}
TString LinuxPlatform::GetBundledJVMLibraryFileName(TString RuntimePath) {
- TString result = FilePath::IncludeTrailingSeparater(RuntimePath) +
+ TString result = FilePath::IncludeTrailingSeparator(RuntimePath) +
"lib/libjli.so";
if (FilePath::FileExists(result) == false) {
- result = FilePath::IncludeTrailingSeparater(RuntimePath) +
+ result = FilePath::IncludeTrailingSeparator(RuntimePath) +
"lib/jli/libjli.so";
if (FilePath::FileExists(result) == false) {
printf("Cannot find libjli.so!");
@@ -190,10 +197,10 @@
}
#endif //DEBUG
-//--------------------------------------------------------------------------------------------------
+//----------------------------------------------------------------------------
-#ifndef __UNIX_DEPLOY_PLATFORM__
-#define __UNIX_DEPLOY_PLATFORM__
+#ifndef __UNIX_PACKAGER_PLATFORM__
+#define __UNIX_PACKAGER_PLATFORM__
/** Provide an abstraction for difference in the platform APIs,
e.g. string manipulation functions, etc. */
@@ -206,25 +213,26 @@
#define _T(x) x
-#define DEPLOY_MULTIBYTE_SNPRINTF snprintf
+#define PACKAGER_MULTIBYTE_SNPRINTF snprintf
-#define DEPLOY_SNPRINTF(buffer, sizeOfBuffer, count, format, ...) \
+#define PACKAGER_SNPRINTF(buffer, sizeOfBuffer, count, format, ...) \
snprintf((buffer), (count), (format), __VA_ARGS__)
-#define DEPLOY_PRINTF(format, ...) \
+#define PACKAGER_PRINTF(format, ...) \
printf((format), ##__VA_ARGS__)
-#define DEPLOY_FPRINTF(dest, format, ...) \
+#define PACKAGER_FPRINTF(dest, format, ...) \
fprintf((dest), (format), __VA_ARGS__)
-#define DEPLOY_SSCANF(buf, format, ...) \
+#define PACKAGER_SSCANF(buf, format, ...) \
sscanf((buf), (format), __VA_ARGS__)
-#define DEPLOY_STRDUP(strSource) \
+#define PACKAGER_STRDUP(strSource) \
strdup((strSource))
//return "error code" (like on Windows)
-static int DEPLOY_STRNCPY(char *strDest, size_t numberOfElements, const char *strSource, size_t count) {
+static int PACKAGER_STRNCPY(char *strDest, size_t numberOfElements,
+ const char *strSource, size_t count) {
char *s = strncpy(strDest, strSource, count);
// Duplicate behavior of the Windows' _tcsncpy_s() by adding a NULL
// terminator at the end of the string.
@@ -236,78 +244,78 @@
return (s == strDest) ? 0 : 1;
}
-#define DEPLOY_STRICMP(x, y) \
+#define PACKAGER_STRICMP(x, y) \
strcasecmp((x), (y))
-#define DEPLOY_STRNICMP(x, y, cnt) \
+#define PACKAGER_STRNICMP(x, y, cnt) \
strncasecmp((x), (y), (cnt))
-#define DEPLOY_STRNCMP(x, y, cnt) \
+#define PACKAGER_STRNCMP(x, y, cnt) \
strncmp((x), (y), (cnt))
-#define DEPLOY_STRLEN(x) \
+#define PACKAGER_STRLEN(x) \
strlen((x))
-#define DEPLOY_STRSTR(x, y) \
+#define PACKAGER_STRSTR(x, y) \
strstr((x), (y))
-#define DEPLOY_STRCHR(x, y) \
+#define PACKAGER_STRCHR(x, y) \
strchr((x), (y))
-#define DEPLOY_STRRCHR(x, y) \
+#define PACKAGER_STRRCHR(x, y) \
strrchr((x), (y))
-#define DEPLOY_STRPBRK(x, y) \
+#define PACKAGER_STRPBRK(x, y) \
strpbrk((x), (y))
-#define DEPLOY_GETENV(x) \
+#define PACKAGER_GETENV(x) \
getenv((x))
-#define DEPLOY_PUTENV(x) \
+#define PACKAGER_PUTENV(x) \
putenv((x))
-#define DEPLOY_STRCMP(x, y) \
+#define PACKAGER_STRCMP(x, y) \
strcmp((x), (y))
-#define DEPLOY_STRCPY(x, y) \
+#define PACKAGER_STRCPY(x, y) \
strcpy((x), (y))
-#define DEPLOY_STRCAT(x, y) \
+#define PACKAGER_STRCAT(x, y) \
strcat((x), (y))
-#define DEPLOY_ATOI(x) \
+#define PACKAGER_ATOI(x) \
atoi((x))
-#define DEPLOY_FOPEN(x, y) \
+#define PACKAGER_FOPEN(x, y) \
fopen((x), (y))
-#define DEPLOY_FGETS(x, y, z) \
+#define PACKAGER_FGETS(x, y, z) \
fgets((x), (y), (z))
-#define DEPLOY_REMOVE(x) \
+#define PACKAGER_REMOVE(x) \
remove((x))
-#define DEPLOY_SPAWNV(mode, cmd, args) \
+#define PACKAGER_SPAWNV(mode, cmd, args) \
spawnv((mode), (cmd), (args))
-#define DEPLOY_ISDIGIT(ch) isdigit(ch)
+#define PACKAGER_ISDIGIT(ch) isdigit(ch)
// for non-unicode, just return the input string for
// the following 2 conversions
-#define DEPLOY_NEW_MULTIBYTE(message) message
+#define PACKAGER_NEW_MULTIBYTE(message) message
-#define DEPLOY_NEW_FROM_MULTIBYTE(message) message
+#define PACKAGER_NEW_FROM_MULTIBYTE(message) message
// for non-unicode, no-op for the relase operation
// since there is no memory allocated for the
// string conversions
-#define DEPLOY_RELEASE_MULTIBYTE(tmpMBCS)
+#define PACKAGER_RELEASE_MULTIBYTE(tmpMBCS)
-#define DEPLOY_RELEASE_FROM_MULTIBYTE(tmpMBCS)
+#define PACKAGER_RELEASE_FROM_MULTIBYTE(tmpMBCS)
// The size will be used for converting from 1 byte to 1 byte encoding.
// Ensure have space for zero-terminator.
-#define DEPLOY_GET_SIZE_FOR_ENCODING(message, theLength) (theLength + 1)
+#define PACKAGER_GET_SIZE_FOR_ENCODING(message, theLength) (theLength + 1)
#endif
#define xmlTagType 0
@@ -384,18 +392,53 @@
#define JMP_NO_ERROR 0
#define JMP_OUT_OF_RANGE 1
-#define NEXT_CHAR(p) {if (*p != 0) { p++;} else {longjmp(jmpbuf, JMP_OUT_OF_RANGE);}}
-#define NEXT_CHAR_OR_BREAK(p) {if (*p != 0) { p++;} else {break;}}
-#define NEXT_CHAR_OR_RETURN(p) {if (*p != 0) { p++;} else {return;}}
-#define SKIP_CHARS(p,n) {int i; for (i = 0; i < (n); i++) \
- {if (*p != 0) { p++;} else \
- {longjmp(jmpbuf, JMP_OUT_OF_RANGE);}}}
-#define SKIP_CHARS_OR_BREAK(p,n) {int i; for (i = 0; i < (n); i++) \
- {if (*p != 0) { p++;} else {break;}} \
- {if (i < (n)) {break;}}}
+#define NEXT_CHAR(p) { \
+ if (*p != 0) { \
+ p++; \
+ } else { \
+ longjmp(jmpbuf, JMP_OUT_OF_RANGE); \
+ } \
+}
+#define NEXT_CHAR_OR_BREAK(p) { \
+ if (*p != 0) { \
+ p++; \
+ } else { \
+ break; \
+ } \
+}
+#define NEXT_CHAR_OR_RETURN(p) { \
+ if (*p != 0) { \
+ p++; \
+ } else { \
+ return; \
+ } \
+}
+#define SKIP_CHARS(p,n) { \
+ int i; \
+ for (i = 0; i < (n); i++) { \
+ if (*p != 0) { \
+ p++; \
+ } else { \
+ longjmp(jmpbuf, JMP_OUT_OF_RANGE); \
+ } \
+ } \
+}
+#define SKIP_CHARS_OR_BREAK(p,n) { \
+ int i; \
+ for (i = 0; i < (n); i++) { \
+ if (*p != 0) { \
+ p++; \
+ } else { \
+ break; \
+ } \
+ } \
+ if (i < (n)) { \
+ break; \
+ } \
+}
-/** Iterates through the null-terminated buffer (i.e., C string) and replaces all
- * UTF-8 encoded character >255 with 255
+/** Iterates through the null-terminated buffer (i.e., C string) and
+ * replaces all UTF-8 encoded character >255 with 255
*
* UTF-8 encoding:
*
@@ -414,8 +457,8 @@
char* q;
char c;
p = q = buf;
- /* We are not using NEXT_CHAR() to check if *q is NULL, as q is output location
- and offset for q is smaller than for p. */
+ // We are not using NEXT_CHAR() to check if *q is NULL, as q is output
+ // location and offset for q is smaller than for p.
while(*p != '\0') {
c = *p;
if ( (c & 0x80) == 0) {
@@ -438,8 +481,6 @@
*q = '\0';
}
-/* --------------------------------------------------------------------- */
-
static TCHAR* SkipWhiteSpace(TCHAR *p) {
if (p != NULL) {
while(iswspace(*p))
@@ -469,10 +510,10 @@
static TCHAR* SkipXMLComment(TCHAR *p) {
if (p != NULL) {
- if (DEPLOY_STRNCMP(p, _T("<!--"), 4) == 0) {
+ if (PACKAGER_STRNCMP(p, _T("<!--"), 4) == 0) {
SKIP_CHARS(p, 4);
do {
- if (DEPLOY_STRNCMP(p, _T("-->"), 3) == 0) {
+ if (PACKAGER_STRNCMP(p, _T("-->"), 3) == 0) {
SKIP_CHARS(p, 3);
return p;
}
@@ -485,7 +526,7 @@
static TCHAR* SkipXMLDocType(TCHAR *p) {
if (p != NULL) {
- if (DEPLOY_STRNCMP(p, _T("<!"), 2) == 0) {
+ if (PACKAGER_STRNCMP(p, _T("<!"), 2) == 0) {
SKIP_CHARS(p, 2);
while (*p != '\0') {
if (*p == '>') {
@@ -501,10 +542,10 @@
static TCHAR* SkipXMLProlog(TCHAR *p) {
if (p != NULL) {
- if (DEPLOY_STRNCMP(p, _T("<?"), 2) == 0) {
+ if (PACKAGER_STRNCMP(p, _T("<?"), 2) == 0) {
SKIP_CHARS(p, 2);
do {
- if (DEPLOY_STRNCMP(p, _T("?>"), 2) == 0) {
+ if (PACKAGER_STRNCMP(p, _T("?>"), 2) == 0) {
SKIP_CHARS(p, 2);
return p;
}
@@ -522,38 +563,38 @@
static void ConvertBuiltInEntities(TCHAR* p) {
TCHAR* q;
q = p;
- /* We are not using NEXT_CHAR() to check if *q is NULL, as q is output location
- and offset for q is smaller than for p. */
+ // We are not using NEXT_CHAR() to check if *q is NULL,
+ // as q is output location and offset for q is smaller than for p.
while(*p) {
- if (IsPCData(p)) {
- /* dont convert &xxx values within PData */
- TCHAR *end;
- end = SkipPCData(p);
- while(p < end) {
- *q++ = *p;
- NEXT_CHAR(p);
+ if (IsPCData(p)) {
+ /* dont convert &xxx values within PData */
+ TCHAR *end;
+ end = SkipPCData(p);
+ while(p < end) {
+ *q++ = *p;
+ NEXT_CHAR(p);
+ }
+ } else {
+ if (PACKAGER_STRNCMP(p, _T("&"), 5) == 0) {
+ *q++ = '&';
+ SKIP_CHARS(p, 5);
+ } else if (PACKAGER_STRNCMP(p, _T("<"), 4) == 0) {
+ *q = '<';
+ SKIP_CHARS(p, 4);
+ } else if (PACKAGER_STRNCMP(p, _T(">"), 4) == 0) {
+ *q = '>';
+ SKIP_CHARS(p, 4);
+ } else if (PACKAGER_STRNCMP(p, _T("'"), 6) == 0) {
+ *q = '\'';
+ SKIP_CHARS(p, 6);
+ } else if (PACKAGER_STRNCMP(p, _T(""e;"), 7) == 0) {
+ *q = '\"';
+ SKIP_CHARS(p, 7);
+ } else {
+ *q++ = *p;
+ NEXT_CHAR(p);
+ }
}
- } else {
- if (DEPLOY_STRNCMP(p, _T("&"), 5) == 0) {
- *q++ = '&';
- SKIP_CHARS(p, 5);
- } else if (DEPLOY_STRNCMP(p, _T("<"), 4) == 0) {
- *q = '<';
- SKIP_CHARS(p, 4);
- } else if (DEPLOY_STRNCMP(p, _T(">"), 4) == 0) {
- *q = '>';
- SKIP_CHARS(p, 4);
- } else if (DEPLOY_STRNCMP(p, _T("'"), 6) == 0) {
- *q = '\'';
- SKIP_CHARS(p, 6);
- } else if (DEPLOY_STRNCMP(p, _T(""e;"), 7) == 0) {
- *q = '\"';
- SKIP_CHARS(p, 7);
- } else {
- *q++ = *p;
- NEXT_CHAR(p);
- }
- }
}
*q = '\0';
}
@@ -588,7 +629,7 @@
}
CurTokenType = type;
- DEPLOY_STRNCPY(CurTokenName, len + 1, start, len);
+ PACKAGER_STRNCPY(CurTokenName, len + 1, start, len);
CurTokenName[len] = '\0';
}
@@ -727,7 +768,7 @@
if (CurTokenType == TOKEN_BEGIN_TAG) {
/* Create node for new element tag */
- node = CreateXMLNode(xmlTagType, DEPLOY_STRDUP(CurTokenName));
+ node = CreateXMLNode(xmlTagType, PACKAGER_STRDUP(CurTokenName));
/* We need to save root node pointer to be able to cleanup
if an error happens during parsing */
if(!root_node) {
@@ -769,21 +810,22 @@
/* Find closing bracket '>' for end tag */
do {
GetNextToken();
- } while(CurTokenType != TOKEN_EOF && CurTokenType != TOKEN_CLOSE_BRACKET);
+ } while(CurTokenType != TOKEN_EOF &&
+ CurTokenType != TOKEN_CLOSE_BRACKET);
GetNextToken();
}
}
/* Continue parsing rest on same level */
if (CurTokenType != TOKEN_EOF) {
- /* Parse rest of stream at same level */
- node->_next = ParseXMLElement();
+ /* Parse rest of stream at same level */
+ node->_next = ParseXMLElement();
}
return node;
} else if (CurTokenType == TOKEN_PCDATA) {
/* Create node for pcdata */
- node = CreateXMLNode(xmlPCDataType, DEPLOY_STRDUP(CurTokenName));
+ node = CreateXMLNode(xmlPCDataType, PACKAGER_STRDUP(CurTokenName));
/* We need to save root node pointer to be able to cleanup
if an error happens during parsing */
if(!root_node) {
@@ -843,7 +885,7 @@
free(name);
name = NULL;
}
- name = DEPLOY_STRDUP(CurTokenName);
+ name = PACKAGER_STRDUP(CurTokenName);
/* Skip any whitespace */
CurPos = q;
@@ -875,80 +917,80 @@
//Note: no need to free name and CurTokenName duplicate; they're assigned
// to an XMLAttribute structure in CreateXMLAttribute
- return CreateXMLAttribute(name, DEPLOY_STRDUP(CurTokenName));
+ return CreateXMLAttribute(name, PACKAGER_STRDUP(CurTokenName));
}
void FreeXMLDocument(XMLNode* root) {
- if (root == NULL) return;
- FreeXMLDocument(root->_sub);
- FreeXMLDocument(root->_next);
- FreeXMLAttribute(root->_attributes);
- free(root->_name);
- free(root);
+ if (root == NULL) return;
+ FreeXMLDocument(root->_sub);
+ FreeXMLDocument(root->_next);
+ FreeXMLAttribute(root->_attributes);
+ free(root->_name);
+ free(root);
}
static void FreeXMLAttribute(XMLAttribute* attr) {
- if (attr == NULL) return;
- free(attr->_name);
- free(attr->_value);
- FreeXMLAttribute(attr->_next);
- free(attr);
+ if (attr == NULL) return;
+ free(attr->_name);
+ free(attr->_value);
+ FreeXMLAttribute(attr->_next);
+ free(attr);
}
/* Find element at current level with a given name */
XMLNode* FindXMLChild(XMLNode* root, const TCHAR* name) {
- if (root == NULL) return NULL;
+ if (root == NULL) return NULL;
- if (root->_type == xmlTagType && DEPLOY_STRCMP(root->_name, name) == 0) {
- return root;
- }
+ if (root->_type == xmlTagType && PACKAGER_STRCMP(root->_name, name) == 0) {
+ return root;
+ }
- return FindXMLChild(root->_next, name);
+ return FindXMLChild(root->_next, name);
}
/* Search for an attribute with the given name and returns the contents. Returns NULL if
* attribute is not found
*/
TCHAR* FindXMLAttribute(XMLAttribute* attr, const TCHAR* name) {
- if (attr == NULL) return NULL;
- if (DEPLOY_STRCMP(attr->_name, name) == 0) return attr->_value;
- return FindXMLAttribute(attr->_next, name);
+ if (attr == NULL) return NULL;
+ if (PACKAGER_STRCMP(attr->_name, name) == 0) return attr->_value;
+ return FindXMLAttribute(attr->_next, name);
}
void PrintXMLDocument(XMLNode* node, int indt) {
- if (node == NULL) return;
+ if (node == NULL) return;
- if (node->_type == xmlTagType) {
- DEPLOY_PRINTF(_T("\n"));
- indent(indt);
- DEPLOY_PRINTF(_T("<%s"), node->_name);
- PrintXMLAttributes(node->_attributes);
- if (node->_sub == NULL) {
- DEPLOY_PRINTF(_T("/>\n"));
- } else {
- DEPLOY_PRINTF(_T(">"));
- PrintXMLDocument(node->_sub, indt + 1);
- indent(indt);
- DEPLOY_PRINTF(_T("</%s>"), node->_name);
- }
- } else {
- DEPLOY_PRINTF(_T("%s"), node->_name);
- }
- PrintXMLDocument(node->_next, indt);
+ if (node->_type == xmlTagType) {
+ PACKAGER_PRINTF(_T("\n"));
+ indent(indt);
+ PACKAGER_PRINTF(_T("<%s"), node->_name);
+ PrintXMLAttributes(node->_attributes);
+ if (node->_sub == NULL) {
+ PACKAGER_PRINTF(_T("/>\n"));
+ } else {
+ PACKAGER_PRINTF(_T(">"));
+ PrintXMLDocument(node->_sub, indt + 1);
+ indent(indt);
+ PACKAGER_PRINTF(_T("</%s>"), node->_name);
+ }
+ } else {
+ PACKAGER_PRINTF(_T("%s"), node->_name);
+ }
+ PrintXMLDocument(node->_next, indt);
}
static void PrintXMLAttributes(XMLAttribute* attr) {
- if (attr == NULL) return;
+ if (attr == NULL) return;
- DEPLOY_PRINTF(_T(" %s=\"%s\""), attr->_name, attr->_value);
- PrintXMLAttributes(attr->_next);
+ PACKAGER_PRINTF(_T(" %s=\"%s\""), attr->_name, attr->_value);
+ PrintXMLAttributes(attr->_next);
}
static void indent(int indt) {
int i;
for(i = 0; i < indt; i++) {
- DEPLOY_PRINTF(_T(" "));
+ PACKAGER_PRINTF(_T(" "));
}
}
@@ -957,7 +999,7 @@
static TCHAR* SkipPCData(TCHAR *p) {
- TCHAR *end = DEPLOY_STRSTR(p, CDEnd);
+ TCHAR *end = PACKAGER_STRSTR(p, CDEnd);
if (end != NULL) {
return end+sizeof(CDEnd);
}
@@ -966,12 +1008,13 @@
static int IsPCData(TCHAR *p) {
const int size = sizeof(CDStart);
- return (DEPLOY_STRNCMP(CDStart, p, size) == 0);
+ return (PACKAGER_STRNCMP(CDStart, p, size) == 0);
}
-//--------------------------------------------------------------------------------------------------
+//----------------------------------------------------------------------------
-LinuxJavaUserPreferences::LinuxJavaUserPreferences(void) : JavaUserPreferences() {
+LinuxJavaUserPreferences::LinuxJavaUserPreferences(void) :
+ JavaUserPreferences() {
}
LinuxJavaUserPreferences::~LinuxJavaUserPreferences(void) {
@@ -981,10 +1024,10 @@
TString result;
struct passwd *pw = getpwuid(getuid());
TString homedir = pw->pw_dir;
- TString userOverrideFileName = FilePath::IncludeTrailingSeparater(homedir) +
- FilePath::IncludeTrailingSeparater(_T(".java/.userPrefs")) +
- FilePath::IncludeTrailingSeparater(Appid) +
- _T("JVMUserOptions/prefs.xml");
+ TString userOverrideFileName = FilePath::IncludeTrailingSeparator(homedir)
+ + FilePath::IncludeTrailingSeparator(_T(".java/.userPrefs"))
+ + FilePath::IncludeTrailingSeparator(Appid)
+ + _T("JVMUserOptions/prefs.xml");
if (FilePath::FileExists(userOverrideFileName) == true) {
result = userOverrideFileName;
@@ -1055,31 +1098,35 @@
}
namespace {
-template<class funcType>
-class DllFunction {
- const Library& lib;
- funcType funcPtr;
- std::string theName;
+ template<class funcType>
+ class DllFunction {
+ const Library& lib;
+ funcType funcPtr;
+ std::string theName;
-public:
- DllFunction(const Library& library, const std::string &funcName): lib(library) {
- funcPtr = reinterpret_cast<funcType>(lib.GetProcAddress(funcName));
- if (!funcPtr) {
- throw std::runtime_error("Failed to load function \"" + funcName + "\" from \"" + library.GetName() + "\" library");
+ public:
+ DllFunction(const Library& library,
+ const std::string &funcName): lib(library) {
+ funcPtr = reinterpret_cast<funcType>(lib.GetProcAddress(funcName));
+ if (!funcPtr) {
+ throw std::runtime_error("Failed to load function \""
+ + funcName + "\" from \""
+ + library.GetName() + "\" library");
+ }
}
- }
- operator funcType() const {
- return funcPtr;
- }
-};
+ operator funcType() const {
+ return funcPtr;
+ }
+ };
} // namespace
extern "C" {
typedef Status (*XInitThreadsFuncPtr)();
typedef Display* (*XOpenDisplayFuncPtr)(char *display_name);
-typedef Atom (*XInternAtomFuncPtr)(Display *display, char *atom_name, Bool only_if_exists);
+typedef Atom (*XInternAtomFuncPtr)(
+ Display *display, char *atom_name, Bool only_if_exists);
typedef Window (*XDefaultRootWindowFuncPtr)(Display *display);
@@ -1108,32 +1155,37 @@
return;
}
- DllFunction<XDefaultRootWindowFuncPtr> XDefaultRootWindowFunc(libX11, "XDefaultRootWindow");
+ DllFunction<XDefaultRootWindowFuncPtr> XDefaultRootWindowFunc(libX11,
+ "XDefaultRootWindow");
searchWindowHelper(XDefaultRootWindowFunc(_display));
reactivateProcess();
- DllFunction<XCloseDisplayFuncPtr> XCloseDisplayFunc(libX11, "XCloseDisplay");
+ DllFunction<XCloseDisplayFuncPtr> XCloseDisplayFunc(libX11,
+ "XCloseDisplay");
XCloseDisplayFunc(_display);
}
extern "C" {
-typedef int (*XGetWindowPropertyFuncPtr)(Display *display, Window w, Atom property,
- long long_offset, long long_length, Bool d, Atom req_type, Atom *actual_type_return,
+typedef int (*XGetWindowPropertyFuncPtr)(
+ Display *display, Window w, Atom property, long long_offset,
+ long long_length, Bool d, Atom req_type, Atom *actual_type_return,
int *actual_format_return, unsigned long *nitems_return,
unsigned long *bytes_after_return, unsigned char **prop_return);
-typedef Status (*XQueryTreeFuncPtr)(Display *display, Window w, Window *root_return,
- Window *parent_return, Window **children_return, unsigned int *nchildren_return);
+typedef Status (*XQueryTreeFuncPtr)(
+ Display *display, Window w, Window *root_return, Window *parent_return,
+ Window **children_return, unsigned int *nchildren_return);
typedef int (*XFreeFuncPtr)(void *data);
}
void ProcessReactivator::searchWindowHelper(Window w) {
- DllFunction<XGetWindowPropertyFuncPtr> XGetWindowPropertyFunc(libX11, "XGetWindowProperty");
+ DllFunction<XGetWindowPropertyFuncPtr> XGetWindowPropertyFunc(libX11,
+ "XGetWindowProperty");
DllFunction<XFreeFuncPtr> XFreeFunc(libX11, "XFree");
@@ -1141,8 +1193,8 @@
int format;
unsigned long num, bytesAfter;
unsigned char* propPid = 0;
- if (Success == XGetWindowPropertyFunc(_display, w, _atomPid, 0, 1, False, XA_CARDINAL,
- &type, &format, &num, &bytesAfter, &propPid)) {
+ if (Success == XGetWindowPropertyFunc(_display, w, _atomPid, 0, 1,
+ False, XA_CARDINAL, &type, &format, &num, &bytesAfter, &propPid)) {
if (propPid != 0) {
if (_pid == *((pid_t *)propPid)) {
_result.push_back(w);
@@ -1156,7 +1208,8 @@
Window root, parent;
Window* child;
unsigned int numChildren;
- if (0 != XQueryTreeFunc(_display, w, &root, &parent, &child, &numChildren)) {
+ if (0 != XQueryTreeFunc(_display, w, &root,
+ &parent, &child, &numChildren)) {
for (unsigned int i = 0; i < numChildren; i++) {
searchWindowHelper(child[i]);
}
@@ -1176,7 +1229,8 @@
void ProcessReactivator::reactivateProcess() {
- DllFunction<XGetWindowAttributesFuncPtr> XGetWindowAttributesFunc(libX11, "XGetWindowAttributes");
+ DllFunction<XGetWindowAttributesFuncPtr> XGetWindowAttributesFunc(libX11,
+ "XGetWindowAttributes");
DllFunction<XSendEventFuncPtr> XSendEventFunc(libX11, "XSendEvent");
@@ -1184,11 +1238,13 @@
DllFunction<XInternAtomFuncPtr> XInternAtomFunc(libX11, "XInternAtom");
- for (std::list<Window>::const_iterator it = _result.begin(); it != _result.end(); it++) {
+ for (std::list<Window>::const_iterator it = _result.begin();
+ it != _result.end(); it++) {
// try sending an event to activate window,
// after that we can try to raise it.
XEvent xev;
- Atom atom = XInternAtomFunc (_display, (char*)"_NET_ACTIVE_WINDOW", False);
+ Atom atom = XInternAtomFunc (
+ _display, (char*)"_NET_ACTIVE_WINDOW", False);
xev.xclient.type = ClientMessage;
xev.xclient.serial = 0;
xev.xclient.send_event = True;
@@ -1209,6 +1265,5 @@
}
}
-//--------------------------------------------------------------------------------------------------
#endif // LINUX
--- a/src/jdk.packager/share/native/library/common/LinuxPlatform.h Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/LinuxPlatform.h Wed Oct 17 13:50:11 2018 -0400
@@ -54,8 +54,10 @@
virtual void ShowMessage(TString title, TString description);
virtual void ShowMessage(TString description);
- virtual TCHAR* ConvertStringToFileSystemString(TCHAR* Source, bool &release);
- virtual TCHAR* ConvertFileSystemStringToString(TCHAR* Source, bool &release);
+ virtual TCHAR* ConvertStringToFileSystemString(
+ TCHAR* Source, bool &release);
+ virtual TCHAR* ConvertFileSystemStringToString(
+ TCHAR* Source, bool &release);
virtual void SetCurrentDirectory(TString Value);
virtual TString GetPackageRootDirectory();
--- a/src/jdk.packager/share/native/library/common/Lock.cpp Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/Lock.cpp Wed Oct 17 13:50:11 2018 -0400
@@ -41,40 +41,40 @@
void Lock::Initialize() {
#ifdef WINDOWS
InitializeCriticalSectionAndSpinCount(&FCriticalSection, 0x00000400);
-#endif //WINDOWS
+#endif // WINDOWS
#ifdef MAC
- //FMutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER;
-#endif //MAC
+ // FMutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER;
+#endif // MAC
#ifdef LINUX
- //FMutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
-#endif //LINUX
+ // FMutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
+#endif // LINUX
}
Lock::~Lock(void) {
#ifdef WINDOWS
DeleteCriticalSection(&FCriticalSection);
-#endif //WINDOWS
+#endif // WINDOWS
#ifdef POSIX
pthread_mutex_unlock(&FMutex);
-#endif //POSIX
+#endif // POSIX
}
void Lock::Enter() {
#ifdef WINDOWS
EnterCriticalSection(&FCriticalSection);
-#endif //WINDOWS
+#endif // WINDOWS
#ifdef POSIX
pthread_mutex_lock(&FMutex);
-#endif //POSIX
+#endif // POSIX
}
void Lock::Leave() {
#ifdef WINDOWS
LeaveCriticalSection(&FCriticalSection);
-#endif //WINDOWS
+#endif // WINDOWS
#ifdef POSIX
pthread_mutex_unlock(&FMutex);
-#endif //POSIX
+#endif // POSIX
}
bool Lock::TryEnter() {
@@ -82,10 +82,10 @@
#ifdef WINDOWS
if (TryEnterCriticalSection (&FCriticalSection) != 0)
result = true;
-#endif //WINDOWS
+#endif // WINDOWS
#ifdef POSIX
if (pthread_mutex_lock(&FMutex) == 0)
result = true;
-#endif //POSIX
+#endif // POSIX
return result;
}
--- a/src/jdk.packager/share/native/library/common/Lock.h Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/Lock.h Wed Oct 17 13:50:11 2018 -0400
@@ -54,4 +54,4 @@
bool TryEnter();
};
-#endif //LOCK_H
+#endif // LOCK_H
--- a/src/jdk.packager/share/native/library/common/MacPlatform.h Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/MacPlatform.h Wed Oct 17 13:50:11 2018 -0400
@@ -50,8 +50,10 @@
virtual void ShowMessage(TString title, TString description);
virtual void ShowMessage(TString description);
- virtual TCHAR* ConvertStringToFileSystemString(TCHAR* Source, bool &release);
- virtual TCHAR* ConvertFileSystemStringToString(TCHAR* Source, bool &release);
+ virtual TCHAR* ConvertStringToFileSystemString(
+ TCHAR* Source, bool &release);
+ virtual TCHAR* ConvertFileSystemStringToString(
+ TCHAR* Source, bool &release);
virtual void SetCurrentDirectory(TString Value);
virtual TString GetPackageRootDirectory();
@@ -71,7 +73,7 @@
#ifdef DEBUG
virtual bool IsNativeDebuggerPresent();
virtual int GetProcessID();
-#endif //DEBUG
+#endif // DEBUG
};
@@ -82,6 +84,6 @@
virtual bool Load(TString Appid);
};
-#endif //MACPLATFORM_H
+#endif // MACPLATFORM_H
-#endif //MAC
+#endif // MAC
--- a/src/jdk.packager/share/native/library/common/Macros.cpp Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/Macros.cpp Wed Oct 17 13:50:11 2018 -0400
@@ -44,7 +44,8 @@
macros.AddMacro(_T("$LAUNCHERDIR"), package.GetPackageLauncherDirectory());
macros.AddMacro(_T("$APPDATADIR"), package.GetAppDataDirectory());
- TString javaHome = FilePath::ExtractFilePath(package.GetJVMLibraryFileName());
+ TString javaHome =
+ FilePath::ExtractFilePath(package.GetJVMLibraryFileName());
macros.AddMacro(_T("$JREHOME"), javaHome);
// App CDS Macros
--- a/src/jdk.packager/share/native/library/common/Macros.h Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/Macros.h Wed Oct 17 13:50:11 2018 -0400
@@ -46,4 +46,4 @@
void AddMacro(TString Key, TString Value);
};
-#endif //MACROS_H
+#endif // MACROS_H
--- a/src/jdk.packager/share/native/library/common/Messages.cpp Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/Messages.cpp Wed Oct 17 13:50:11 2018 -0400
@@ -36,19 +36,20 @@
FMessages.SetReadOnly(false);
FMessages.SetValue(LIBRARY_NOT_FOUND, _T("Failed to find library."));
FMessages.SetValue(FAILED_CREATING_JVM, _T("Failed to create JVM"));
- FMessages.SetValue(FAILED_LOCATING_JVM_ENTRY_POINT, _T("Failed to locate JLI_Launch"));
+ FMessages.SetValue(FAILED_LOCATING_JVM_ENTRY_POINT,
+ _T("Failed to locate JLI_Launch"));
FMessages.SetValue(NO_MAIN_CLASS_SPECIFIED, _T("No main class specified"));
FMessages.SetValue(METHOD_NOT_FOUND, _T("No method %s in class %s."));
FMessages.SetValue(CLASS_NOT_FOUND, _T("Class %s not found."));
FMessages.SetValue(ERROR_INVOKING_METHOD, _T("Error invoking method."));
- //FMessages.SetValue(CONFIG_FILE_NOT_FOUND, _T("Configuration file %s is not found."));
- //FMessages.SetValue(BUNDLED_JVM_NOT_FOUND, _T("$JAVAVMLIBRARYNAME is not found in the bundled runtime."));
- FMessages.SetValue(APPCDS_CACHE_FILE_NOT_FOUND, _T("Error: AppCDS cache does not exists:\n%s\n"));
+ FMessages.SetValue(APPCDS_CACHE_FILE_NOT_FOUND,
+ _T("Error: AppCDS cache does not exists:\n%s\n"));
}
Messages& Messages::GetInstance() {
//Lock lock;
- static Messages instance; // Guaranteed to be destroyed. Instantiated on first use.
+ static Messages instance;
+ // Guaranteed to be destroyed. Instantiated on first use.
return instance;
}
--- a/src/jdk.packager/share/native/library/common/Messages.h Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/Messages.h Wed Oct 17 13:50:11 2018 -0400
@@ -55,4 +55,4 @@
TString GetMessage(const TString Key);
};
-#endif //MESSAGES_H
+#endif // MESSAGES_H
--- a/src/jdk.packager/share/native/library/common/OrderedMap.h Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/OrderedMap.h Wed Oct 17 13:50:11 2018 -0400
@@ -74,7 +74,8 @@
typename list_type::iterator FindListItem(const key_type Key) {
typename list_type::iterator result = FList.end();
- for (typename list_type::iterator iterator = FList.begin(); iterator != FList.end(); iterator++) {
+ for (typename list_type::iterator iterator =
+ FList.begin(); iterator != FList.end(); iterator++) {
container_type *item = *iterator;
if (item->first == Key) {
@@ -120,7 +121,8 @@
}
void Clear() {
- for (typename list_type::iterator iterator = FList.begin(); iterator != FList.end(); iterator++) {
+ for (typename list_type::iterator iterator =
+ FList.begin(); iterator != FList.end(); iterator++) {
container_type *item = *iterator;
if (item != NULL) {
@@ -245,4 +247,4 @@
}
};
-#endif //ORDEREDMAP_H
+#endif // ORDEREDMAP_H
--- a/src/jdk.packager/share/native/library/common/Package.cpp Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/Package.cpp Wed Oct 17 13:50:11 2018 -0400
@@ -38,7 +38,8 @@
Initialize();
}
-TPlatformNumber StringToPercentageOfNumber(TString Value, TPlatformNumber Number) {
+TPlatformNumber StringToPercentageOfNumber(TString Value,
+ TPlatformNumber Number) {
TPlatformNumber result = 0;
size_t percentage = atoi(PlatformString(Value.c_str()));
@@ -62,12 +63,16 @@
}
TString appName;
TString appVersion;
- AutoFreePtr<ISectionalPropertyContainer> config = platform.GetConfigFile(platform.GetConfigFileName());
+ AutoFreePtr<ISectionalPropertyContainer> config =
+ platform.GetConfigFile(platform.GetConfigFileName());
std::map<TString, TString> keys = platform.GetKeys();
- config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[APP_NAME_KEY], appName);
- config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_VERSION], appVersion);
+ config->GetValue(keys[CONFIG_SECTION_APPLICATION],
+ keys[APP_NAME_KEY], appName);
+ config->GetValue(keys[CONFIG_SECTION_APPLICATION],
+ keys[CONFIG_VERSION], appVersion);
TString singleInstance;
- config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_APPLICATION_INSTANCE], singleInstance);
+ config->GetValue(keys[CONFIG_SECTION_APPLICATION],
+ keys[CONFIG_APPLICATION_INSTANCE], singleInstance);
if (singleInstance == _T("single")) {
TString uniqueID = appName + FBootFields->FAppID + appVersion;
// if another instance is running, later we can try to reactivate it
@@ -88,51 +93,68 @@
FBootFields->FPackageRootDirectory = platform.GetPackageRootDirectory();
FBootFields->FPackageAppDirectory = platform.GetPackageAppDirectory();
- FBootFields->FPackageLauncherDirectory = platform.GetPackageLauncherDirectory();
+ FBootFields->FPackageLauncherDirectory =
+ platform.GetPackageLauncherDirectory();
FBootFields->FAppDataDirectory = platform.GetAppDataDirectory();
std::map<TString, TString> keys = platform.GetKeys();
// Read from configure.cfg/Info.plist
- AutoFreePtr<ISectionalPropertyContainer> config = platform.GetConfigFile(platform.GetConfigFileName());
+ AutoFreePtr<ISectionalPropertyContainer> config =
+ platform.GetConfigFile(platform.GetConfigFileName());
- config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_APP_ID_KEY], FBootFields->FAppID);
- config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[PACKAGER_APP_DATA_DIR], FBootFields->FPackageAppDataDirectory);
- FBootFields->FPackageAppDataDirectory = FilePath::FixPathForPlatform(FBootFields->FPackageAppDataDirectory);
+ config->GetValue(keys[CONFIG_SECTION_APPLICATION],
+ keys[CONFIG_APP_ID_KEY], FBootFields->FAppID);
+ config->GetValue(keys[CONFIG_SECTION_APPLICATION],
+ keys[PACKAGER_APP_DATA_DIR], FBootFields->FPackageAppDataDirectory);
+ FBootFields->FPackageAppDataDirectory =
+ FilePath::FixPathForPlatform(FBootFields->FPackageAppDataDirectory);
// Main JAR.
- config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_MAINJAR_KEY], FBootFields->FMainJar);
- FBootFields->FMainJar = FilePath::IncludeTrailingSeparater(GetPackageAppDirectory()) +
- FilePath::FixPathForPlatform(FBootFields->FMainJar);
+ config->GetValue(keys[CONFIG_SECTION_APPLICATION],
+ keys[CONFIG_MAINJAR_KEY], FBootFields->FMainJar);
+ FBootFields->FMainJar =
+ FilePath::IncludeTrailingSeparator(GetPackageAppDirectory())
+ + FilePath::FixPathForPlatform(FBootFields->FMainJar);
// Main Module.
- config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_MAINMODULE_KEY], FBootFields->FMainModule);
+ config->GetValue(keys[CONFIG_SECTION_APPLICATION],
+ keys[CONFIG_MAINMODULE_KEY], FBootFields->FMainModule);
// Classpath.
- // 1. If the provided class path contains main jar then only use provided class path.
+ // 1. If the provided class path contains main jar then only use
+ // provided class path.
// 2. If class path provided by config file is empty then add main jar.
// 3. If main jar is not in provided class path then add it.
- config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_CLASSPATH_KEY], FBootFields->FClassPath);
- FBootFields->FClassPath = FilePath::FixPathSeparatorForPlatform(FBootFields->FClassPath);
+ config->GetValue(keys[CONFIG_SECTION_APPLICATION],
+ keys[CONFIG_CLASSPATH_KEY], FBootFields->FClassPath);
+ FBootFields->FClassPath =
+ FilePath::FixPathSeparatorForPlatform(FBootFields->FClassPath);
if (FBootFields->FClassPath.empty() == true) {
FBootFields->FClassPath = GetMainJar();
- }
- else if (FBootFields->FClassPath.find(GetMainJar()) == TString::npos) {
- FBootFields->FClassPath = GetMainJar() + FilePath::PathSeparator() + FBootFields->FClassPath;
+ } else if (FBootFields->FClassPath.find(GetMainJar()) == TString::npos) {
+ FBootFields->FClassPath = GetMainJar()
+ + FilePath::PathSeparator() + FBootFields->FClassPath;
}
// Modulepath.
- config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_MODULEPATH_KEY], FBootFields->FModulePath);
- FBootFields->FModulePath = FilePath::FixPathSeparatorForPlatform(FBootFields->FModulePath);
+ config->GetValue(keys[CONFIG_SECTION_APPLICATION],
+ keys[CONFIG_MODULEPATH_KEY], FBootFields->FModulePath);
+ FBootFields->FModulePath =
+ FilePath::FixPathSeparatorForPlatform(FBootFields->FModulePath);
// Main Class.
- config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_MAINCLASSNAME_KEY], FBootFields->FMainClassName);
+ config->GetValue(keys[CONFIG_SECTION_APPLICATION],
+ keys[CONFIG_MAINCLASSNAME_KEY], FBootFields->FMainClassName);
// Splash Screen.
- if (config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_SPLASH_KEY], FBootFields->FSplashScreenFileName) == true) {
- FBootFields->FSplashScreenFileName = FilePath::IncludeTrailingSeparater(GetPackageAppDirectory()) +
- FilePath::FixPathForPlatform(FBootFields->FSplashScreenFileName);
+ if (config->GetValue(keys[CONFIG_SECTION_APPLICATION],
+ keys[CONFIG_SPLASH_KEY],
+ FBootFields->FSplashScreenFileName) == true) {
+ FBootFields->FSplashScreenFileName =
+ FilePath::IncludeTrailingSeparator(GetPackageAppDirectory())
+ + FilePath::FixPathForPlatform(FBootFields->FSplashScreenFileName);
if (FilePath::FileExists(FBootFields->FSplashScreenFileName) == false) {
FBootFields->FSplashScreenFileName = _T("");
@@ -140,7 +162,8 @@
}
// Runtime.
- config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[JVM_RUNTIME_KEY], FBootFields->FJVMRuntimeDirectory);
+ config->GetValue(keys[CONFIG_SECTION_APPLICATION],
+ keys[JVM_RUNTIME_KEY], FBootFields->FJVMRuntimeDirectory);
// Read jvmargs.
PromoteAppCDSState(config);
@@ -156,7 +179,8 @@
}
// Read jvmuserarg defaults.
- config->GetSection(keys[CONFIG_SECTION_JVMUSEROPTIONS], FDefaultJVMUserArgs);
+ config->GetSection(keys[CONFIG_SECTION_JVMUSEROPTIONS],
+ FDefaultJVMUserArgs);
// Load JVM user overrides.
TString jvmUserArgsConfigFileName = GetJVMUserArgsConfigFileName();
@@ -166,15 +190,18 @@
IniFile userConfig;
if (userConfig.LoadFromFile(jvmUserArgsConfigFileName) == false) {
- // New property file format was not found, attempt to load old property file format.
- userConfig.GetSection(keys[CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS], FJVMUserArgsOverrides);
+ // New property file format was not found,
+ // attempt to load old property file format.
+ userConfig.GetSection(keys[CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS],
+ FJVMUserArgsOverrides);
}
- userConfig.GetSection(keys[CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS], FJVMUserArgsOverrides);
- }
- else {
+ userConfig.GetSection(keys[CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS],
+ FJVMUserArgsOverrides);
+ } else {
// Attemp to load java.util.prefs for legacy JVM user overrides.
- AutoFreePtr<JavaUserPreferences> javaPreferences(JavaUserPreferences::CreateInstance());
+ AutoFreePtr<JavaUserPreferences> javaPreferences(
+ JavaUserPreferences::CreateInstance());
if (javaPreferences->Load(GetAppID()) == true) {
FJVMUserArgsOverrides = javaPreferences->GetData();
@@ -184,20 +211,24 @@
// Auto Memory.
TString autoMemory;
- if (config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_APP_MEMORY], autoMemory) == true) {
+ if (config->GetValue(keys[CONFIG_SECTION_APPLICATION],
+ keys[CONFIG_APP_MEMORY], autoMemory) == true) {
if (autoMemory == _T("auto") || autoMemory == _T("100%")) {
FBootFields->FMemoryState = PackageBootFields::msAuto;
FBootFields->FMemorySize = platform.GetMemorySize();
- }
- else if (autoMemory.length() == 2 && isdigit(autoMemory[0]) && autoMemory[1] == '%') {
+ } else if (autoMemory.length() == 2 && isdigit(autoMemory[0]) &&
+ autoMemory[1] == '%') {
FBootFields->FMemoryState = PackageBootFields::msAuto;
- FBootFields->FMemorySize = StringToPercentageOfNumber(autoMemory.substr(0, 1), platform.GetMemorySize());
- }
- else if (autoMemory.length() == 3 && isdigit(autoMemory[0]) && isdigit(autoMemory[1]) && autoMemory[2] == '%') {
+ FBootFields->FMemorySize =
+ StringToPercentageOfNumber(autoMemory.substr(0, 1),
+ platform.GetMemorySize());
+ } else if (autoMemory.length() == 3 && isdigit(autoMemory[0]) &&
+ isdigit(autoMemory[1]) && autoMemory[2] == '%') {
FBootFields->FMemoryState = PackageBootFields::msAuto;
- FBootFields->FMemorySize = StringToPercentageOfNumber(autoMemory.substr(0, 2), platform.GetMemorySize());
- }
- else {
+ FBootFields->FMemorySize =
+ StringToPercentageOfNumber(autoMemory.substr(0, 2),
+ platform.GetMemorySize());
+ } else {
FBootFields->FMemoryState = PackageBootFields::msManual;
FBootFields->FMemorySize = 0;
}
@@ -205,7 +236,8 @@
// Debug
TString debug;
- if (config->GetValue(keys[CONFIG_SECTION_APPLICATION], keys[CONFIG_APP_DEBUG], debug) == true) {
+ if (config->GetValue(keys[CONFIG_SECTION_APPLICATION],
+ keys[CONFIG_APP_DEBUG], debug) == true) {
FBootFields->FArgs.push_back(debug);
}
@@ -229,7 +261,8 @@
// -> cdsGenCache If -Xappcds:generatecache
// -> cdsDisabled If -Xappcds:off
// -> cdsEnabled If "AppCDSJVMOptions" section is present
-// -> cdsAuto If "AppCDSJVMOptions" section is present and app.appcds.cache=auto
+// -> cdsAuto If "AppCDSJVMOptions" section is present and
+// app.appcds.cache=auto
// -> cdsDisabled Default
//
void Package::PromoteAppCDSState(ISectionalPropertyContainer* Config) {
@@ -247,21 +280,24 @@
}
case cdsUninitialized: {
- if (Config->ContainsSection(keys[CONFIG_SECTION_APPCDSJVMOPTIONS]) == true) {
+ if (Config->ContainsSection(
+ keys[CONFIG_SECTION_APPCDSJVMOPTIONS]) == true) {
// If the AppCDS section is present then enable AppCDS.
TString appCDSCacheValue;
- // If running with AppCDS enabled, and the configuration has been setup so "auto" is enabled, then
- // the launcher will attempt to generate the cache file automatically and run the application.
- if (Config->GetValue(keys[CONFIG_SECTION_APPLICATION], _T("app.appcds.cache"), appCDSCacheValue) == true &&
+ // If running with AppCDS enabled, and the configuration has
+ // been setup so "auto" is enabled, then
+ // the launcher will attempt to generate the cache file
+ // automatically and run the application.
+ if (Config->GetValue(keys[CONFIG_SECTION_APPLICATION],
+ _T("app.appcds.cache"), appCDSCacheValue) == true &&
appCDSCacheValue == _T("auto")) {
platform.SetAppCDSState(cdsAuto);
}
else {
platform.SetAppCDSState(cdsEnabled);
}
- }
- else {
+ } else {
platform.SetAppCDSState(cdsDisabled);
}
@@ -277,35 +313,44 @@
switch (platform.GetAppCDSState()) {
case cdsUninitialized: {
throw Exception(_T("Internal Error"));
- }
+ }
case cdsDisabled: {
- Config->GetSection(keys[CONFIG_SECTION_JVMOPTIONS], FBootFields->FJVMArgs);
+ Config->GetSection(keys[CONFIG_SECTION_JVMOPTIONS],
+ FBootFields->FJVMArgs);
break;
}
case cdsGenCache: {
- Config->GetSection(keys[CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS], FBootFields->FJVMArgs);
+ Config->GetSection(keys[
+ CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS],
+ FBootFields->FJVMArgs);
break;
}
case cdsAuto:
case cdsEnabled: {
if (Config->GetValue(keys[CONFIG_SECTION_APPCDSJVMOPTIONS],
- _T( "-XX:SharedArchiveFile"), FBootFields->FAppCDSCacheFileName) == true) {
- // File names may contain the incorrect path separators. The cache file name must be
- // corrected at this point.
+ _T( "-XX:SharedArchiveFile"),
+ FBootFields->FAppCDSCacheFileName) == true) {
+ // File names may contain the incorrect path separators.
+ // The cache file name must be corrected at this point.
if (FBootFields->FAppCDSCacheFileName.empty() == false) {
IniFile* iniConfig = dynamic_cast<IniFile*>(Config);
if (iniConfig != NULL) {
- FBootFields->FAppCDSCacheFileName = FilePath::FixPathForPlatform(FBootFields->FAppCDSCacheFileName);
- iniConfig->SetValue(keys[CONFIG_SECTION_APPCDSJVMOPTIONS],
- _T( "-XX:SharedArchiveFile"), FBootFields->FAppCDSCacheFileName);
+ FBootFields->FAppCDSCacheFileName =
+ FilePath::FixPathForPlatform(
+ FBootFields->FAppCDSCacheFileName);
+ iniConfig->SetValue(keys[
+ CONFIG_SECTION_APPCDSJVMOPTIONS],
+ _T( "-XX:SharedArchiveFile"),
+ FBootFields->FAppCDSCacheFileName);
}
}
- Config->GetSection(keys[CONFIG_SECTION_APPCDSJVMOPTIONS], FBootFields->FJVMArgs);
+ Config->GetSection(keys[CONFIG_SECTION_APPCDSJVMOPTIONS],
+ FBootFields->FJVMArgs);
}
break;
@@ -317,7 +362,8 @@
if (argc > 0) {
std::list<TString> args;
- // Prepare app arguments. Skip value at index 0 - this is path to executable.
+ // Prepare app arguments. Skip value at index 0 -
+ // this is path to executable.
FBootFields->FCommandName = argv[0];
// Path to executable is at 0 index so start at index 1.
@@ -346,7 +392,8 @@
}
if (arg == _T("-NSDocumentRevisionsDebugMode")) {
- // Ignore -NSDocumentRevisionsDebugMode and the following YES/NO
+ // Ignore -NSDocumentRevisionsDebugMode and
+ // the following YES/NO
index++;
continue;
}
@@ -362,7 +409,8 @@
}
Package& Package::GetInstance() {
- static Package instance; // Guaranteed to be destroyed. Instantiated on first use.
+ static Package instance;
+ // Guaranteed to be destroyed. Instantiated on first use.
return instance;
}
@@ -389,8 +437,8 @@
return FJVMUserArgsOverrides;
}
-std::vector<TString> GetKeysThatAreNotDuplicates(OrderedMap<TString, TString> &Defaults,
- OrderedMap<TString, TString> &Overrides) {
+std::vector<TString> GetKeysThatAreNotDuplicates(OrderedMap<TString,
+ TString> &Defaults, OrderedMap<TString, TString> &Overrides) {
std::vector<TString> result;
std::vector<TString> overrideKeys = Overrides.GetKeys();
@@ -410,8 +458,8 @@
return result;
}
-OrderedMap<TString, TString> CreateOrderedMapFromKeyList(OrderedMap<TString, TString> &Map,
- std::vector<TString> &Keys) {
+OrderedMap<TString, TString> CreateOrderedMapFromKeyList(OrderedMap<TString,
+ TString> &Map, std::vector<TString> &Keys) {
OrderedMap<TString, TString> result;
for (size_t index = 0; index < Keys.size(); index++) {
@@ -431,10 +479,12 @@
OrderedMap<TString, TString> overrides = Value;
// 1. Remove entries in the overrides that are the same as the defaults.
- std::vector<TString> overrideKeys = GetKeysThatAreNotDuplicates(defaults, overrides);
+ std::vector<TString> overrideKeys =
+ GetKeysThatAreNotDuplicates(defaults, overrides);
// 2. Create an ordered map from the overrides that weren't removed.
- FJVMUserArgsOverrides = CreateOrderedMapFromKeyList(overrides, overrideKeys);
+ FJVMUserArgsOverrides =
+ CreateOrderedMapFromKeyList(overrides, overrideKeys);
// 3. Overwrite JVM user config overrides with provided key/value pair.
SaveJVMUserArgOverrides(FJVMUserArgsOverrides);
@@ -447,7 +497,8 @@
IniFile userConfig;
Platform& platform = Platform::GetInstance();
std::map<TString, TString> keys = platform.GetKeys();
- userConfig.AppendSection(keys[CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS], Data);
+ userConfig.AppendSection(
+ keys[CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS], Data);
userConfig.SaveToFile(GetJVMUserArgsConfigFileName());
}
@@ -455,8 +506,9 @@
return FJVMUserArgs;
}
-std::vector<TString> GetKeysThatAreNotOverridesOfDefaultValues(OrderedMap<TString, TString> &Defaults,
- OrderedMap<TString, TString> &Overrides) {
+std::vector<TString> GetKeysThatAreNotOverridesOfDefaultValues(
+ OrderedMap<TString, TString> &Defaults, OrderedMap<TString,
+ TString> &Overrides) {
std::vector<TString> result;
std::vector<TString> keys = Overrides.GetKeys();
@@ -480,12 +532,16 @@
}
void Package::MergeJVMDefaultsWithOverrides() {
- // Merge jvmuserarg defaults and jvmuserarg overrides to populate FJVMUserArgs.
- // 1. If the key is in the config file and not the java.user.preferences the default value is used,
+ // Merge jvmuserarg defaults and jvmuserarg overrides to populate
+ // FJVMUserArgs.
+ // 1. If the key is in the config file and not the
+ // java.user.preferences the default value is used,
// the one from the config file.
- // 2. If the key is in the java.user.preferences then the value from the java.user.preferences is used and
+ // 2. If the key is in the java.user.preferences then the value
+ // from the java.user.preferences is used and
// the config file value is ignored.
- // 3. If the key is not in the config file but it is in the java.user.preferences then it is added anyway.
+ // 3. If the key is not in the config file but it is in
+ // the java.user.preferences then it is added anyway.
// And if it is removed it won't show back up.
FJVMUserArgs.Clear();
FJVMUserArgs.Append(FDefaultJVMUserArgs);
@@ -494,7 +550,8 @@
// 1. Iterate over all elements in overrides to see if any items
// override a default value.
- std::vector<TString> keys = GetKeysThatAreNotOverridesOfDefaultValues(FJVMUserArgs, overrides);
+ std::vector<TString> keys =
+ GetKeysThatAreNotOverridesOfDefaultValues(FJVMUserArgs, overrides);
// 2. All remaining items in overrides are appended to the end.
@@ -537,10 +594,12 @@
if (FJVMUserArgsConfigFileName.empty()) {
Platform& platform = Platform::GetInstance();
- FJVMUserArgsConfigFileName = FilePath::IncludeTrailingSeparater(platform.GetAppDataDirectory()) +
- FilePath::IncludeTrailingSeparater(GetPackageAppDataDirectory()) +
- FilePath::IncludeTrailingSeparater(_T("packager")) +
- _T("jvmuserargs.cfg");
+ FJVMUserArgsConfigFileName = FilePath::IncludeTrailingSeparator(
+ platform.GetAppDataDirectory())
+ + FilePath::IncludeTrailingSeparator(
+ GetPackageAppDataDirectory())
+ + FilePath::IncludeTrailingSeparator(_T("packager"))
+ + _T("jvmuserargs.cfg");
}
return FJVMUserArgsConfigFileName;
@@ -549,13 +608,15 @@
TString Package::GetAppCDSCacheDirectory() {
if (FAppCDSCacheDirectory.empty()) {
Platform& platform = Platform::GetInstance();
- FAppCDSCacheDirectory = FilePath::IncludeTrailingSeparater(platform.GetAppDataDirectory()) +
- FilePath::IncludeTrailingSeparater(GetPackageAppDataDirectory()) +
- _T("cache");
+ FAppCDSCacheDirectory = FilePath::IncludeTrailingSeparator(
+ platform.GetAppDataDirectory())
+ + FilePath::IncludeTrailingSeparator(
+ GetPackageAppDataDirectory()) + _T("cache");
Macros& macros = Macros::GetInstance();
FAppCDSCacheDirectory = macros.ExpandMacros(FAppCDSCacheDirectory);
- FAppCDSCacheDirectory = FilePath::FixPathForPlatform(FAppCDSCacheDirectory);
+ FAppCDSCacheDirectory =
+ FilePath::FixPathForPlatform(FAppCDSCacheDirectory);
}
return FAppCDSCacheDirectory;
@@ -566,8 +627,10 @@
if (FBootFields->FAppCDSCacheFileName.empty() == false) {
Macros& macros = Macros::GetInstance();
- FBootFields->FAppCDSCacheFileName = macros.ExpandMacros(FBootFields->FAppCDSCacheFileName);
- FBootFields->FAppCDSCacheFileName = FilePath::FixPathForPlatform(FBootFields->FAppCDSCacheFileName);
+ FBootFields->FAppCDSCacheFileName =
+ macros.ExpandMacros(FBootFields->FAppCDSCacheFileName);
+ FBootFields->FAppCDSCacheFileName =
+ FilePath::FixPathForPlatform(FBootFields->FAppCDSCacheFileName);
}
return FBootFields->FAppCDSCacheFileName;
@@ -615,7 +678,8 @@
Platform& platform = Platform::GetInstance();
Macros& macros = Macros::GetInstance();
TString jvmRuntimePath = macros.ExpandMacros(GetJVMRuntimeDirectory());
- FBootFields->FJVMLibraryFileName = platform.GetBundledJVMLibraryFileName(jvmRuntimePath);
+ FBootFields->FJVMLibraryFileName =
+ platform.GetBundledJVMLibraryFileName(jvmRuntimePath);
}
return FBootFields->FJVMLibraryFileName;
--- a/src/jdk.packager/share/native/library/common/Package.h Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/Package.h Wed Oct 17 13:50:11 2018 -0400
@@ -81,13 +81,13 @@
DebugState FDebugging;
OrderedMap<TString, TString> FJVMUserArgsOverrides;
- OrderedMap<TString, TString> FDefaultJVMUserArgs; // Contains JVM user defaults
- OrderedMap<TString, TString> FJVMUserArgs; // Contains a merge of JVM defaults and user overrides
-
+ // Contains JVM user defaults
+ OrderedMap<TString, TString> FDefaultJVMUserArgs;
+ // Contains a merge of JVM defaults and user overrides
+ OrderedMap<TString, TString> FJVMUserArgs;
Package(void);
- //void Initialize();
void MergeJVMDefaultsWithOverrides();
TString GetMainJar();
void SaveJVMUserArgOverrides(OrderedMap<TString, TString> Data);
@@ -140,4 +140,4 @@
DebugState Debugging();
};
-#endif //PACKAGE_H
+#endif // PACKAGE_H
--- a/src/jdk.packager/share/native/library/common/Platform.cpp Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/Platform.cpp Wed Oct 17 13:50:11 2018 -0400
@@ -36,24 +36,22 @@
StaticReadProperty<TString, &Environment::GetNewLine> Environment::NewLine;
-//--------------------------------------------------------------------------------------------------
+Platform& Platform::GetInstance() {
-Platform& Platform::GetInstance() {
- //Lock lock(true);
#ifdef WINDOWS
static WindowsPlatform instance;
#endif // WINDOWS
+
#ifdef LINUX
static LinuxPlatform instance;
#endif // LINUX
+
#ifdef MAC
static MacPlatform instance;
#endif // MAC
return instance;
}
-//--------------------------------------------------------------------------------------------------
-
Library::Library() {
Initialize();
@@ -86,7 +84,8 @@
void Library::LoadDependencies() {
if (FDependentLibraryNames != NULL && FDependenciesLibraries != NULL) {
- for (std::vector<TString>::const_iterator iterator = FDependentLibraryNames->begin();
+ for (std::vector<TString>::const_iterator iterator =
+ FDependentLibraryNames->begin();
iterator != FDependentLibraryNames->end(); iterator++) {
Library* library = new Library();
@@ -102,7 +101,8 @@
void Library::UnloadDependencies() {
if (FDependenciesLibraries != NULL) {
- for (std::vector<Library*>::const_iterator iterator = FDependenciesLibraries->begin();
+ for (std::vector<Library*>::const_iterator iterator =
+ FDependenciesLibraries->begin();
iterator != FDependenciesLibraries->end(); iterator++) {
Library* library = *iterator;
@@ -132,7 +132,8 @@
if (FModule == NULL) {
Messages& messages = Messages::GetInstance();
- platform.ShowMessage(messages.GetMessage(LIBRARY_NOT_FOUND), FileName);
+ platform.ShowMessage(messages.GetMessage(LIBRARY_NOT_FOUND),
+ FileName);
result = false;
} else {
fname = PlatformString(FileName).toStdString();
@@ -169,7 +170,8 @@
InitializeDependencies();
if (FDependentLibraryNames != NULL) {
- for (std::vector<TString>::const_iterator iterator = FDependentLibraryNames->begin();
+ for (std::vector<TString>::const_iterator iterator =
+ FDependentLibraryNames->begin();
iterator != FDependentLibraryNames->end(); iterator++) {
TString fileName = *iterator;
AddDependency(fileName);
@@ -177,4 +179,3 @@
}
}
}
-//--------------------------------------------------------------------------------------------------
--- a/src/jdk.packager/share/native/library/common/Platform.h Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/Platform.h Wed Oct 17 13:50:11 2018 -0400
@@ -120,13 +120,15 @@
// Config file sections
-#define CONFIG_SECTION_APPLICATION _T("CONFIG_SECTION_APPLICATION")
-#define CONFIG_SECTION_JVMOPTIONS _T("CONFIG_SECTION_JVMOPTIONS")
-#define CONFIG_SECTION_JVMUSEROPTIONS _T("CONFIG_SECTION_JVMUSEROPTIONS")
-#define CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS _T("CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS")
-#define CONFIG_SECTION_APPCDSJVMOPTIONS _T("CONFIG_SECTION_APPCDSJVMOPTIONS")
-#define CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS _T("CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS")
-#define CONFIG_SECTION_ARGOPTIONS _T("CONFIG_SECTION_ARGOPTIONS")
+#define CONFIG_SECTION_APPLICATION _T("CONFIG_SECTION_APPLICATION")
+#define CONFIG_SECTION_JVMOPTIONS _T("CONFIG_SECTION_JVMOPTIONS")
+#define CONFIG_SECTION_JVMUSEROPTIONS _T("CONFIG_SECTION_JVMUSEROPTIONS")
+#define CONFIG_SECTION_APPCDSJVMOPTIONS _T("CONFIG_SECTION_APPCDSJVMOPTIONS")
+#define CONFIG_SECTION_ARGOPTIONS _T("CONFIG_SECTION_ARGOPTIONS")
+#define CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS \
+ _T("CONFIG_SECTION_JVMUSEROVERRIDESOPTIONS")
+#define CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS \
+ _T("CONFIG_SECTION_APPCDSGENERATECACHEJVMOPTIONS")
// Config file keys.
#define CONFIG_VERSION _T("CONFIG_VERSION")
@@ -151,7 +153,9 @@
typedef void* Procedure;
-template <typename ObjectType, typename ValueType, ValueType (ObjectType::*getter)(void), void (ObjectType::*setter)(ValueType)>
+template <typename ObjectType, typename ValueType,
+ ValueType (ObjectType::*getter)(void),
+ void (ObjectType::*setter)(ValueType)>
class Property {
private:
ObjectType* FObject;
@@ -179,7 +183,8 @@
}
};
-template <typename ObjectType, typename ValueType, ValueType (ObjectType::*getter)(void)>
+template <typename ObjectType, typename ValueType,
+ ValueType (ObjectType::*getter)(void)>
class ReadProperty {
private:
ObjectType* FObject;
@@ -200,7 +205,8 @@
}
};
-template <typename ObjectType, typename ValueType, void (ObjectType::*setter)(ValueType)>
+template <typename ObjectType, typename ValueType,
+ void (ObjectType::*setter)(ValueType)>
class WriteProperty {
private:
ObjectType* FObject;
@@ -222,7 +228,8 @@
}
};
-template <typename ValueType, ValueType (*getter)(void), void (*setter)(ValueType)>
+template <typename ValueType,
+ ValueType (*getter)(void), void (*setter)(ValueType)>
class StaticProperty {
public:
StaticProperty() {
@@ -280,8 +287,8 @@
virtual bool IsRunning() = 0;
virtual bool Terminate() = 0;
- virtual bool Execute(const TString Application, const std::vector<TString> Arguments,
- bool AWait = false) = 0;
+ virtual bool Execute(const TString Application,
+ const std::vector<TString> Arguments, bool AWait = false) = 0;
virtual bool Wait() = 0;
virtual TProcessID GetProcessID() = 0;
@@ -350,9 +357,11 @@
ISectionalPropertyContainer(void) {}
virtual ~ISectionalPropertyContainer(void) {}
- virtual bool GetValue(const TString SectionName, const TString Key, TString& Value) = 0;
+ virtual bool GetValue(const TString SectionName,
+ const TString Key, TString& Value) = 0;
virtual bool ContainsSection(const TString SectionName) = 0;
- virtual bool GetSection(const TString SectionName, OrderedMap<TString, TString> &Data) = 0;
+ virtual bool GetSection(const TString SectionName,
+ OrderedMap<TString, TString> &Data) = 0;
};
class Environment {
@@ -376,7 +385,8 @@
enum DebugState {dsNone, dsNative, dsJava};
enum MessageResponse {mrOK, mrCancel};
-enum AppCDSState {cdsUninitialized, cdsDisabled, cdsEnabled, cdsAuto, cdsGenCache};
+enum AppCDSState {cdsUninitialized, cdsDisabled,
+ cdsEnabled, cdsAuto, cdsGenCache};
class Platform {
private:
@@ -400,21 +410,25 @@
public:
virtual void ShowMessage(TString title, TString description) = 0;
virtual void ShowMessage(TString description) = 0;
- virtual MessageResponse ShowResponseMessage(TString title, TString description) = 0;
-// virtual MessageResponse ShowResponseMessage(TString description) = 0;
+ virtual MessageResponse ShowResponseMessage(TString title,
+ TString description) = 0;
virtual void SetCurrentDirectory(TString Value) = 0;
// Caller must free result using delete[].
- virtual TCHAR* ConvertStringToFileSystemString(TCHAR* Source, bool &release) = 0;
+ virtual TCHAR* ConvertStringToFileSystemString(TCHAR* Source,
+ bool &release) = 0;
// Caller must free result using delete[].
- virtual TCHAR* ConvertFileSystemStringToString(TCHAR* Source, bool &release) = 0;
+ virtual TCHAR* ConvertFileSystemStringToString(TCHAR* Source,
+ bool &release) = 0;
// Returns:
- // Windows=C:\Users\<username>\AppData\Local\<app.identifier>\packager\jvmuserargs.cfg
+ // Windows=C:\Users\<username>\AppData\Local\<app.identifier>
+ // \packager\jvmuserargs.cfg
// Linux=~/.local/<app.identifier>/packager/jvmuserargs.cfg
- // Mac=~/Library/Application Support/<app.identifier>/packager/jvmuserargs.cfg
+ // Mac=~/Library/Application Support/<app.identifier>
+ // /packager/jvmuserargs.cfg
virtual TString GetAppDataDirectory() = 0;
virtual TString GetPackageAppDirectory() = 0;
@@ -435,7 +449,8 @@
virtual void FreeLibrary(Module Module) = 0;
virtual Procedure GetProcAddress(Module Module, std::string MethodName) = 0;
virtual std::vector<TString> GetLibraryImports(const TString FileName) = 0;
- virtual std::vector<TString> FilterOutRuntimeDependenciesForPlatform(std::vector<TString> Imports) = 0;
+ virtual std::vector<TString> FilterOutRuntimeDependenciesForPlatform(
+ std::vector<TString> Imports) = 0;
// Caller must free result.
virtual Process* CreateProcess() = 0;
@@ -450,7 +465,8 @@
virtual std::map<TString, TString> GetKeys() = 0;
virtual std::list<TString> LoadFromFile(TString FileName) = 0;
- virtual void SaveToFile(TString FileName, std::list<TString> Contents, bool ownerOnly) = 0;
+ virtual void SaveToFile(TString FileName,
+ std::list<TString> Contents, bool ownerOnly) = 0;
virtual TString GetTempDirectory() = 0;
@@ -518,4 +534,4 @@
explicit FileNotFoundException(const TString Message) : Exception(Message) {}
};
-#endif //PLATFORM_H
+#endif // PLATFORM_H
--- a/src/jdk.packager/share/native/library/common/PlatformString.cpp Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/PlatformString.cpp Wed Oct 17 13:50:11 2018 -0400
@@ -25,7 +25,7 @@
#include "PlatformString.h"
-#include "Java.h"
+#include "JavaTypes.h"
#include "Helpers.h"
#include <stdio.h>
@@ -37,8 +37,6 @@
#include "jni.h"
-//--------------------------------------------------------------------------------------------------
-
#ifdef MAC
StringToFileSystemString::StringToFileSystemString(const TString &value) {
FRelease = false;
@@ -58,8 +56,6 @@
}
#endif //MAC
-//--------------------------------------------------------------------------------------------------
-
#ifdef MAC
FileSystemStringToString::FileSystemStringToString(const TCHAR* value) {
bool release = false;
@@ -79,16 +75,14 @@
#endif //MAC
-//--------------------------------------------------------------------------------------------------
-
-
void PlatformString::initialize() {
FWideTStringToFree = NULL;
FLength = 0;
FData = NULL;
}
-void PlatformString::CopyString(char *Destination, size_t NumberOfElements, const char *Source) {
+void PlatformString::CopyString(char *Destination,
+ size_t NumberOfElements, const char *Source) {
#ifdef WINDOWS
strcpy_s(Destination, NumberOfElements, Source);
#endif //WINDOWS
@@ -101,7 +95,8 @@
}
}
-void PlatformString::CopyString(wchar_t *Destination, size_t NumberOfElements, const wchar_t *Source) {
+void PlatformString::CopyString(wchar_t *Destination,
+ size_t NumberOfElements, const wchar_t *Source) {
#ifdef WINDOWS
wcscpy_s(Destination, NumberOfElements, Source);
#endif //WINDOWS
@@ -129,7 +124,8 @@
}
// Owner must free the return value.
-MultibyteString PlatformString::WideStringToMultibyteString(const wchar_t* value) {
+MultibyteString PlatformString::WideStringToMultibyteString(
+ const wchar_t* value) {
MultibyteString result;
size_t count = 0;
@@ -142,7 +138,8 @@
if (count > 0) {
result.data = new char[count + 1];
- result.length = WideCharToMultiByte(CP_UTF8, 0, value, -1, result.data, (int)count, NULL, NULL);
+ result.length = WideCharToMultiByte(CP_UTF8, 0, value, -1,
+ result.data, (int)count, NULL, NULL);
#endif //WINDOWS
#ifdef POSIX
@@ -269,7 +266,6 @@
}
TString PlatformString::Format(const TString value, ...) {
-//std::string PlatformString::Format(std::string value, ...) {
TString result = value;
va_list arglist;
--- a/src/jdk.packager/share/native/library/common/PlatformString.h Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/PlatformString.h Wed Oct 17 13:50:11 2018 -0400
@@ -81,7 +81,9 @@
if (FSize != 0) {
FData = new T[FSize];
- Zero();
+ if (FData != NULL) {
+ Zero();
+ }
}
}
@@ -96,7 +98,8 @@
#ifdef MAC
-// StringToFileSystemString is a stack object. It's usage is simply inline to convert a
+// StringToFileSystemString is a stack object. It's usage is
+// simply inline to convert a
// TString to a file system string. Example:
//
// return dlopen(StringToFileSystemString(FileName), RTLD_LAZY);
@@ -119,7 +122,8 @@
};
-// FileSystemStringToString is a stack object. It's usage is simply inline to convert a
+// FileSystemStringToString is a stack object. It's usage is
+// simply inline to convert a
// file system string to a TString. Example:
//
// DynamicBuffer<TCHAR> buffer(MAX_PATH);
@@ -157,10 +161,12 @@
void initialize();
// Caller must free result using delete[].
- static void CopyString(char *Destination, size_t NumberOfElements, const char *Source);
+ static void CopyString(char *Destination,
+ size_t NumberOfElements, const char *Source);
// Caller must free result using delete[].
- static void CopyString(wchar_t *Destination, size_t NumberOfElements, const wchar_t *Source);
+ static void CopyString(wchar_t *Destination,
+ size_t NumberOfElements, const wchar_t *Source);
static WideString MultibyteStringToWideString(const char* value);
static MultibyteString WideStringToMultibyteString(const wchar_t* value);
@@ -207,4 +213,4 @@
};
-#endif //PLATFORMSTRING_H
+#endif // PLATFORMSTRING_H
--- a/src/jdk.packager/share/native/library/common/PlatformThread.cpp Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/PlatformThread.cpp Wed Oct 17 13:50:11 2018 -0400
@@ -40,38 +40,38 @@
self->Execute();
return 0;
}
-#endif //WINDOWS
+#endif // WINDOWS
#ifdef POSIX
void* PlatformThread::Do(void *Data) {
PlatformThread* self = (PlatformThread*)Data;
self->Execute();
pthread_exit(NULL);
}
-#endif //POSIX
+#endif // POSIX
void PlatformThread::Run() {
#ifdef WINDOWS
FHandle = CreateThread(NULL, 0, Do, this, 0, &FThreadID);
-#endif //WINDOWS
+#endif // WINDOWS
#ifdef POSIX
pthread_create(&FHandle, NULL, Do, this);
-#endif //POSIX
+#endif // POSIX
}
void PlatformThread::Terminate() {
#ifdef WINDOWS
CloseHandle(FHandle);
-#endif //WINDOWS
+#endif // WINDOWS
#ifdef POSIX
pthread_cancel(FHandle);
-#endif //POSIX
+#endif // POSIX
}
void PlatformThread::Wait() {
#ifdef WINDOWS
WaitForSingleObject(FHandle, INFINITE);
-#endif //WINDOWS
+#endif // WINDOWS
#ifdef POSIX
pthread_join(FHandle, NULL);
-#endif //POSIX
+#endif // POSIX
}
--- a/src/jdk.packager/share/native/library/common/PlatformThread.h Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/PlatformThread.h Wed Oct 17 13:50:11 2018 -0400
@@ -30,7 +30,7 @@
#ifdef POSIX
#include <pthread.h>
-#endif //POSIX
+#endif // POSIX
class PlatformThread {
@@ -39,14 +39,15 @@
HANDLE FHandle;
DWORD FThreadID;
static DWORD WINAPI Do(LPVOID lpParam);
-#endif //WINDOWS
+#endif // WINDOWS
#ifdef POSIX
pthread_t FHandle;
static void* Do(void *threadid);
-#endif //POSIX
+#endif // POSIX
protected:
- // Never call directly. Override this method and this is your code that runs in a thread.
+ // Never call directly. Override this method and this is your code
+ // that runs in a thread.
virtual void Execute() = 0;
public:
@@ -58,4 +59,4 @@
void Wait();
};
-#endif //PLATFORMTHREAD_H
+#endif // PLATFORMTHREAD_H
--- a/src/jdk.packager/share/native/library/common/PosixPlatform.cpp Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/PosixPlatform.cpp Wed Oct 17 13:50:11 2018 -0400
@@ -76,7 +76,8 @@
TString fixedName(name);
const TString chars("?:*<>/\\");
for (TString::const_iterator it = chars.begin(); it != chars.end(); it++) {
- fixedName.erase(std::remove(fixedName.begin(), fixedName.end(), *it), fixedName.end());
+ fixedName.erase(std::remove(fixedName.begin(),
+ fixedName.end(), *it), fixedName.end());
}
return fixedName;
}
@@ -118,10 +119,12 @@
return false;
}
-MessageResponse PosixPlatform::ShowResponseMessage(TString title, TString description) {
+MessageResponse PosixPlatform::ShowResponseMessage(TString title,
+ TString description) {
MessageResponse result = mrCancel;
- printf("%s %s (Y/N)\n", PlatformString(title).toPlatformString(), PlatformString(description).toPlatformString());
+ printf("%s %s (Y/N)\n", PlatformString(title).toPlatformString(),
+ PlatformString(description).toPlatformString());
fflush(stdout);
std::string input;
@@ -134,12 +137,6 @@
return result;
}
-//MessageResponse PosixPlatform::ShowResponseMessageB(TString description) {
-// TString appname = GetModuleFileName();
-// appname = FilePath::ExtractFileName(appname);
-// return ShowResponseMessage(appname, description);
-//}
-
void PosixPlatform::SetCurrentDirectory(TString Value) {
chdir(StringToFileSystemString(Value));
}
@@ -152,16 +149,19 @@
dlclose(AModule);
}
-Procedure PosixPlatform::GetProcAddress(Module AModule, std::string MethodName) {
+Procedure PosixPlatform::GetProcAddress(Module AModule,
+ std::string MethodName) {
return dlsym(AModule, PlatformString(MethodName));
}
-std::vector<std::string> PosixPlatform::GetLibraryImports(const TString FileName) {
+std::vector<std::string> PosixPlatform::GetLibraryImports(
+ const TString FileName) {
std::vector<TString> result;
return result;
}
-std::vector<TString> PosixPlatform::FilterOutRuntimeDependenciesForPlatform(std::vector<TString> Imports) {
+std::vector<TString> PosixPlatform::FilterOutRuntimeDependenciesForPlatform(
+ std::vector<TString> Imports) {
std::vector<TString> result;
return result;
}
@@ -170,9 +170,6 @@
return new PosixProcess();
}
-//--------------------------------------------------------------------------------------------------
-
-
PosixProcess::PosixProcess() : Process() {
FChildPID = 0;
FRunning = false;
@@ -207,19 +204,18 @@
if (FOutputHandle != 0 && IsRunning() == true) {
char buffer[4096];
- //select(p[0] + 1, &rfds, NULL, NULL, NULL);
ssize_t count = read(FOutputHandle, buffer, sizeof(buffer));
if (count == -1) {
if (errno == EINTR) {
- //continue;
+ // continue;
} else {
perror("read");
exit(1);
}
} else if (count == 0) {
- //break;
+ // break;
} else {
if (buffer[count] == EOF) {
buffer[count] = '\0';
@@ -254,16 +250,16 @@
if (status == 0) {
result = true;
- }
- else {
+ } else {
#ifdef DEBUG
- if (errno == EINVAL)
+ if (errno == EINVAL) {
printf("Kill error: The value of the sig argument is an invalid or unsupported signal number.");
- else if (errno == EPERM)
+ } else if (errno == EPERM) {
printf("Kill error: The process does not have permission to send the signal to any receiving process.");
- else if (errno == ESRCH)
+ } else if (errno == ESRCH) {
printf("Kill error: No process or process group can be found corresponding to that specified by pid.");
-#endif //DEBUG
+ }
+#endif // DEBUG
if (IsRunning() == true) {
status = kill(FChildPID, SIGKILL);
@@ -280,7 +276,8 @@
#define PIPE_READ 0
#define PIPE_WRITE 1
-bool PosixProcess::Execute(const TString Application, const std::vector<TString> Arguments, bool AWait) {
+bool PosixProcess::Execute(const TString Application,
+ const std::vector<TString> Arguments, bool AWait) {
bool result = false;
if (FRunning == false) {
@@ -289,8 +286,6 @@
int handles[2];
if (pipe(handles) == -1) {
- //perror("pipe");
- //exit(1);
return false;
}
@@ -305,35 +300,33 @@
sigaction(SIGQUIT, &sa, &savequit);
sigaddset(&sa.sa_mask, SIGCHLD);
sigprocmask(SIG_BLOCK, &sa.sa_mask, &saveblock);
-#endif //MAC
+#endif // MAC
FChildPID = fork();
- // PID returned by vfork is 0 for the child process and the PID of the child
- // process for the parent.
+ // PID returned by vfork is 0 for the child process and the
+ // PID of the child process for the parent.
if (FChildPID == -1) {
// Error
- TString message = PlatformString::Format(_T("Error: Unable to create process %s"), Application.data());
+ TString message = PlatformString::Format(
+ _T("Error: Unable to create process %s"),
+ Application.data());
throw Exception(message);
}
else if (FChildPID == 0) {
Cleanup();
TString command = Application;
- for (std::vector<TString>::const_iterator iterator = Arguments.begin(); iterator != Arguments.end(); iterator++) {
+ for (std::vector<TString>::const_iterator iterator =
+ Arguments.begin(); iterator != Arguments.end();
+ iterator++) {
command += TString(_T(" ")) + *iterator;
}
#ifdef DEBUG
printf("%s\n", command.data());
-#endif //DEBUG
-// dup2(FOutputHandle, STDOUT_FILENO);
-// dup2(FInputHandle, STDIN_FILENO);
-// close(FOutputHandle);
-// close(FInputHandle);
+#endif // DEBUG
dup2(handles[PIPE_READ], STDIN_FILENO);
dup2(handles[PIPE_WRITE], STDOUT_FILENO);
-// setvbuf(stdout,NULL,_IONBF,0);
-// setvbuf(stdin,NULL,_IONBF,0);
close(handles[PIPE_READ]);
close(handles[PIPE_WRITE]);
@@ -342,13 +335,6 @@
_exit(127);
} else {
-// close(handles[PIPE_READ]);
-// close(handles[PIPE_WRITE]);
-
-// close(output[1]);
-// int nbytes = read(output[0], foo, sizeof(foo));
-// printf("Output: (%.*s)\n", nbytes, foo);
-// wait(NULL);
FOutputHandle = handles[PIPE_READ];
FInputHandle = handles[PIPE_WRITE];
@@ -397,11 +383,11 @@
#ifdef WIFCONTINUED // Not all implementations support this
} else if (WIFCONTINUED(status)) {
printf("child continued\n");
-#endif //WIFCONTINUED
+#endif // WIFCONTINUED
} else { // Non-standard case -- may never happen
printf("Unexpected status (0x%x)\n", status);
}
-#endif //DEBUG
+#endif // DEBUG
if (wpid != -1) {
result = true;
@@ -425,4 +411,4 @@
return Process::GetOutput();
}
-#endif //POSIX
+#endif // POSIX
--- a/src/jdk.packager/share/native/library/common/PosixPlatform.h Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/PosixPlatform.h Wed Oct 17 13:50:11 2018 -0400
@@ -44,8 +44,8 @@
virtual ~PosixPlatform(void);
public:
- virtual MessageResponse ShowResponseMessage(TString title, TString description);
- //virtual MessageResponse ShowResponseMessageB(TString description);
+ virtual MessageResponse ShowResponseMessage(TString title,
+ TString description);
virtual void SetCurrentDirectory(TString Value);
@@ -54,7 +54,8 @@
virtual void FreeLibrary(Module AModule);
virtual Procedure GetProcAddress(Module AModule, std::string MethodName);
virtual std::vector<TString> GetLibraryImports(const TString FileName);
- virtual std::vector<TString> FilterOutRuntimeDependenciesForPlatform(std::vector<TString> Imports);
+ virtual std::vector<TString> FilterOutRuntimeDependenciesForPlatform(
+ std::vector<TString> Imports);
virtual Process* CreateProcess();
virtual TString GetTempDirectory();
@@ -74,7 +75,6 @@
void Cleanup();
bool ReadOutput();
- //static void ProcessOutput(Process *Instance, std::vector<TString> Output);
public:
PosixProcess();
@@ -82,13 +82,13 @@
virtual bool IsRunning();
virtual bool Terminate();
- virtual bool Execute(const TString Application, const std::vector<TString> Arguments,
- bool AWait = false);
+ virtual bool Execute(const TString Application,
+ const std::vector<TString> Arguments, bool AWait = false);
virtual bool Wait();
virtual TProcessID GetProcessID();
virtual void SetInput(TString Value);
virtual std::list<TString> GetOutput();
};
-#endif //POSIXPLATFORM_H
-#endif //POSX
+#endif // POSIXPLATFORM_H
+#endif // POSX
--- a/src/jdk.packager/share/native/library/common/PropertyFile.cpp Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/PropertyFile.cpp Wed Oct 17 13:50:11 2018 -0400
@@ -46,10 +46,6 @@
FData.Append(Value);
}
-//PropertyFile::PropertyFile(std::map<TString, TString> Value) : PropertyContainer() {
-// FData.Append(Value);
-//}
-
PropertyFile::PropertyFile(const PropertyFile &Value) {
FData = Value.FData;
FReadOnly = Value.FReadOnly;
@@ -76,12 +72,6 @@
FReadOnly = Value;
}
-//void PropertyFile::Assign(std::map<TString, TString> Value) {
-// FData.Clear();
-// FData.Assign(Value);
-// SetModified(true);
-//}
-
bool PropertyFile::LoadFromFile(const TString FileName) {
bool result = false;
Platform& platform = Platform::GetInstance();
@@ -89,7 +79,8 @@
std::list<TString> contents = platform.LoadFromFile(FileName);
if (contents.empty() == false) {
- for (std::list<TString>::const_iterator iterator = contents.begin(); iterator != contents.end(); iterator++) {
+ for (std::list<TString>::const_iterator iterator = contents.begin();
+ iterator != contents.end(); iterator++) {
TString line = *iterator;
TString name;
TString value;
@@ -172,10 +163,6 @@
return FData.Count();
}
-//std::vector<TString> PropertyFile::GetKeys() {
-// return FData.GetKeys();
-//}
-
OrderedMap<TString, TString> PropertyFile::GetData() {
return FData;
}
--- a/src/jdk.packager/share/native/library/common/PropertyFile.h Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/PropertyFile.h Wed Oct 17 13:50:11 2018 -0400
@@ -62,7 +62,7 @@
// IPropertyContainer
virtual bool GetValue(const TString Key, TString& Value);
virtual size_t GetCount();
- //virtual std::vector<TString> GetKeys();
+ // virtual std::vector<TString> GetKeys();
};
-#endif //PROPERTYFILE_H
+#endif // PROPERTYFILE_H
--- a/src/jdk.packager/share/native/library/common/WindowsPlatform.cpp Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/WindowsPlatform.cpp Wed Oct 17 13:50:11 2018 -0400
@@ -38,9 +38,9 @@
#include <vector>
#include <regex>
-#define WINDOWS_PACKAGER_TMP_DIR L"\\AppData\\LocalLow\\Sun\\Java\\Packager\\tmp"
+#define WINDOWS_PACKAGER_TMP_DIR \
+ L"\\AppData\\LocalLow\\Sun\\Java\\Packager\\tmp"
-//--------------------------------------------------------------------------------------------------
class Registry {
private:
@@ -68,7 +68,8 @@
bool result = false;
Close();
- if (RegOpenKeyEx(FKey, SubKey.data(), 0, KEY_READ, &FOpenKey) == ERROR_SUCCESS) {
+ if (RegOpenKeyEx(FKey, SubKey.data(), 0, KEY_READ, &FOpenKey) ==
+ ERROR_SUCCESS) {
result = true;
}
@@ -80,7 +81,7 @@
DWORD count;
if (RegQueryInfoKey(FOpenKey, NULL, NULL, NULL, NULL, NULL, NULL,
- &count, NULL, NULL, NULL, NULL) == ERROR_SUCCESS) {
+ &count, NULL, NULL, NULL, NULL) == ERROR_SUCCESS) {
DWORD length = 255;
DynamicBuffer<TCHAR> buffer(length);
@@ -114,10 +115,12 @@
DynamicBuffer<wchar_t> buffer(0);
length = 0;
- dwRet = RegQueryValueEx(FOpenKey, Name.data(), NULL, NULL, NULL, &length);
+ dwRet = RegQueryValueEx(FOpenKey, Name.data(), NULL, NULL, NULL,
+ &length);
if (dwRet == ERROR_MORE_DATA || dwRet == 0) {
buffer.Resize(length + 1);
- dwRet = RegQueryValueEx(FOpenKey, Name.data(), NULL, NULL, (LPBYTE)buffer.GetData(), &length);
+ dwRet = RegQueryValueEx(FOpenKey, Name.data(), NULL, NULL,
+ (LPBYTE)buffer.GetData(), &length);
result = buffer.GetData();
}
@@ -125,8 +128,6 @@
}
};
-//--------------------------------------------------------------------------------------------------
-
WindowsPlatform::WindowsPlatform(void) : Platform(), GenericPlatform() {
FMainThread = ::GetCurrentThreadId();
}
@@ -134,12 +135,14 @@
WindowsPlatform::~WindowsPlatform(void) {
}
-TCHAR* WindowsPlatform::ConvertStringToFileSystemString(TCHAR* Source, bool &release) {
+TCHAR* WindowsPlatform::ConvertStringToFileSystemString(TCHAR* Source,
+ bool &release) {
// Not Implemented.
return NULL;
}
-TCHAR* WindowsPlatform::ConvertFileSystemStringToString(TCHAR* Source, bool &release) {
+TCHAR* WindowsPlatform::ConvertFileSystemStringToString(TCHAR* Source,
+ bool &release) {
// Not Implemented.
return NULL;
}
@@ -165,7 +168,9 @@
}
void WindowsPlatform::ShowMessage(TString title, TString description) {
- MessageBox(NULL, description.data(), !title.empty() ? title.data() : description.data(), MB_ICONERROR | MB_OK);
+ MessageBox(NULL, description.data(),
+ !title.empty() ? title.data() : description.data(),
+ MB_ICONERROR | MB_OK);
}
void WindowsPlatform::ShowMessage(TString description) {
@@ -174,28 +179,24 @@
MessageBox(NULL, description.data(), appname.data(), MB_ICONERROR | MB_OK);
}
-MessageResponse WindowsPlatform::ShowResponseMessage(TString title, TString description) {
+MessageResponse WindowsPlatform::ShowResponseMessage(TString title,
+ TString description) {
MessageResponse result = mrCancel;
- if (::MessageBox(NULL, description.data(), title.data(), MB_OKCANCEL) == IDOK) {
+ if (::MessageBox(NULL, description.data(), title.data(), MB_OKCANCEL) ==
+ IDOK) {
result = mrOK;
}
return result;
}
-//MessageResponse WindowsPlatform::ShowResponseMessage(TString description) {
-// TString appname = GetModuleFileName();
-// appname = FilePath::ExtractFileName(appname);
-// return ShowResponseMessage(appname, description);
-//}
-
TString WindowsPlatform::GetBundledJVMLibraryFileName(TString RuntimePath) {
- TString result = FilePath::IncludeTrailingSeparater(RuntimePath) +
+ TString result = FilePath::IncludeTrailingSeparator(RuntimePath) +
_T("jre\\bin\\jli.dll");
if (FilePath::FileExists(result) == false) {
- result = FilePath::IncludeTrailingSeparater(RuntimePath) +
+ result = FilePath::IncludeTrailingSeparator(RuntimePath) +
_T("bin\\jli.dll");
}
@@ -206,7 +207,8 @@
IniFile *result = new IniFile();
if (result->LoadFromFile(FileName) == false) {
- // New property file format was not found, attempt to load old property file format.
+ // New property file format was not found,
+ // attempt to load old property file format.
Helpers::LoadOldConfigFile(FileName, result);
}
@@ -216,11 +218,13 @@
TString WindowsPlatform::GetModuleFileName() {
TString result;
DynamicBuffer<wchar_t> buffer(MAX_PATH);
- ::GetModuleFileName(NULL, buffer.GetData(), static_cast<DWORD>(buffer.GetSize()));
+ ::GetModuleFileName(NULL, buffer.GetData(),
+ static_cast<DWORD>(buffer.GetSize()));
while (ERROR_INSUFFICIENT_BUFFER == GetLastError()) {
buffer.Resize(buffer.GetSize() * 2);
- ::GetModuleFileName(NULL, buffer.GetData(), static_cast<DWORD>(buffer.GetSize()));
+ ::GetModuleFileName(NULL, buffer.GetData(),
+ static_cast<DWORD>(buffer.GetSize()));
}
result = buffer.GetData();
@@ -235,7 +239,8 @@
::FreeLibrary((HMODULE)AModule);
}
-Procedure WindowsPlatform::GetProcAddress(Module AModule, std::string MethodName) {
+Procedure WindowsPlatform::GetProcAddress(Module AModule,
+ std::string MethodName) {
return ::GetProcAddress((HMODULE)AModule, MethodName.c_str());
}
@@ -297,10 +302,11 @@
return false;
}
-SingleInstance::SingleInstance(TString& name_): BUF_SIZE(256), _name(name_), _hMapFile(NULL), _pBuf(NULL) {
+SingleInstance::SingleInstance(TString& name_): BUF_SIZE(256), _name(name_),
+ _hMapFile(NULL), _pBuf(NULL) {
_mutex = CreateMutex(NULL, TRUE, name_.data());
_lastError = GetLastError();
- _sharedMemoryName = _T("Local\\javapackager-") + _name;
+ _sharedMemoryName = _T("Local\\jpackager-") + _name;
}
SingleInstance::~SingleInstance() {
@@ -386,17 +392,20 @@
return result;
}
-std::vector<TString> WindowsPlatform::GetLibraryImports(const TString FileName) {
+std::vector<TString> WindowsPlatform::GetLibraryImports(
+ const TString FileName) {
std::vector<TString> result;
WindowsLibrary library(FileName);
result = library.GetImports();
return result;
}
-std::vector<TString> FilterList(std::vector<TString> &Items, std::wregex Pattern) {
+std::vector<TString> FilterList(std::vector<TString> &Items,
+ std::wregex Pattern) {
std::vector<TString> result;
- for (std::vector<TString>::iterator it = Items.begin(); it != Items.end(); ++it) {
+ for (std::vector<TString>::iterator it = Items.begin();
+ it != Items.end(); ++it) {
TString item = *it;
std::wsmatch match;
@@ -407,24 +416,28 @@
return result;
}
-std::vector<TString> WindowsPlatform::FilterOutRuntimeDependenciesForPlatform(std::vector<TString> Imports) {
- std::vector<TString> result;
-
+std::vector<TString> WindowsPlatform::FilterOutRuntimeDependenciesForPlatform(
+ std::vector<TString> Imports) {
+ std::vector<TString> result;
Package& package = Package::GetInstance();
Macros& macros = Macros::GetInstance();
TString runtimeDir = macros.ExpandMacros(package.GetJVMRuntimeDirectory());
- std::vector<TString> filelist = FilterList(Imports, std::wregex(_T("MSVCR.*.DLL"), std::regex_constants::icase));
+ std::vector<TString> filelist = FilterList(Imports,
+ std::wregex(_T("MSVCR.*.DLL"), std::regex_constants::icase));
- for (std::vector<TString>::iterator it = filelist.begin(); it != filelist.end(); ++it) {
+ for (std::vector<TString>::iterator it = filelist.begin();
+ it != filelist.end(); ++it) {
TString filename = *it;
- TString msvcr100FileName = FilePath::IncludeTrailingSeparater(runtimeDir) + _T("jre\\bin\\") + filename;
+ TString msvcr100FileName = FilePath::IncludeTrailingSeparator(
+ runtimeDir) + _T("jre\\bin\\") + filename;
if (FilePath::FileExists(msvcr100FileName) == true) {
result.push_back(msvcr100FileName);
break;
}
else {
- msvcr100FileName = FilePath::IncludeTrailingSeparater(runtimeDir) + _T("bin\\") + filename;
+ msvcr100FileName = FilePath::IncludeTrailingSeparator(runtimeDir)
+ + _T("bin\\") + filename;
if (FilePath::FileExists(msvcr100FileName) == true) {
result.push_back(msvcr100FileName);
@@ -457,16 +470,18 @@
}
#endif //DEBUG
-//--------------------------------------------------------------------------------------------------
-WindowsJavaUserPreferences::WindowsJavaUserPreferences(void) : JavaUserPreferences() {
+WindowsJavaUserPreferences::WindowsJavaUserPreferences(void) :
+ JavaUserPreferences() {
}
WindowsJavaUserPreferences::~WindowsJavaUserPreferences(void) {
}
-// Java Preferences API encodes it's strings, so we need to match what Java does to work with Java.
-// CAVEAT: Java also does unicode encoding which this doesn't do yet. Should be sufficient for jvm args.
+// Java Preferences API encodes it's strings, so we need to match what
+// Java does to work with Java.
+// CAVEAT: Java also does unicode encoding which this doesn't do yet.
+// Should be sufficient for jvm args.
// See WindowsPreferences.java toWindowsName()
TString ConvertStringToJavaEcodedString(TString Value) {
TString result;
@@ -499,8 +514,10 @@
return result;
}
-// Java Preferences API encodes it's strings, so we need to match what Java does to work with Java.
-// CAVEAT: Java also does unicode encoding which this doesn't do yet. Should be sufficient for jvm args.
+// Java Preferences API encodes it's strings,
+// so we need to match what Java does to work with Java.
+// CAVEAT: Java also does unicode encoding which this doesn't do yet.
+// Should be sufficient for jvm args.
// See WindowsPreferences.java toJavaName()
TString ConvertJavaEcodedStringToString(TString Value) {
TString result;
@@ -538,14 +555,16 @@
bool result = false;
TString lappid = Helpers::ConvertIdToFilePath(Appid);
lappid = ConvertStringToJavaEcodedString(Appid);
- TString registryKey = TString(_T("SOFTWARE\\JavaSoft\\Prefs\\")) + lappid + TString(_T("\\/J/V/M/User/Options"));
+ TString registryKey = TString(_T("SOFTWARE\\JavaSoft\\Prefs\\"))
+ + lappid + TString(_T("\\/J/V/M/User/Options"));
Registry registry(HKEY_CURRENT_USER);
if (registry.Open(registryKey) == true) {
std::list<TString> keys = registry.GetKeys();
OrderedMap<TString, TString> mapOfKeysAndValues;
- for (std::list<TString>::const_iterator iterator = keys.begin(); iterator != keys.end(); iterator++) {
+ for (std::list<TString>::const_iterator iterator = keys.begin();
+ iterator != keys.end(); iterator++) {
TString key = *iterator;
TString value = registry.ReadString(key);
key = ConvertJavaEcodedStringToString(key);
@@ -563,11 +582,9 @@
return result;
}
-//--------------------------------------------------------------------------------------------------
-
FileHandle::FileHandle(std::wstring FileName) {
- FHandle = ::CreateFile(FileName.data(), GENERIC_READ, FILE_SHARE_READ, NULL,
- OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
+ FHandle = ::CreateFile(FileName.data(), GENERIC_READ, FILE_SHARE_READ,
+ NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
}
FileHandle::~FileHandle() {
@@ -636,9 +653,10 @@
FileData fileData(mapping.GetHandle());
if (fileData.IsValid() == true) {
- PIMAGE_DOS_HEADER dosHeader = (PIMAGE_DOS_HEADER)fileData.GetBaseAddress();
- PIMAGE_FILE_HEADER pImgFileHdr = (PIMAGE_FILE_HEADER)fileData.GetBaseAddress();
-
+ PIMAGE_DOS_HEADER dosHeader =
+ (PIMAGE_DOS_HEADER)fileData.GetBaseAddress();
+ PIMAGE_FILE_HEADER pImgFileHdr =
+ (PIMAGE_FILE_HEADER)fileData.GetBaseAddress();
if (dosHeader->e_magic == IMAGE_DOS_SIGNATURE) {
result = DumpPEFile(dosHeader);
}
@@ -656,7 +674,8 @@
PIMAGE_SECTION_HEADER result = 0;
PIMAGE_SECTION_HEADER section = IMAGE_FIRST_SECTION(pNTHeader);
- for (unsigned index = 0; index < pNTHeader->FileHeader.NumberOfSections; index++, section++) {
+ for (unsigned index = 0; index < pNTHeader->FileHeader.NumberOfSections;
+ index++, section++) {
// Is the RVA is within this section?
if ((rva >= section->VirtualAddress) &&
(rva < (section->VirtualAddress + section->Misc.VirtualSize))) {
@@ -667,12 +686,15 @@
return result;
}
-LPVOID WindowsLibrary::GetPtrFromRVA(DWORD rva, PIMAGE_NT_HEADERS pNTHeader, DWORD imageBase) {
+LPVOID WindowsLibrary::GetPtrFromRVA(DWORD rva, PIMAGE_NT_HEADERS pNTHeader,
+ DWORD imageBase) {
LPVOID result = 0;
- PIMAGE_SECTION_HEADER pSectionHdr = GetEnclosingSectionHeader(rva, pNTHeader);
+ PIMAGE_SECTION_HEADER pSectionHdr = GetEnclosingSectionHeader(rva,
+ pNTHeader);
if (pSectionHdr != NULL) {
- INT delta = (INT)(pSectionHdr->VirtualAddress-pSectionHdr->PointerToRawData);
+ INT delta = (INT)(
+ pSectionHdr->VirtualAddress-pSectionHdr->PointerToRawData);
DWORD_PTR dwp = (DWORD_PTR) (imageBase + rva - delta);
result = reinterpret_cast<LPVOID>(dwp); // VS2017 - FIXME
}
@@ -680,29 +702,38 @@
return result;
}
-std::vector<TString> WindowsLibrary::GetImportsSection(DWORD base, PIMAGE_NT_HEADERS pNTHeader) {
+std::vector<TString> WindowsLibrary::GetImportsSection(DWORD base,
+ PIMAGE_NT_HEADERS pNTHeader) {
std::vector<TString> result;
- // Look up where the imports section is located. Normally in the .idata section,
+ // Look up where the imports section is located. Normally in
+ // the .idata section,
// but not necessarily so. Therefore, grab the RVA from the data dir.
- DWORD importsStartRVA = pNTHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress;
+ DWORD importsStartRVA = pNTHeader->OptionalHeader.DataDirectory[
+ IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress;
if (importsStartRVA != NULL) {
// Get the IMAGE_SECTION_HEADER that contains the imports. This is
// usually the .idata section, but doesn't have to be.
- PIMAGE_SECTION_HEADER pSection = GetEnclosingSectionHeader(importsStartRVA, pNTHeader);
+ PIMAGE_SECTION_HEADER pSection =
+ GetEnclosingSectionHeader(importsStartRVA, pNTHeader);
if (pSection != NULL) {
- PIMAGE_IMPORT_DESCRIPTOR importDesc = (PIMAGE_IMPORT_DESCRIPTOR)GetPtrFromRVA(importsStartRVA, pNTHeader,base);
+ PIMAGE_IMPORT_DESCRIPTOR importDesc =
+ (PIMAGE_IMPORT_DESCRIPTOR)GetPtrFromRVA(
+ importsStartRVA, pNTHeader,base);
if (importDesc != NULL) {
while (true)
{
// See if we've reached an empty IMAGE_IMPORT_DESCRIPTOR
- if ((importDesc->TimeDateStamp == 0) && (importDesc->Name == 0))
+ if ((importDesc->TimeDateStamp == 0) &&
+ (importDesc->Name == 0)) {
break;
+ }
- std::string filename = (char*)GetPtrFromRVA(importDesc->Name, pNTHeader, base);
+ std::string filename = (char*)GetPtrFromRVA(
+ importDesc->Name, pNTHeader, base);
result.push_back(PlatformString(filename));
importDesc++; // advance to next IMAGE_IMPORT_DESCRIPTOR
}
@@ -724,7 +755,8 @@
// Verify that the e_lfanew field gave us a reasonable
// pointer and the PE signature.
- // TODO: To really fix JDK-8131321 this condition needs to be changed. There is a matching change
+ // TODO: To really fix JDK-8131321 this condition needs to be changed.
+ // There is a matching change
// in JavaVirtualMachine.cpp that also needs to be changed.
if (pNTHeader->Signature == IMAGE_NT_SIGNATURE) {
DWORD base = (DWORD)(dwDosHeaders);
@@ -734,8 +766,6 @@
return result;
}
-//--------------------------------------------------------------------------------------------------
-
#include <TlHelp32.h>
WindowsJob::WindowsJob() {
@@ -754,17 +784,21 @@
if (FHandle == NULL)
{
- ::MessageBox( 0, _T("Could not create job object"), _T("TEST"), MB_OK);
+ ::MessageBox( 0, _T("Could not create job object"),
+ _T("TEST"), MB_OK);
}
else
{
JOBOBJECT_EXTENDED_LIMIT_INFORMATION jeli = { 0 };
- // Configure all child processes associated with the job to terminate when the
- jeli.BasicLimitInformation.LimitFlags = JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE;
- if (0 == SetInformationJobObject(FHandle, JobObjectExtendedLimitInformation, &jeli, sizeof(jeli)))
- {
- ::MessageBox( 0, _T("Could not SetInformationJobObject"), _T("TEST"), MB_OK);
+ // Configure all child processes associated with
+ // the job to terminate when the
+ jeli.BasicLimitInformation.LimitFlags =
+ JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE;
+ if (0 == SetInformationJobObject(FHandle,
+ JobObjectExtendedLimitInformation, &jeli, sizeof(jeli))) {
+ ::MessageBox( 0, _T("Could not SetInformationJobObject"),
+ _T("TEST"), MB_OK);
}
}
}
@@ -820,7 +854,8 @@
return result;
}
-bool WindowsProcess::Execute(const TString Application, const std::vector<TString> Arguments, bool AWait) {
+bool WindowsProcess::Execute(const TString Application,
+ const std::vector<TString> Arguments, bool AWait) {
bool result = false;
if (FRunning == false) {
@@ -833,19 +868,24 @@
TString command = Application;
- for (std::vector<TString>::const_iterator iterator = Arguments.begin(); iterator != Arguments.end(); iterator++) {
+ for (std::vector<TString>::const_iterator iterator = Arguments.begin();
+ iterator != Arguments.end(); iterator++) {
command += TString(_T(" ")) + *iterator;
}
if (::CreateProcess(Application.data(), (wchar_t*)command.data(), NULL,
NULL, FALSE, 0, NULL, NULL, &startupInfo, &FProcessInfo) == FALSE) {
- TString message = PlatformString::Format(_T("Error: Unable to create process %s"), Application.data());
+ TString message = PlatformString::Format(
+ _T("Error: Unable to create process %s"),
+ Application.data());
throw Exception(message);
}
else {
if (FJob.GetHandle() != NULL) {
- if (::AssignProcessToJobObject(FJob.GetHandle(), FProcessInfo.hProcess) == 0) {
- // Failed to assign process to job. It doesn't prevent anything from continuing so continue.
+ if (::AssignProcessToJobObject(FJob.GetHandle(),
+ FProcessInfo.hProcess) == 0) {
+ // Failed to assign process to job. It doesn't prevent
+ // anything from continuing so continue.
}
}
@@ -874,12 +914,12 @@
bool WindowsProcess::ReadOutput() {
bool result = false;
- //TODO implement
+ // TODO implement
return result;
}
void WindowsProcess::SetInput(TString Value) {
- //TODO implement
+ // TODO implement
}
std::list<TString> WindowsProcess::GetOutput() {
@@ -887,4 +927,4 @@
return Process::GetOutput();
}
-#endif //WINDOWS
+#endif // WINDOWS
--- a/src/jdk.packager/share/native/library/common/WindowsPlatform.h Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/WindowsPlatform.h Wed Oct 17 13:50:11 2018 -0400
@@ -74,7 +74,8 @@
};
#pragma warning( push )
-#pragma warning( disable : 4250 ) // C4250 - 'class1' : inherits 'class2::member'
+// C4250 - 'class1' : inherits 'class2::member'
+#pragma warning( disable : 4250 )
class WindowsPlatform : virtual public Platform, GenericPlatform {
private:
DWORD FMainThread;
@@ -83,12 +84,15 @@
WindowsPlatform(void);
virtual ~WindowsPlatform(void);
- virtual TCHAR* ConvertStringToFileSystemString(TCHAR* Source, bool &release);
- virtual TCHAR* ConvertFileSystemStringToString(TCHAR* Source, bool &release);
+ virtual TCHAR* ConvertStringToFileSystemString(TCHAR* Source,
+ bool &release);
+ virtual TCHAR* ConvertFileSystemStringToString(TCHAR* Source,
+ bool &release);
virtual void ShowMessage(TString title, TString description);
virtual void ShowMessage(TString description);
- virtual MessageResponse ShowResponseMessage(TString title, TString description);
+ virtual MessageResponse ShowResponseMessage(TString title,
+ TString description);
//virtual MessageResponse ShowResponseMessage(TString description);
virtual void SetCurrentDirectory(TString Value);
@@ -103,7 +107,8 @@
virtual void FreeLibrary(Module AModule);
virtual Procedure GetProcAddress(Module AModule, std::string MethodName);
virtual std::vector<TString> GetLibraryImports(const TString FileName);
- virtual std::vector<TString> FilterOutRuntimeDependenciesForPlatform(std::vector<TString> Imports);
+ virtual std::vector<TString> FilterOutRuntimeDependenciesForPlatform(
+ std::vector<TString> Imports);
virtual Process* CreateProcess();
@@ -176,9 +181,12 @@
// Given an RVA, look up the section header that encloses it and return a
// pointer to its IMAGE_SECTION_HEADER
- static PIMAGE_SECTION_HEADER GetEnclosingSectionHeader(DWORD rva, PIMAGE_NT_HEADERS pNTHeader);
- static LPVOID GetPtrFromRVA(DWORD rva, PIMAGE_NT_HEADERS pNTHeader, DWORD imageBase);
- static std::vector<TString> GetImportsSection(DWORD base, PIMAGE_NT_HEADERS pNTHeader);
+ static PIMAGE_SECTION_HEADER GetEnclosingSectionHeader(DWORD rva,
+ PIMAGE_NT_HEADERS pNTHeader);
+ static LPVOID GetPtrFromRVA(DWORD rva, PIMAGE_NT_HEADERS pNTHeader,
+ DWORD imageBase);
+ static std::vector<TString> GetImportsSection(DWORD base,
+ PIMAGE_NT_HEADERS pNTHeader);
static std::vector<TString> DumpPEFile(PIMAGE_DOS_HEADER dosHeader);
public:
@@ -216,8 +224,8 @@
virtual bool IsRunning();
virtual bool Terminate();
- virtual bool Execute(const TString Application, const std::vector<TString> Arguments,
- bool AWait = false);
+ virtual bool Execute(const TString Application,
+ const std::vector<TString> Arguments, bool AWait = false);
virtual bool Wait();
virtual TProcessID GetProcessID();
virtual void SetInput(TString Value);
@@ -227,6 +235,6 @@
-#endif //WINDOWSPLATFORM_H
+#endif // WINDOWSPLATFORM_H
#endif // WINDOWS
--- a/src/jdk.packager/share/native/library/common/main.cpp Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/share/native/library/common/main.cpp Wed Oct 17 13:50:11 2018 -0400
@@ -44,13 +44,16 @@
#include <stdlib.h>
/*
-This is the launcher program for application packaging on Windows, Mac and Linux.
+This is the launcher program for application packaging on Windows, Mac,
+ and Linux.
Basic approach:
- - Launcher executable loads packager.dll/libpackager.dylib/libpackager.so and calls start_launcher below.
- - Reads app/package.cfg or Info.plist or app/<appname>.cfg for application launch configuration
- (package.cfg is property file).
- - Load JVM with requested JVM settings (bundled client JVM if availble, server or installed JVM otherwise).
+ - Launcher executable loads packager.dll/libpackager.dylib/libpackager.so
+ and calls start_launcher below.
+ - Reads app/package.cfg or Info.plist or app/<appname>.cfg for application
+ launch configuration (package.cfg is property file).
+ - Load JVM with requested JVM settings (bundled client JVM if availble,
+ server or installed JVM otherwise).
- Wait for JVM to exit and then exit from Main
- To debug application by passing command line argument.
- Application folder is added to the library path (so LoadLibrary()) works.
@@ -65,7 +68,8 @@
extern "C" {
#ifdef WINDOWS
- BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
+ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason,
+ LPVOID lpvReserved) {
return true;
}
#endif //WINDOWS
@@ -91,11 +95,13 @@
parentProcess = false;
}
#ifdef DEBUG
- // There is a compiler bug on Mac when overloading ShowResponseMessage.
+ // There is a compiler bug on Mac when overloading
+ // ShowResponseMessage.
else if (argument == _T("-nativedebug")) {
if (platform.ShowResponseMessage(_T("Test"),
- TString(_T("Would you like to debug?\n\nProcessID: ")) +
- PlatformString(platform.GetProcessID()).toString()) == mrOK) {
+ TString(_T("Would you like to debug?\n\nProcessID: "))
+ + PlatformString(platform.GetProcessID()).toString())
+ == mrOK) {
while (platform.IsNativeDebuggerPresent() == false) {
}
}
@@ -112,8 +118,9 @@
if (package.CheckForSingleInstance()) {
// reactivate the first instance if the process Id is valid
platform.reactivateAnotherInstance();
- if (package.GetArgs().size() > 0 && platform.GetSingleInstanceProcessId() != 0) {
- // if user specified args, try to pass them to the first instance
+ if (package.GetArgs().size() > 0 &&
+ platform.GetSingleInstanceProcessId() != 0) {
+ // if user specified args, pass them to the first instance
return RunVM(SINGLE_INSTANCE_NOTIFICATION_LAUNCH);
}
return true;
@@ -127,31 +134,32 @@
}
case cdsGenCache: {
- TString cacheDirectory = package.GetAppCDSCacheDirectory();
-
- if (FilePath::DirectoryExists(cacheDirectory) == false) {
- FilePath::CreateDirectory(cacheDirectory, true);
- }
- else {
- TString cacheFileName = package.GetAppCDSCacheFileName();
+ TString cacheDirectory = package.GetAppCDSCacheDirectory();
- if (FilePath::FileExists(cacheFileName) == true) {
- FilePath::DeleteFile(cacheFileName);
- }
+ if (FilePath::DirectoryExists(cacheDirectory) == false) {
+ FilePath::CreateDirectory(cacheDirectory, true);
+ } else {
+ TString cacheFileName =
+ package.GetAppCDSCacheFileName();
+ if (FilePath::FileExists(cacheFileName) == true) {
+ FilePath::DeleteFile(cacheFileName);
}
+ }
- break;
- }
+ break;
+ }
case cdsAuto: {
TString cacheFileName = package.GetAppCDSCacheFileName();
- if (parentProcess == true && FilePath::FileExists(cacheFileName) == false) {
+ if (parentProcess == true &&
+ FilePath::FileExists(cacheFileName) == false) {
AutoFreePtr<Process> process = platform.CreateProcess();
std::vector<TString> args;
args.push_back(_T("-Xappcds:generatecache"));
args.push_back(_T("-Xapp:child"));
- process->Execute(platform.GetModuleFileName(), args, true);
+ process->Execute(
+ platform.GetModuleFileName(), args, true);
if (FilePath::FileExists(cacheFileName) == false) {
// Cache does not exist after trying to generate it,
@@ -167,37 +175,38 @@
}
// Validation
- {
- switch (platform.GetAppCDSState()) {
- case cdsDisabled:
- case cdsGenCache: {
- // Do nothing.
- break;
- }
+ switch (platform.GetAppCDSState()) {
+ case cdsDisabled:
+ case cdsGenCache: {
+ // Do nothing.
+ break;
+ }
- case cdsEnabled:
- case cdsAuto: {
- TString cacheFileName = package.GetAppCDSCacheFileName();
+ case cdsEnabled:
+ case cdsAuto: {
+ TString cacheFileName =
+ package.GetAppCDSCacheFileName();
- if (FilePath::FileExists(cacheFileName) == false) {
- Messages& messages = Messages::GetInstance();
- TString message = PlatformString::Format(messages.GetMessage(APPCDS_CACHE_FILE_NOT_FOUND), cacheFileName.data());
- throw FileNotFoundException(message);
- }
- break;
- }
+ if (FilePath::FileExists(cacheFileName) == false) {
+ Messages& messages = Messages::GetInstance();
+ TString message = PlatformString::Format(
+ messages.GetMessage(
+ APPCDS_CACHE_FILE_NOT_FOUND),
+ cacheFileName.data());
+ throw FileNotFoundException(message);
+ }
+ break;
+ }
- case cdsUninitialized: {
- // throw Exception(_T("Internal Error")); // VS2017
- platform.ShowMessage(_T("Internal Error"));
- break;
- }
+ case cdsUninitialized: {
+ platform.ShowMessage(_T("Internal Error"));
+ break;
}
}
+
// Run App
result = RunVM(USER_APP_LAUNCH);
- }
- catch (FileNotFoundException &e) {
+ } catch (FileNotFoundException &e) {
platform.ShowMessage(e.GetMessage());
}
--- a/src/jdk.packager/unix/scripts/jpackager Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/unix/scripts/jpackager Wed Oct 17 13:50:11 2018 -0400
@@ -1,6 +1,6 @@
#!/bin/bash
#
-# Java Packager tool execution script for Linux and OS X.
+# Java Packager tool execution script for Linux and MacOS.
#
# Default values.
@@ -99,5 +99,5 @@
# This is similar to "$@" except we had to strip out some arguments
# that we don't want to be passed to the Java Packager.
eval exec "$JAVA_CMD" ${DEBUG} ${MEMORY} ${JAVA_ARGS} \
- -m jdk.packager/jdk.packager.Main $args
-
\ No newline at end of file
+ -m jdk.packager/jdk.packager.main.Main $args
+
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/builders/windows/WindowsAppImageBuilder.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/builders/windows/WindowsAppImageBuilder.java Wed Oct 17 13:50:11 2018 -0400
@@ -25,7 +25,6 @@
package jdk.packager.internal.builders.windows;
-
import jdk.packager.internal.BundlerParamInfo;
import jdk.packager.internal.Log;
import jdk.packager.internal.RelativeFileSet;
@@ -34,6 +33,7 @@
import jdk.packager.internal.resources.windows.WinResources;
import jdk.packager.internal.windows.WindowsBundlerParam;
import jdk.packager.internal.builders.AbstractAppImageBuilder;
+import jdk.packager.internal.windows.WindowsDefender;
import java.io.File;
import java.io.FileOutputStream;
@@ -62,8 +62,6 @@
import jdk.packager.internal.Arguments;
import static jdk.packager.internal.StandardBundlerParam.*;
-import jdk.packager.internal.windows.WindowsDefender;
-
public class WindowsAppImageBuilder extends AbstractAppImageBuilder {
@@ -501,11 +499,6 @@
}
@Override
- protected String getCacheLocation(Map<String, ? super Object> params) {
- return "$CACHEDIR/";
- }
-
- @Override
public String getPlatformSpecificModulesFile() {
return MODULES_FILENAME;
}
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/builders/windows/WindowsAppImageBuilder.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/builders/windows/WindowsAppImageBuilder.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
param.rebrand-executable.name = Rebrand Launcher
param.rebrand-executable.description = Update the launcher with the application icon and update ownership information.
@@ -16,4 +42,4 @@
message.config-save-location=Config files are saved to {0}. Use them to customize package.
message.potential.windows.defender.issue=Warning: Windows Defender may prevent the Java Packager from functioning. If there is an issue, it can be addressed by either disabling realtime monitoring, or adding an exclusion for the directory "{0}".
-resource.executable-properties-template=Template for creating executable properties file.
\ No newline at end of file
+resource.executable-properties-template=Template for creating executable properties file.
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/builders/windows/WindowsAppImageBuilder_ja.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/builders/windows/WindowsAppImageBuilder_ja.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
param.rebrand-executable.name = \u30E9\u30F3\u30C1\u30E3\u306E\u30EA\u30D6\u30E9\u30F3\u30C9
param.rebrand-executable.description = \u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30A2\u30A4\u30B3\u30F3\u3092\u542B\u3080\u30E9\u30F3\u30C1\u30E3\u304A\u3088\u3073\u6240\u6709\u8005\u60C5\u5831\u3092\u66F4\u65B0\u3057\u307E\u3059\u3002
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/builders/windows/WindowsAppImageBuilder_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/builders/windows/WindowsAppImageBuilder_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
param.rebrand-executable.name = \u66F4\u6539\u542F\u52A8\u7A0B\u5E8F\u54C1\u724C
param.rebrand-executable.description = \u4F7F\u7528\u5E94\u7528\u7A0B\u5E8F\u56FE\u6807\u66F4\u65B0\u542F\u52A8\u7A0B\u5E8F\u5E76\u66F4\u65B0\u6240\u6709\u6743\u4FE1\u606F\u3002
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinAppBundler.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinAppBundler.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=Windows Application Image
bundler.description=A Directory based image of a windows Application with an optionally co-bundled JRE. Used as a base for the Installer bundlers
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinAppBundler_ja.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinAppBundler_ja.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=Windows\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30A4\u30E1\u30FC\u30B8
bundler.description=\u30AA\u30D7\u30B7\u30E7\u30F3\u3067JRE\u304C\u30D0\u30F3\u30C9\u30EB\u3055\u308C\u3066\u3044\u308BWindows\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u30FB\u30D9\u30FC\u30B9\u306E\u30A4\u30E1\u30FC\u30B8\u3002\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9\u30FB\u30D0\u30F3\u30C9\u30E9\u306E\u30D9\u30FC\u30B9\u3068\u3057\u3066\u4F7F\u7528\u3055\u308C\u307E\u3059
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinAppBundler_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinAppBundler_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=Windows \u5E94\u7528\u7A0B\u5E8F\u6620\u50CF
bundler.description=\u4E00\u4E2A\u57FA\u4E8E\u76EE\u5F55\u7684 Windows \u5E94\u7528\u7A0B\u5E8F\u6620\u50CF, \u53EF\u4EE5\u9009\u62E9\u6027\u5730\u5E26\u6709\u5171\u540C\u6253\u5305\u7684 JRE\u3002\u7528\u4F5C\u5B89\u88C5\u7A0B\u5E8F\u6253\u5305\u7A0B\u5E8F\u7684\u57FA\u7840
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinExeBundler.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinExeBundler.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=EXE Installer
bundler.description=Microsoft Windows EXE Installer, via InnoIDE.
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinLauncher.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinLauncher.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
Comments=COMMENTS
CompanyName=COMPANY_NAME
FileDescription=FILE_DESCRIPTION
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinMsiBundler.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinMsiBundler.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=MSI Installer
bundler.description=Microsoft Windows MSI Installer, via WiX.
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinMsiBundler_ja.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinMsiBundler_ja.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=MSI\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9
bundler.description=WiX\u3092\u4F7F\u7528\u3057\u305FMicrosoft Windows MSI\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9\u3002
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinMsiBundler_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WinMsiBundler_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
bundler.name=MSI \u5B89\u88C5\u7A0B\u5E8F
bundler.description=Microsoft Windows MSI \u5B89\u88C5\u7A0B\u5E8F, \u901A\u8FC7 WiX\u3002
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WindowsBundlerParam.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WindowsBundlerParam.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
param.menu-group.name=Menu Group
param.menu-group.description=The Start Menu group this application should be placed in
param.menu-group.default=Unknown
@@ -14,8 +40,5 @@
param.registry-name.name=Registry Name
param.registry-name.description=The name of the application for registry references. Default is the Application Name with only alphanumerics, dots, and dashes (no whitespace).
-param.runtime.name=JRE
-param.runtime.description=The Java Runtime to co-bundle. The default value is the current JRE running the bundler. A value of null will cause no JRE to be co-bundled and the system JRE will be used to launch the application.
-
param.installdir-chooser.name=Install Directory Chooser
param.installdir-chooser.description=Adds a dialog to let the user choose a directory where the product will be installed.
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WindowsBundlerParam_ja.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WindowsBundlerParam_ja.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
param.menu-group.name=\u30E1\u30CB\u30E5\u30FC\u30FB\u30B0\u30EB\u30FC\u30D7
param.menu-group.description=\u3053\u306E\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3092\u914D\u7F6E\u3059\u308B\u5FC5\u8981\u304C\u3042\u308B\u8D77\u52D5\u30E1\u30CB\u30E5\u30FC\u30FB\u30B0\u30EB\u30FC\u30D7
param.menu-group.default=\u4E0D\u660E
@@ -14,8 +40,5 @@
param.registry-name.name=\u30EC\u30B8\u30B9\u30C8\u30EA\u540D
param.registry-name.description=\u30EC\u30B8\u30B9\u30C8\u30EA\u53C2\u7167\u7528\u306E\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u540D\u524D\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u306F\u3001\u82F1\u6570\u5B57\u3001\u30C9\u30C3\u30C8\u304A\u3088\u3073\u30C0\u30C3\u30B7\u30E5(\u7A7A\u767D\u306A\u3057)\u306E\u307F\u3092\u4F7F\u7528\u3057\u305F\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u540D\u3067\u3059\u3002
-param.runtime.name=JRE
-param.runtime.description=\u30D0\u30F3\u30C9\u30EB\u3059\u308BJava\u30E9\u30F3\u30BF\u30A4\u30E0\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u306F\u3001\u30D0\u30F3\u30C9\u30E9\u3092\u5B9F\u884C\u3057\u3066\u3044\u308B\u73FE\u5728\u306EJRE\u3067\u3059\u3002\u5024\u304Cnull\u306E\u5834\u5408\u3001JRE\u306F\u30D0\u30F3\u30C9\u30EB\u3055\u308C\u305A\u3001\u30B7\u30B9\u30C6\u30E0\u306EJRE\u304C\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u8D77\u52D5\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002
-
param.installdir-chooser.name=\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u30FB\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u9078\u629E
param.installdir-chooser.description=\u30E6\u30FC\u30B6\u30FC\u304C\u88FD\u54C1\u3092\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3059\u308B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u9078\u629E\u3059\u308B\u305F\u3081\u306E\u30C0\u30A4\u30A2\u30ED\u30B0\u3092\u8FFD\u52A0\u3057\u307E\u3059\u3002
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WindowsBundlerParam_zh_CN.properties Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/WindowsBundlerParam_zh_CN.properties Wed Oct 17 13:50:11 2018 -0400
@@ -1,3 +1,29 @@
+#
+# Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+#
+
param.menu-group.name=\u83DC\u5355\u7EC4
param.menu-group.description=\u5E94\u5C06\u6B64\u5E94\u7528\u7A0B\u5E8F\u653E\u7F6E\u5230\u7684\u5F00\u59CB\u83DC\u5355\u7EC4
param.menu-group.default=\u672A\u77E5
@@ -14,8 +40,5 @@
param.registry-name.name=\u6CE8\u518C\u8868\u540D\u79F0
param.registry-name.description=\u7528\u4E8E\u6CE8\u518C\u8868\u5F15\u7528\u7684\u5E94\u7528\u7A0B\u5E8F\u7684\u540D\u79F0\u3002\u9ED8\u8BA4\u503C\u4E3A\u53EA\u5305\u542B\u5B57\u6BCD\u6570\u5B57, \u70B9\u548C\u77ED\u5212\u7EBF (\u65E0\u7A7A\u683C) \u7684\u5E94\u7528\u7A0B\u5E8F\u540D\u79F0\u3002
-param.runtime.name=JRE
-param.runtime.description=\u8981\u5171\u540C\u6253\u5305\u7684 Java \u8FD0\u884C\u65F6\u3002\u9ED8\u8BA4\u503C\u4E3A\u8FD0\u884C\u6253\u5305\u7A0B\u5E8F\u7684\u5F53\u524D JRE\u3002\u503C\u4E3A\u7A7A\u503C\u5C06\u5BFC\u81F4\u4E0D\u4F1A\u5171\u540C\u6253\u5305\u4EFB\u4F55 JRE, \u5E76\u4E14\u5C06\u4F7F\u7528\u7CFB\u7EDF JRE \u6765\u542F\u52A8\u5E94\u7528\u7A0B\u5E8F\u3002
-
param.installdir-chooser.name=\u5B89\u88C5\u76EE\u5F55\u9009\u62E9\u5668
param.installdir-chooser.description=\u6DFB\u52A0\u5BF9\u8BDD\u6846\u4EE5\u5141\u8BB8\u7528\u6237\u9009\u62E9\u5C06\u5728\u5176\u4E2D\u5B89\u88C5\u4EA7\u54C1\u7684\u76EE\u5F55\u3002
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/template.iss Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/template.iss Wed Oct 17 13:50:11 2018 -0400
@@ -8,9 +8,6 @@
AppPublisher=APPLICATION_VENDOR
AppComments=APPLICATION_COMMENTS
AppCopyright=APPLICATION_COPYRIGHT
-;AppPublisherURL=http://java.com/
-;AppSupportURL=http://java.com/
-;AppUpdatesURL=http://java.com/
DefaultDirName=APPLICATION_INSTALL_ROOT\APPLICATION_NAME
DisableStartupPrompt=Yes
DisableDirPage=DISABLE_DIR_PAGE
@@ -71,6 +68,5 @@
// Possible future improvements:
// if version less or same => just launch app
// if upgrade => check if same app is running and wait for it to exit
-// Add pack200/unpack200 support?
Result := True;
end;
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/template.jre.iss Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/resources/windows/template.jre.iss Wed Oct 17 13:50:11 2018 -0400
@@ -8,9 +8,6 @@
AppPublisher=APPLICATION_VENDOR
AppComments=APPLICATION_COMMENTS
AppCopyright=APPLICATION_COPYRIGHT
-;AppPublisherURL=http://java.com/
-;AppSupportURL=http://java.com/
-;AppUpdatesURL=http://java.com/
DefaultDirName=APPLICATION_INSTALL_ROOT\APPLICATION_NAME
DisableStartupPrompt=Yes
DisableDirPage=DISABLE_DIR_PAGE
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/windows/WinAppBundler.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/windows/WinAppBundler.java Wed Oct 17 13:50:11 2018 -0400
@@ -35,8 +35,9 @@
import jdk.packager.internal.UnsupportedPlatformException;
import jdk.packager.internal.builders.windows.WindowsAppImageBuilder;
import jdk.packager.internal.resources.windows.WinResources;
-
import jdk.packager.internal.JLinkBundlerHelper;
+import jdk.packager.internal.Arguments;
+import jdk.packager.internal.builders.AbstractAppImageBuilder;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -47,10 +48,8 @@
import java.util.Collection;
import java.util.Map;
import java.util.ResourceBundle;
-import jdk.packager.internal.Arguments;
import static jdk.packager.internal.windows.WindowsBundlerParam.*;
-import jdk.packager.internal.builders.AbstractAppImageBuilder;
import static jdk.packager.internal.windows.WinMsiBundler.WIN_APP_IMAGE;
public class WinAppBundler extends AbstractImageBundler {
@@ -159,14 +158,18 @@
}
private static String appName;
- private synchronized static String getAppName(Map<String, ? super Object> p) {
+ private synchronized static String getAppName(
+ Map<String, ? super Object> p) {
// If we building from predefined app image, then we should use names
// from image and not from CLI.
if (usePredefineAppName(p)) {
if (appName == null) {
- // Use WIN_APP_IMAGE here, since we already copy pre-defined image to WIN_APP_IMAGE
- File appImageDir = new File(WIN_APP_IMAGE.fetchFrom(p).toString() + "\\app");
- File [] files = appImageDir.listFiles((File dir, String name) -> name.endsWith(".cfg"));
+ // Use WIN_APP_IMAGE here, since we already copy pre-defined
+ // image to WIN_APP_IMAGE
+ File appImageDir = new File(
+ WIN_APP_IMAGE.fetchFrom(p).toString() + "\\app");
+ File [] files = appImageDir.listFiles(
+ (File dir, String name) -> name.endsWith(".cfg"));
if (files == null || files.length != 1) {
throw new RuntimeException(MessageFormat.format(
I18N.getString("error.cannot-find-cfg"),
@@ -361,7 +364,6 @@
MAIN_CLASS,
MAIN_JAR,
PREFERENCES_ID,
- PRELOADER_CLASS,
VERSION,
VERBOSE
);
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/windows/WinExeBundler.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/windows/WinExeBundler.java Wed Oct 17 13:50:11 2018 -0400
@@ -22,6 +22,7 @@
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
+
package jdk.packager.internal.windows;
import jdk.packager.internal.*;
@@ -146,7 +147,9 @@
"win.exe.iscc.exe",
String.class,
params -> {
- for (String dirString : (System.getenv("PATH") + ";C:\\Program Files (x86)\\Inno Setup 5;C:\\Program Files\\Inno Setup 5").split(";")) {
+ for (String dirString : (System.getenv("PATH")
+ + ";C:\\Program Files (x86)\\Inno Setup 5;"
+ + "C:\\Program Files\\Inno Setup 5").split(";")) {
File f = new File(dirString.replace("\"", ""),
TOOL_INNO_SETUP_COMPILER);
if (f.isFile()) {
@@ -197,11 +200,7 @@
LICENSE_FILE,
MENU_GROUP,
MENU_HINT,
- // RUN_AT_STARTUP,
SHORTCUT_HINT,
- // SERVICE_HINT,
- // START_ON_INSTALL,
- // STOP_ON_UNINSTALL,
EXE_SYSTEM_WIDE,
TITLE,
VENDOR,
@@ -303,28 +302,6 @@
getString("error.copyright-is-too-long.advice"));
}
- // validate license file, if used, exists in the proper place
- if (p.containsKey(LICENSE_FILE.getID())) {
- List<RelativeFileSet> appResourcesList =
- APP_RESOURCES_LIST.fetchFrom(p);
- for (String license : LICENSE_FILE.fetchFrom(p)) {
- boolean found = false;
- for (RelativeFileSet appResources : appResourcesList) {
- found = found || appResources.contains(license);
- }
- if (!found) {
- throw new ConfigException(
- getString("error.license-missing"),
- MessageFormat.format(getString(
- "error.license-missing.advice"), license));
- }
- }
- }
-//
-// if (SERVICE_HINT.fetchFrom(p)) {
-// SERVICE_BUNDLER.fetchFrom(p).validate(p);
-// }
-
double innoVersion = findToolVersion(
TOOL_INNO_SETUP_COMPILER_EXECUTABLE.fetchFrom(p));
@@ -418,7 +395,8 @@
for (String s : licenseFiles) {
if (rfs.contains(s)) {
File lfile = new File(rfs.getBaseDirectory(), s);
- File destFile = new File(appDir, lfile.getName());
+ File destFile =
+ new File(appDir.getParentFile(), lfile.getName());
IOUtils.copyFile(lfile, destFile);
ensureByMutationFileIsRTF(destFile);
break outerLoop;
@@ -448,15 +426,6 @@
}
}
-//
-// if (SERVICE_HINT.fetchFrom(p)) {
-// // copies the service launcher to the app root folder
-// appDir = SERVICE_BUNDLER.fetchFrom(p).doBundle(
-// p, appOutputDir, true);
-// if (appDir == null) {
-// return false;
-// }
-// }
return true;
}
@@ -654,39 +623,14 @@
} else {
data.put("ARCHITECTURE_BIT_MODE", "");
}
-//
-// if (SERVICE_HINT.fetchFrom(p)) {
-// data.put("RUN_FILENAME",
-// innosetupEscape(WinServiceBundler.getAppSvcName(p)));
-// } else {
- validateValueAndPut(data, "RUN_FILENAME", APP_NAME, p);
-// }
+ validateValueAndPut(data, "RUN_FILENAME", APP_NAME, p);
validateValueAndPut(data, "APPLICATION_DESCRIPTION",
DESCRIPTION, p);
-// data.put("APPLICATION_SERVICE",
-// SERVICE_HINT.fetchFrom(p) ? "returnTrue" : "returnFalse");
data.put("APPLICATION_SERVICE", "returnFalse");
-
-// data.put("APPLICATION_NOT_SERVICE",
-// SERVICE_HINT.fetchFrom(p) ? "returnFalse" : "returnTrue");
data.put("APPLICATION_NOT_SERVICE", "returnFalse");
-
-// data.put("APPLICATION_APP_CDS_INSTALL",
-// (UNLOCK_COMMERCIAL_FEATURES.fetchFrom(p) &&
-// ENABLE_APP_CDS.fetchFrom(p) &&
-// ("install".equals(APP_CDS_CACHE_MODE.fetchFrom(p)) ||
-// "auto+install".equals(APP_CDS_CACHE_MODE.fetchFrom(p))))
-// ? "returnTrue" : "returnFalse");
data.put("APPLICATION_APP_CDS_INSTALL", "returnFalse");
-
-// data.put("START_ON_INSTALL",
-// START_ON_INSTALL.fetchFrom(p) ? "-startOnInstall" : "");
-// data.put("STOP_ON_UNINSTALL",
-// STOP_ON_UNINSTALL.fetchFrom(p) ? "-stopOnUninstall" : "");
-// data.put("RUN_AT_STARTUP",
-// RUN_AT_STARTUP.fetchFrom(p) ? "-runAtStartup" : "");
data.put("START_ON_INSTALL", "");
data.put("STOP_ON_UNINSTALL", "");
data.put("RUN_AT_STARTUP", "");
@@ -749,13 +693,16 @@
// Flags: uninsdeletevalue"
registryEntries.append("Root: HKCR; Subkey: \".")
.append(ext)
- .append("\"; ValueType: string; ValueName: \"\"; ValueData: \"")
+ .append("\"; ValueType: string;"
+ + " ValueName: \"\"; ValueData: \"")
.append(entryName)
.append("\"; Flags: uninsdeletevalue\r\n");
} else {
- registryEntries.append("Root: HKCU; Subkey: \"Software\\Classes\\.")
+ registryEntries.append(
+ "Root: HKCU; Subkey: \"Software\\Classes\\.")
.append(ext)
- .append("\"; ValueType: string; ValueName: \"\"; ValueData: \"")
+ .append("\"; ValueType: string;"
+ + " ValueName: \"\"; ValueData: \"")
.append(entryName)
.append("\"; Flags: uninsdeletevalue\r\n");
}
@@ -764,11 +711,13 @@
if (extensions != null && !extensions.isEmpty()) {
String ext = extensions.get(0);
- List<String> mimeTypes = FA_CONTENT_TYPE.fetchFrom(fileAssociation);
+ List<String> mimeTypes =
+ FA_CONTENT_TYPE.fetchFrom(fileAssociation);
for (String mime : mimeTypes) {
if (isSystemWide) {
// "Root: HKCR;
- // Subkey: HKCR\\Mime\\Database\\Content Type\\application/chaos;
+ // Subkey: HKCR\\Mime\\Database\\
+ // Content Type\\application/chaos;
// ValueType: string;
// ValueName: Extension;
// ValueData: .chaos;
@@ -895,7 +844,7 @@
throws IOException {
prepareMainProjectFile(p);
- //prepare installer icon
+ // prepare installer icon
File iconTarget = getConfig_SmallInnoSetupIcon(p);
fetchResource(WinAppBundler.WIN_BUNDLER_PREFIX + iconTarget.getName(),
getString("resource.setup-icon"),
@@ -934,9 +883,10 @@
outdir.mkdirs();
- //run candle
+ // run Inno Setup
ProcessBuilder pb = new ProcessBuilder(
TOOL_INNO_SETUP_COMPILER_EXECUTABLE.fetchFrom(p),
+ "/q", // turn off inno setup output
"/o"+outdir.getAbsolutePath(),
getConfig_ExeProjectFile(p).getAbsolutePath());
pb = pb.directory(EXE_IMAGE_DIR.fetchFrom(p));
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/windows/WinMsiBundler.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/windows/WinMsiBundler.java Wed Oct 17 13:50:11 2018 -0400
@@ -252,13 +252,8 @@
MENU_GROUP,
MENU_HINT,
PRODUCT_VERSION,
- // RUN_AT_STARTUP,
SHORTCUT_HINT,
- // SERVICE_HINT,
- // START_ON_INSTALL,
- // STOP_ON_UNINSTALL,
MSI_SYSTEM_WIDE,
- //UPGRADE_UUID,
VENDOR,
LICENSE_FILE,
INSTALLDIR_CHOOSER
@@ -482,7 +477,8 @@
// we either have an application image or need to build one
if (appImage != null) {
- appDir = new File(MSI_IMAGE_DIR.fetchFrom(p), APP_NAME.fetchFrom(p));
+ appDir = new File(
+ MSI_IMAGE_DIR.fetchFrom(p), APP_NAME.fetchFrom(p));
// copy everything from appImage dir into appDir/name
IOUtils.copyRecursive(appImage.toPath(), appDir.toPath());
} else {
@@ -1191,7 +1187,7 @@
commandLine.add("-out");
commandLine.add(msiOut.getAbsolutePath());
- //create .msi
+ // create .msi
pb = new ProcessBuilder(commandLine);
pb = pb.directory(WIN_APP_IMAGE.fetchFrom(params));
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/windows/WindowsBundlerParam.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/windows/WindowsBundlerParam.java Wed Oct 17 13:50:11 2018 -0400
@@ -39,7 +39,6 @@
import static jdk.packager.internal.JreUtils.extractJreAsRelativeFileSet;
-
public class WindowsBundlerParam<T> extends StandardBundlerParam<T> {
private static final ResourceBundle I18N = ResourceBundle.getBundle(
@@ -162,19 +161,6 @@
(s, p) -> null
);
- public static final BundlerParamInfo<RelativeFileSet> WIN_RUNTIME =
- new StandardBundlerParam<>(
- I18N.getString("param.runtime.name"),
- I18N.getString("param.runtime.description"),
- BundleParams.PARAM_RUNTIME,
- RelativeFileSet.class,
- params -> extractJreAsRelativeFileSet(
- System.getProperty("java.home"),
- WIN_JRE_RULES.fetchFrom(params)),
- (s, p) -> extractJreAsRelativeFileSet(s,
- WIN_JRE_RULES.fetchFrom(p))
- );
-
public static final BundlerParamInfo<Boolean> INSTALLDIR_CHOOSER =
new StandardBundlerParam<> (
I18N.getString("param.installdir-chooser.name"),
--- a/src/jdk.packager/windows/classes/jdk/packager/internal/windows/WindowsRegistry.java Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/classes/jdk/packager/internal/windows/WindowsRegistry.java Wed Oct 17 13:50:11 2018 -0400
@@ -47,8 +47,8 @@
*/
public static final boolean readDisableRealtimeMonitoring() {
boolean result = false;
- final String key =
- "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows Defender\\Real-Time Protection";
+ final String key = "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\"
+ + "Windows Defender\\Real-Time Protection";
final String subkey = "DisableRealtimeMonitoring";
String value = readRegistry(key, subkey);
@@ -77,8 +77,8 @@
public static final List<String> readExclusionsPaths() {
List<String> result = new ArrayList();
- final String key =
- "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows Defender\\Exclusions\\Paths";
+ final String key = "HKEY_LOCAL_MACHINE\\Software\\Microsoft\\"
+ + "Windows Defender\\Exclusions\\Paths";
String value = readRegistry(key, "");
if (!value.isEmpty()) {
--- a/src/jdk.packager/windows/native/jpackager/IconSwap.cpp Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/native/jpackager/IconSwap.cpp Wed Oct 17 13:50:11 2018 -0400
@@ -117,7 +117,8 @@
return result;
}
- HANDLE icon = CreateFile(iconFileName, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+ HANDLE icon = CreateFile(iconFileName, GENERIC_READ, 0, NULL,
+ OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (icon == INVALID_HANDLE_VALUE) {
PrintError();
return result;
@@ -131,7 +132,8 @@
ReadFile(icon, &idType, sizeof(WORD), &dwBytesRead, NULL);
ReadFile(icon, &idCount, sizeof(WORD), &dwBytesRead, NULL);
- LPICONDIR lpid = (LPICONDIR)malloc(sizeof(ICONDIR) + (sizeof(ICONDIRENTRY) * (idCount - 1)));
+ LPICONDIR lpid = (LPICONDIR)malloc(
+ sizeof(ICONDIR) + (sizeof(ICONDIRENTRY) * (idCount - 1)));
if (lpid == NULL) {
CloseHandle(icon);
@@ -142,10 +144,12 @@
lpid->idType = idType;
lpid->idCount = idCount;
- ReadFile(icon, &lpid->idEntries[0], sizeof(ICONDIRENTRY) * lpid->idCount, &dwBytesRead, NULL);
+ ReadFile(icon, &lpid->idEntries[0], sizeof(ICONDIRENTRY) * lpid->idCount,
+ &dwBytesRead, NULL);
- LPGRPICONDIR lpgid = (LPGRPICONDIR)malloc(sizeof(GRPICONDIR) + (sizeof(GRPICONDIRENTRY) * (idCount - 1)));
+ LPGRPICONDIR lpgid = (LPGRPICONDIR)malloc(
+ sizeof(GRPICONDIR) + (sizeof(GRPICONDIRENTRY) * (idCount - 1)));
if (lpid == NULL) {
CloseHandle(icon);
@@ -183,10 +187,13 @@
for(int i = 0; i < lpid->idCount; i++)
{
LPBYTE lpBuffer = (LPBYTE)malloc(lpid->idEntries[i].dwBytesInRes);
- SetFilePointer(icon, lpid->idEntries[i].dwImageOffset, NULL, FILE_BEGIN);
- ReadFile(icon, lpBuffer, lpid->idEntries[i].dwBytesInRes, &dwBytesRead, NULL);
- if (!UpdateResource(update, RT_ICON, MAKEINTRESOURCE(lpgid->idEntries[i].nID),
- language, &lpBuffer[0], lpid->idEntries[i].dwBytesInRes))
+ SetFilePointer(icon, lpid->idEntries[i].dwImageOffset,
+ NULL, FILE_BEGIN);
+ ReadFile(icon, lpBuffer, lpid->idEntries[i].dwBytesInRes,
+ &dwBytesRead, NULL);
+ if (!UpdateResource(update, RT_ICON,
+ MAKEINTRESOURCE(lpgid->idEntries[i].nID),
+ language, &lpBuffer[0], lpid->idEntries[i].dwBytesInRes))
{
free(lpBuffer);
free(lpid);
@@ -201,8 +208,9 @@
free(lpid);
CloseHandle(icon);
- if (!UpdateResource(update, RT_GROUP_ICON, MAKEINTRESOURCE(1), language,
- &lpgid[0], (sizeof(WORD) * 3) + (sizeof(GRPICONDIRENTRY) * lpgid->idCount)))
+ if (!UpdateResource(update, RT_GROUP_ICON,
+ MAKEINTRESOURCE(1), language, &lpgid[0],
+ (sizeof(WORD) * 3) + (sizeof(GRPICONDIRENTRY) * lpgid->idCount)))
{
free(lpgid);
PrintError();
--- a/src/jdk.packager/windows/native/jpackager/VersionInfoSwap.cpp Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/native/jpackager/VersionInfoSwap.cpp Wed Oct 17 13:50:11 2018 -0400
@@ -75,7 +75,8 @@
std::wifstream stream(m_propFileName.data());
const std::locale empty_locale = std::locale::empty();
- const std::locale utf8_locale = std::locale(empty_locale, new std::codecvt_utf8<wchar_t>());
+ const std::locale utf8_locale =
+ std::locale(empty_locale, new std::codecvt_utf8<wchar_t>());
stream.imbue(utf8_locale);
if (stream.is_open() == true) {
@@ -145,7 +146,8 @@
// Strings
std::vector<wstring> keys;
- for (std::map<wstring, wstring>::const_iterator it = m_props.begin(); it != m_props.end(); ++it) {
+ for (std::map<wstring, wstring>::const_iterator it =
+ m_props.begin(); it != m_props.end(); ++it) {
keys.push_back(it->first);
}
@@ -160,12 +162,15 @@
buf->AppendString(name);
buf->Align(4);
buf->AppendString(value);
- buf->ReplaceWORD(stringStart, static_cast<WORD>(buf->getPos() - stringStart));
+ buf->ReplaceWORD(stringStart,
+ static_cast<WORD>(buf->getPos() - stringStart));
buf->Align(4);
}
- buf->ReplaceWORD(stringTableStart, static_cast<WORD>(buf->getPos() - stringTableStart));
- buf->ReplaceWORD(stringFileInfoStart, static_cast<WORD>(buf->getPos() - stringFileInfoStart));
+ buf->ReplaceWORD(stringTableStart,
+ static_cast<WORD>(buf->getPos() - stringTableStart));
+ buf->ReplaceWORD(stringFileInfoStart,
+ static_cast<WORD>(buf->getPos() - stringFileInfoStart));
// VarFileInfo
size_t varFileInfoStart = buf->getPos();
@@ -184,8 +189,10 @@
buf->AppendWORD(0x0409);
buf->AppendWORD(0x04B0);
- buf->ReplaceWORD(varFileInfoStart, static_cast<WORD>(buf->getPos() - varFileInfoStart));
- buf->ReplaceWORD(versionInfoStart, static_cast<WORD>(buf->getPos() - versionInfoStart));
+ buf->ReplaceWORD(varFileInfoStart,
+ static_cast<WORD>(buf->getPos() - varFileInfoStart));
+ buf->ReplaceWORD(versionInfoStart,
+ static_cast<WORD>(buf->getPos() - versionInfoStart));
}
void VersionInfoSwap::FillFixedFileInfo(VS_FIXEDFILEINFO *fxi) {
@@ -199,12 +206,14 @@
unsigned fv_1 = 0, fv_2 = 0, fv_3 = 0, fv_4 = 0;
unsigned pv_1 = 0, pv_2 = 0, pv_3 = 0, pv_4 = 0;
- ret = _stscanf_s(fileVersion.c_str(), TEXT("%d.%d.%d.%d"), &fv_1, &fv_2, &fv_3, &fv_4);
+ ret = _stscanf_s(fileVersion.c_str(),
+ TEXT("%d.%d.%d.%d"), &fv_1, &fv_2, &fv_3, &fv_4);
if (ret <= 0 || ret > 4) {
fwprintf(stderr, TEXT("Unable to parse FileVersion value\n"));
}
- ret = _stscanf_s(productVersion.c_str(), TEXT("%d.%d.%d.%d"), &pv_1, &pv_2, &pv_3, &pv_4);
+ ret = _stscanf_s(productVersion.c_str(),
+ TEXT("%d.%d.%d.%d"), &pv_1, &pv_2, &pv_3, &pv_4);
if (ret <= 0 || ret > 4) {
fwprintf(stderr, TEXT("Unable to parse ProductVersion value\n"));
}
@@ -227,7 +236,8 @@
}
fxi->dwFileOS = VOS_NT_WINDOWS32;
- wstring exeExt = m_exeFileName.substr(m_exeFileName.find_last_of(TEXT(".")));
+ wstring exeExt =
+ m_exeFileName.substr(m_exeFileName.find_last_of(TEXT(".")));
if (exeExt == TEXT(".exe")) {
fxi->dwFileType = VFT_APP;
}
--- a/src/jdk.packager/windows/native/jpackager/javapackager.cpp Fri Oct 12 19:00:51 2018 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,577 +0,0 @@
-/*
- * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string>
-#include <windows.h>
-
-#include "IconSwap.h"
-#include "VersionInfoSwap.h"
-
-#define _DEBUG true
-
-#ifdef _DEBUG
-#include <iostream>
-#include <sstream>
-#endif
-
-using namespace std;
-
-#define MAX_KEY_LENGTH 255
-#define MAX_VALUE_NAME 16383
-#define TRAILING_PATHSEPARATOR '\\'
-
-bool from_string(int &result, string &str) {
- const char *p = str.c_str();
- int res = 0;
- for (int index = 0;; index++) {
- char c = str[index];
- if (c == 0 && index > 0) {
- result = res;
- return true;
- }
- if (c < '0' || c > '9')
- return false;
- res = res * 10 + (c - '0');
- }
-}
-
-void PrintCSBackupAPIErrorMessage(DWORD dwErr) {
-
- char wszMsgBuff[512]; // Buffer for text.
-
- DWORD dwChars; // Number of chars returned.
-
- // Try to get the message from the system errors.
- dwChars = FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL,
- dwErr,
- 0,
- wszMsgBuff,
- 512,
- NULL);
-
- if (0 == dwChars) {
- // The error code did not exist in the system errors.
- // Try ntdsbmsg.dll for the error code.
- HINSTANCE hInst;
-
- // Load the library.
- hInst = LoadLibraryA("ntdsbmsg.dll");
- if (NULL == hInst) {
-#ifdef _DEBUG
- cerr << "cannot load ntdsbmsg.dll\n";
-#endif
- return;
- }
-
- // Try getting message text from ntdsbmsg.
- dwChars = FormatMessageA(FORMAT_MESSAGE_FROM_HMODULE |
- FORMAT_MESSAGE_IGNORE_INSERTS,
- hInst,
- dwErr,
- 0,
- wszMsgBuff,
- 512,
- NULL);
-
- // Free the library.
- FreeLibrary(hInst);
- }
-
- // Display the error message, or generic text if not found.
-#ifdef _DEBUG
- cerr << "Error value: " << dwErr << " Message: " << ((dwChars > 0) ? wszMsgBuff : "Error message not found.") << endl;
-#endif
-}
-
-class JavaVersion {
-public:
- int v1;
- int v2;
- int v3;
- std::wstring home;
- std::wstring path;
-
- JavaVersion(int pv1, int pv2, int pv3) {
- v1 = pv1;
- v2 = pv2;
- v3 = pv3;
- }
-
- bool operator>(const JavaVersion &other) const {
- if (v1 > other.v1)
- return true;
- if (v1 == other.v1) {
- if (v2 > other.v2)
- return true;
- if (v2 == other.v2)
- return v3 > other.v3;
- }
- return false;
- }
-
- bool operator>=(const JavaVersion &other) const {
- if (v1 > other.v1)
- return true;
- if (v1 == other.v1) {
- if (v2 > other.v2)
- return true;
- if (v2 == other.v2)
- return v3 >= other.v3;
- }
- return false;
- }
-
- bool operator<(const JavaVersion &other) const {
- if (v1 < other.v1)
- return true;
- if (v1 == other.v1) {
- if (v2 < other.v2)
- return true;
- if (v2 == other.v2)
- return v3 < other.v3;
- }
- return false;
- }
-};
-
-class EnvironmentVariable {
-private:
- std::wstring FValue;
-
-public:
- EnvironmentVariable(std::wstring Name) {
- wchar_t* value;
- size_t requiredSize;
-
- _wgetenv_s(&requiredSize, NULL, 0, Name.data());
-
- if (requiredSize != 0) {
- value = (wchar_t*)malloc(requiredSize * sizeof(wchar_t));
- if (value)
- {
- // Get the value of the LIB environment variable.
- _wgetenv_s(&requiredSize, value, requiredSize, Name.data());
- FValue = value;
- }
- }
- }
-
- std::wstring get() {
- return FValue;
- }
-
- bool exists() {
- return !FValue.empty();
- }
-};
-
-bool checkJavaHome(HKEY key, const char * sKey, const char * jv, JavaVersion *version) {
- char p[MAX_KEY_LENGTH];
- HKEY hKey;
- bool result = false;
- int res;
-
- strcpy_s(p, MAX_KEY_LENGTH, sKey);
- strcat_s(p, MAX_KEY_LENGTH - strlen(p), "\\");
- strcat_s(p, MAX_KEY_LENGTH - strlen(p), jv);
-
- if (RegOpenKeyExA(key,
- p,
- 0,
- KEY_READ,
- &hKey) == ERROR_SUCCESS
- ) {
- DWORD ot = REG_SZ;
- DWORD size = 255;
- wchar_t data[MAX_PATH] = { 0 };
- if ((res = RegQueryValueEx(hKey, L"JavaHome", NULL, &ot, (BYTE *)data, &size)) == ERROR_SUCCESS) {
- version->home = data;
- std::wstring ldata = std::wstring(data) + L"\\bin\\java.exe";
- version->path = data;
- result = GetFileAttributes(data) != 0xFFFFFFFF;
- }
- else {
- PrintCSBackupAPIErrorMessage(res);
- result = false;
- }
- RegCloseKey(hKey);
- }
- else {
-#ifdef _DEBUG
- cerr << "Can not open registry key" << endl;
-#endif
- result = false;
- }
-
- return result;
-}
-
-JavaVersion * parseName(const char * jName) {
- string s(jName);
-
- if (s.length() == 0) {
- return NULL;
- }
-
- string n;
- string::size_type pos;
-
- pos = s.find_first_of(".");
- if (pos != string::npos) {
- n = s.substr(0, pos);
- s = s.substr(pos + 1);
- }
- else {
- n = s;
- s = "";
- }
-
- int v1 = 0;
-
- if (n.length() > 0) {
- if (!from_string(v1, n))
- return NULL;
- }
-
-
- pos = s.find_first_of(".");
- if (pos != string::npos) {
- n = s.substr(0, pos);
- s = s.substr(pos + 1);
- }
- else {
- n = s;
- s = "";
- }
-
- int v2 = 0;
-
- if (n.length() > 0) {
- if (!from_string(v2, n))
- return NULL;
- }
-
-
- size_t nn = s.length();
- for (size_t i = 0; i < s.length(); i++) {
- string c = s.substr(i, 1);
- int tmp;
- if (!from_string(tmp, c)) {
- nn = i;
- break;
- }
- }
-
- n = s.substr(0, nn);
- if (nn < s.length()) {
- s = s.substr(nn + 1);
- }
- else s = "";
-
- int v3 = 0;
-
- if (n.length() > 0) {
- if (!from_string(v3, n))
- v3 = 0;
- }
-
- int v4 = 0;
-
- // update version
- if (s.length() > 0) {
- nn = s.length();
- for (size_t i = 0; i < s.length(); i++) {
- string c = s.substr(i, 1);
- int tmp;
- if (!from_string(tmp, c)) {
- nn = i;
- break;
- }
- }
-
- n = s.substr(0, nn);
-
- if (n.length() > 0) {
- if (!from_string(v4, n))
- v4 = 0;
- }
- }
-
- return new JavaVersion(v2, v3, v4);
-}
-
-JavaVersion * GetMaxVersion(HKEY key, const char * sKey) {
- HKEY hKey;
- JavaVersion * result = NULL;
-
- if (RegOpenKeyExA(key,
- sKey,
- 0,
- KEY_READ,
- &hKey) == ERROR_SUCCESS
- ) {
- DWORD retCode;
- char achClass[MAX_PATH]; // buffer for class name
- DWORD cchClassName = MAX_PATH; // size of class string
-
-
- DWORD cchValue = MAX_VALUE_NAME;
- DWORD cSubKeys = 0; // number of subkeys
- DWORD cbMaxSubKey; // longest subkey size
- DWORD cchMaxClass; // longest class string
- DWORD cValues; // number of values for key
- DWORD cchMaxValue; // longest value name
- DWORD cbMaxValueData; // longest value data
- DWORD cbSecurityDescriptor; // size of security descriptor
- FILETIME ftLastWriteTime; // last write time
-
- retCode = RegQueryInfoKeyA(
- hKey, // key handle
- achClass, // buffer for class name
- &cchClassName, // size of class string
- NULL, // reserved
- &cSubKeys, // number of subkeys
- &cbMaxSubKey, // longest subkey size
- &cchMaxClass, // longest class string
- &cValues, // number of values for this key
- &cchMaxValue, // longest value name
- &cbMaxValueData, // longest value data
- &cbSecurityDescriptor, // security descriptor
- &ftLastWriteTime); // last write time
-
- if (cSubKeys) {
- for (unsigned int i = 0; i < cSubKeys; i++) {
- char achKey[MAX_KEY_LENGTH]; // buffer for subkey name
- DWORD cbName = MAX_KEY_LENGTH;
- retCode = RegEnumKeyExA(hKey, i,
- achKey,
- &cbName,
- NULL,
- NULL,
- NULL,
- &ftLastWriteTime);
-
- if (retCode == ERROR_SUCCESS) {
-#ifdef _DEBUG
- cout << achKey << endl;
-#endif
- JavaVersion * nv = parseName(achKey);
-
- bool isHome = checkJavaHome(key, sKey, achKey, nv);
-#ifdef _DEBUG
- wcout << nv->home << " " << isHome << endl;
-#endif
-
- if (isHome)
- if (result == NULL) {
- result = nv;
-#ifdef _DEBUG
- cout << "NEW" << endl;
-#endif
- }
- else {
- if (nv != NULL) {
- if (*nv > *result) {
-#ifdef _DEBUG
- cout << "REPLACE" << endl;
-#endif
- delete result;
- result = nv;
- }
- else {
-#ifdef _DEBUG
- cout << "NO" << endl;
-#endif
- delete nv;
- }
- }
- }
- }
- }
- }
-
- RegCloseKey(hKey);
- }
-
- return result;
-}
-
-int fileExists(const std::wstring& path) {
- WIN32_FIND_DATA ffd;
- HANDLE hFind;
-
- hFind = FindFirstFile(path.data(), &ffd);
- if (hFind == INVALID_HANDLE_VALUE)
- return FALSE;
-
- FindClose(hFind);
- return (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0;
-}
-
-bool hasEnding(std::wstring const &fullString, std::wstring const &ending) {
- if (fullString.length() >= ending.length()) {
- return (0 == fullString.compare(fullString.length() - ending.length(),
- ending.length(), ending));
- }
- else {
- return false;
- }
-}
-
-std::wstring ExtractFilePath(std::wstring Path) {
- std::wstring result;
- size_t slash = Path.find_last_of(TRAILING_PATHSEPARATOR);
- if (slash != std::wstring::npos)
- result = Path.substr(0, slash);
- return result;
-}
-
-std::wstring GetCurrentExecutableName() {
- TCHAR FileName[MAX_PATH];
- GetModuleFileName(NULL, FileName, MAX_PATH);
- return FileName;
-}
-
-int wmain(int argc, wchar_t* argv[]) {
- wchar_t buf[MAX_PATH];
- GetModuleFileName(NULL, buf, MAX_PATH);
-
- std::wstring javacmd;
- std::wstring javahome;
-
- std::wstring exe = GetCurrentExecutableName();
-
- if (exe.length() <= 0) {
- JavaVersion * jv2 = GetMaxVersion(HKEY_LOCAL_MACHINE, "SOFTWARE\\JavaSoft\\JDK");
- if (jv2 != NULL) {
- javahome = jv2->home;
- javacmd = javahome + L"\\bin\\" + L"\\java.exe";
- }
- else {
- javacmd = L"java.exe";
- }
- } else {
- javacmd = ExtractFilePath(exe) + L"\\java.exe";
- }
-
- std::wstring cmd = L"\"" + javacmd + L"\"";
- if (javahome.length() > 0) {
- SetEnvironmentVariable(L"JAVA_HOME", javahome.c_str());
- }
-
- std::wstring memory = L"-Xmx512M";
- std::wstring debug = L"";
- std::wstring args = L"";
-
- for (int i = 1; i < argc; i++) {
- std::wstring argument = argv[i];
- std::wstring debug_arg = L"-J-Xdebug:";
- std::wstring icon_swap_arg = L"--icon-swap";
- std::wstring version_swap_arg = L"--version-swap";
-
- if (argument.find(L"-J-Xmx", 0) == 0) {
- memory = argument.substr(2, argument.length() - 2);
- }
- else if (argument.find(debug_arg, 0) == 0) {
- std::wstring address = argument.substr(debug_arg.length(),
- argument.length() - debug_arg.length());
- debug = L"-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=" + address;
- }
- else if (argument.find(icon_swap_arg, 0) == 0) {
- if (argc != 4) {
- fwprintf(stderr, TEXT("Usage: jpackager.exe --icon-swap [Icon File Name] [Executable File Name]\n"));
- return 1;
- }
-
- wprintf(L"Icon File Name: %s\n", argv[i + 1]);
- wprintf(L"Executable File Name: %s\n", argv[i + 2]);
-
- if (ChangeIcon(argv[i + 1], argv[i + 2]) == true) {
- return 0;
- }
- else {
- fwprintf(stderr, TEXT("failed\n"));
- return 1;
- }
- }
- else if (argument.find(version_swap_arg, 0) == 0) {
- if (argc != 4) {
- fwprintf(stderr, TEXT("Usage: jpackager.exe --version-swap [Property File Name] [Executable File Name]\n"));
- return 1;
- }
-
- fwprintf(stdout, TEXT("Resource File Name: %s\n"), argv[i + 1]);
- fwprintf(stdout, TEXT("Executable File Name: %s\n"), argv[i + 2]);
-
- VersionInfoSwap vs(argv[i + 1], argv[i + 2]);
-
- if (vs.PatchExecutable()) {
- return 0;
- }
- else {
- fwprintf(stderr, TEXT("failed\n"));
- return 1;
- }
- }
- else {
- args = args + L" \"" + argv[i] + L"\"";
- }
- }
-
-
- cmd += debug + L" " + memory +
- L" -m jdk.packager/jdk.packager.Main" +
- L" " + args;
-
-#ifdef _DEBUG
- fwprintf (stdout, TEXT("%s"), cmd.c_str());
-#endif
-
- STARTUPINFO start;
- PROCESS_INFORMATION pi;
- memset(&start, 0, sizeof (start));
- start.cb = sizeof(start);
-
- if (!CreateProcess(NULL, (wchar_t *) cmd.data(),
- NULL, NULL, TRUE, NORMAL_PRIORITY_CLASS, NULL, NULL, &start, &pi)) {
-#ifdef _DEBUG
- fprintf(stderr, "Cannot start java.exe");
-#endif
- return EXIT_FAILURE;
- }
-
- WaitForSingleObject(pi.hProcess, INFINITE);
- unsigned long exitCode;
- GetExitCodeProcess(pi.hProcess, &exitCode);
-
- CloseHandle(pi.hProcess);
- CloseHandle(pi.hThread);
-
- return exitCode;
-}
--- a/src/jdk.packager/windows/native/jpackager/javapackager.manifest Fri Oct 12 19:00:51 2018 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
-<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
- <assemblyIdentity version="FXVERSION"
- processorArchitecture="X86"
- name="javapackager.exe"
- type="win32"/>
- <description>JavaFX application packager</description>
- <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
- <security>
- <requestedPrivileges>
- <requestedExecutionLevel level='asInvoker' uiAccess='false' />
- </requestedPrivileges>
- </security>
- </trustInfo>
- <!-- Indicate this JDK version is Windows 7 compatible -->
- <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
- <application>
- <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
- <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
- </application>
- </compatibility>
-</assembly>
--- a/src/jdk.packager/windows/native/jpackager/javapackager.rc Fri Oct 12 19:00:51 2018 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
- * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-#include "windows.h"
-
-// Need 2 defines so macro argument to XSTR will get expanded before quoting.
-#define XSTR(x) STR(x)
-#define STR(x) #x
-
-LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Version
-//
-
-VS_VERSION_INFO VERSIONINFO
- FILEVERSION JFX_FVER
- PRODUCTVERSION JFX_FVER
- FILEFLAGSMASK 0x3fL
-#ifdef _DEBUG
- FILEFLAGS 0x1L
-#else
- FILEFLAGS 0x0L
-#endif
- // FILEOS 0x4 is Win32, 0x40004 is Win32 NT only
- FILEOS 0x4L
- // FILETYPE should be 0x1 for .exe and 0x2 for .dll
- FILETYPE 0x1L
- FILESUBTYPE 0x0L
-BEGIN
- BLOCK "StringFileInfo"
- BEGIN
- BLOCK "000004b0"
- BEGIN
- VALUE "CompanyName", XSTR(JFX_COMPANY) "\0"
- VALUE "FileDescription", XSTR(JFX_COMPONENT) "\0"
- VALUE "FileVersion", XSTR(JFX_VER) "\0"
- VALUE "Full Version", XSTR(JFX_BUILD_ID) "\0"
- VALUE "InternalName", XSTR(JFX_INTERNAL_NAME) "\0"
- VALUE "LegalCopyright", XSTR(JFX_COPYRIGHT) "\0"
- VALUE "OriginalFilename", XSTR(JFX_FNAME) "\0"
- VALUE "ProductName", XSTR(JFX_NAME) "\0"
- VALUE "ProductVersion", XSTR(JFX_VER) "\0"
- END
- END
- BLOCK "VarFileInfo"
- BEGIN
- VALUE "Translation", 0x0, 1200
- END
-END
-
-
-#define MANIFEST_RESOURCE_ID 1
-
-// Manifest
-//
-
-MANIFEST_RESOURCE_ID RT_MANIFEST "javapackager.manifest"
-
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.packager/windows/native/jpackager/jpackager.cpp Wed Oct 17 13:50:11 2018 -0400
@@ -0,0 +1,580 @@
+/*
+ * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string>
+#include <windows.h>
+
+#include "IconSwap.h"
+#include "VersionInfoSwap.h"
+
+#define _DEBUG true
+
+#ifdef _DEBUG
+#include <iostream>
+#include <sstream>
+#endif
+
+using namespace std;
+
+#define MAX_KEY_LENGTH 255
+#define MAX_VALUE_NAME 16383
+#define TRAILING_PATHSEPARATOR '\\'
+
+bool from_string(int &result, string &str) {
+ const char *p = str.c_str();
+ int res = 0;
+ for (int index = 0;; index++) {
+ char c = str[index];
+ if (c == 0 && index > 0) {
+ result = res;
+ return true;
+ }
+ if (c < '0' || c > '9')
+ return false;
+ res = res * 10 + (c - '0');
+ }
+}
+
+void PrintCSBackupAPIErrorMessage(DWORD dwErr) {
+
+ char wszMsgBuff[512]; // Buffer for text.
+
+ DWORD dwChars; // Number of chars returned.
+
+ // Try to get the message from the system errors.
+ dwChars = FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM |
+ FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL,
+ dwErr,
+ 0,
+ wszMsgBuff,
+ 512,
+ NULL);
+
+ if (0 == dwChars) {
+ // The error code did not exist in the system errors.
+ // Try ntdsbmsg.dll for the error code.
+ HINSTANCE hInst;
+
+ // Load the library.
+ hInst = LoadLibraryA("ntdsbmsg.dll");
+ if (NULL == hInst) {
+#ifdef _DEBUG
+ cerr << "cannot load ntdsbmsg.dll\n";
+#endif
+ return;
+ }
+
+ // Try getting message text from ntdsbmsg.
+ dwChars = FormatMessageA(FORMAT_MESSAGE_FROM_HMODULE |
+ FORMAT_MESSAGE_IGNORE_INSERTS,
+ hInst,
+ dwErr,
+ 0,
+ wszMsgBuff,
+ 512,
+ NULL);
+
+ // Free the library.
+ FreeLibrary(hInst);
+ }
+
+ // Display the error message, or generic text if not found.
+#ifdef _DEBUG
+ cerr << "Error value: " << dwErr << " Message: " << ((dwChars > 0) ? wszMsgBuff : "Error message not found.") << endl;
+#endif
+}
+
+class JavaVersion {
+public:
+ int v1;
+ int v2;
+ int v3;
+ std::wstring home;
+ std::wstring path;
+
+ JavaVersion(int pv1, int pv2, int pv3) {
+ v1 = pv1;
+ v2 = pv2;
+ v3 = pv3;
+ }
+
+ bool operator>(const JavaVersion &other) const {
+ if (v1 > other.v1)
+ return true;
+ if (v1 == other.v1) {
+ if (v2 > other.v2)
+ return true;
+ if (v2 == other.v2)
+ return v3 > other.v3;
+ }
+ return false;
+ }
+
+ bool operator>=(const JavaVersion &other) const {
+ if (v1 > other.v1)
+ return true;
+ if (v1 == other.v1) {
+ if (v2 > other.v2)
+ return true;
+ if (v2 == other.v2)
+ return v3 >= other.v3;
+ }
+ return false;
+ }
+
+ bool operator<(const JavaVersion &other) const {
+ if (v1 < other.v1)
+ return true;
+ if (v1 == other.v1) {
+ if (v2 < other.v2)
+ return true;
+ if (v2 == other.v2)
+ return v3 < other.v3;
+ }
+ return false;
+ }
+};
+
+class EnvironmentVariable {
+private:
+ std::wstring FValue;
+
+public:
+ EnvironmentVariable(std::wstring Name) {
+ wchar_t* value;
+ size_t requiredSize;
+
+ _wgetenv_s(&requiredSize, NULL, 0, Name.data());
+
+ if (requiredSize != 0) {
+ value = (wchar_t*)malloc(requiredSize * sizeof(wchar_t));
+ if (value)
+ {
+ // Get the value of the LIB environment variable.
+ _wgetenv_s(&requiredSize, value, requiredSize, Name.data());
+ FValue = value;
+ }
+ }
+ }
+
+ std::wstring get() {
+ return FValue;
+ }
+
+ bool exists() {
+ return !FValue.empty();
+ }
+};
+
+bool checkJavaHome(HKEY key, const char * sKey, const char * jv,
+ JavaVersion *version) {
+ char p[MAX_KEY_LENGTH];
+ HKEY hKey;
+ bool result = false;
+ int res;
+
+ strcpy_s(p, MAX_KEY_LENGTH, sKey);
+ strcat_s(p, MAX_KEY_LENGTH - strlen(p), "\\");
+ strcat_s(p, MAX_KEY_LENGTH - strlen(p), jv);
+
+ if (RegOpenKeyExA(key,
+ p,
+ 0,
+ KEY_READ,
+ &hKey) == ERROR_SUCCESS
+ ) {
+ DWORD ot = REG_SZ;
+ DWORD size = 255;
+ wchar_t data[MAX_PATH] = { 0 };
+ if ((res = RegQueryValueEx(hKey, L"JavaHome", NULL, &ot,
+ (BYTE *)data, &size)) == ERROR_SUCCESS) {
+ version->home = data;
+ std::wstring ldata = std::wstring(data) + L"\\bin\\java.exe";
+ version->path = data;
+ result = GetFileAttributes(data) != 0xFFFFFFFF;
+ }
+ else {
+ PrintCSBackupAPIErrorMessage(res);
+ result = false;
+ }
+ RegCloseKey(hKey);
+ }
+ else {
+#ifdef _DEBUG
+ cerr << "Can not open registry key" << endl;
+#endif
+ result = false;
+ }
+
+ return result;
+}
+
+JavaVersion * parseName(const char * jName) {
+ string s(jName);
+
+ if (s.length() == 0) {
+ return NULL;
+ }
+
+ string n;
+ string::size_type pos;
+
+ pos = s.find_first_of(".");
+ if (pos != string::npos) {
+ n = s.substr(0, pos);
+ s = s.substr(pos + 1);
+ }
+ else {
+ n = s;
+ s = "";
+ }
+
+ int v1 = 0;
+
+ if (n.length() > 0) {
+ if (!from_string(v1, n))
+ return NULL;
+ }
+
+
+ pos = s.find_first_of(".");
+ if (pos != string::npos) {
+ n = s.substr(0, pos);
+ s = s.substr(pos + 1);
+ }
+ else {
+ n = s;
+ s = "";
+ }
+
+ int v2 = 0;
+
+ if (n.length() > 0) {
+ if (!from_string(v2, n))
+ return NULL;
+ }
+
+
+ size_t nn = s.length();
+ for (size_t i = 0; i < s.length(); i++) {
+ string c = s.substr(i, 1);
+ int tmp;
+ if (!from_string(tmp, c)) {
+ nn = i;
+ break;
+ }
+ }
+
+ n = s.substr(0, nn);
+ if (nn < s.length()) {
+ s = s.substr(nn + 1);
+ }
+ else s = "";
+
+ int v3 = 0;
+
+ if (n.length() > 0) {
+ if (!from_string(v3, n))
+ v3 = 0;
+ }
+
+ int v4 = 0;
+
+ // update version
+ if (s.length() > 0) {
+ nn = s.length();
+ for (size_t i = 0; i < s.length(); i++) {
+ string c = s.substr(i, 1);
+ int tmp;
+ if (!from_string(tmp, c)) {
+ nn = i;
+ break;
+ }
+ }
+
+ n = s.substr(0, nn);
+
+ if (n.length() > 0) {
+ if (!from_string(v4, n))
+ v4 = 0;
+ }
+ }
+
+ return new JavaVersion(v2, v3, v4);
+}
+
+JavaVersion * GetMaxVersion(HKEY key, const char * sKey) {
+ HKEY hKey;
+ JavaVersion * result = NULL;
+
+ if (RegOpenKeyExA(key,
+ sKey,
+ 0,
+ KEY_READ,
+ &hKey) == ERROR_SUCCESS
+ ) {
+ DWORD retCode;
+ char achClass[MAX_PATH]; // buffer for class name
+ DWORD cchClassName = MAX_PATH; // size of class string
+
+
+ DWORD cchValue = MAX_VALUE_NAME;
+ DWORD cSubKeys = 0; // number of subkeys
+ DWORD cbMaxSubKey; // longest subkey size
+ DWORD cchMaxClass; // longest class string
+ DWORD cValues; // number of values for key
+ DWORD cchMaxValue; // longest value name
+ DWORD cbMaxValueData; // longest value data
+ DWORD cbSecurityDescriptor; // size of security descriptor
+ FILETIME ftLastWriteTime; // last write time
+
+ retCode = RegQueryInfoKeyA(
+ hKey, // key handle
+ achClass, // buffer for class name
+ &cchClassName, // size of class string
+ NULL, // reserved
+ &cSubKeys, // number of subkeys
+ &cbMaxSubKey, // longest subkey size
+ &cchMaxClass, // longest class string
+ &cValues, // number of values for this key
+ &cchMaxValue, // longest value name
+ &cbMaxValueData, // longest value data
+ &cbSecurityDescriptor, // security descriptor
+ &ftLastWriteTime); // last write time
+
+ if (cSubKeys) {
+ for (unsigned int i = 0; i < cSubKeys; i++) {
+ char achKey[MAX_KEY_LENGTH]; // buffer for subkey name
+ DWORD cbName = MAX_KEY_LENGTH;
+ retCode = RegEnumKeyExA(hKey, i,
+ achKey,
+ &cbName,
+ NULL,
+ NULL,
+ NULL,
+ &ftLastWriteTime);
+
+ if (retCode == ERROR_SUCCESS) {
+#ifdef _DEBUG
+ cout << achKey << endl;
+#endif
+ JavaVersion * nv = parseName(achKey);
+
+ bool isHome = checkJavaHome(key, sKey, achKey, nv);
+#ifdef _DEBUG
+ wcout << nv->home << " " << isHome << endl;
+#endif
+
+ if (isHome)
+ if (result == NULL) {
+ result = nv;
+#ifdef _DEBUG
+ cout << "NEW" << endl;
+#endif
+ }
+ else {
+ if (nv != NULL) {
+ if (*nv > *result) {
+#ifdef _DEBUG
+ cout << "REPLACE" << endl;
+#endif
+ delete result;
+ result = nv;
+ }
+ else {
+#ifdef _DEBUG
+ cout << "NO" << endl;
+#endif
+ delete nv;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ RegCloseKey(hKey);
+ }
+
+ return result;
+}
+
+int fileExists(const std::wstring& path) {
+ WIN32_FIND_DATA ffd;
+ HANDLE hFind;
+
+ hFind = FindFirstFile(path.data(), &ffd);
+ if (hFind == INVALID_HANDLE_VALUE)
+ return FALSE;
+
+ FindClose(hFind);
+ return (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0;
+}
+
+bool hasEnding(std::wstring const &fullString, std::wstring const &ending) {
+ if (fullString.length() >= ending.length()) {
+ return (0 == fullString.compare(fullString.length() - ending.length(),
+ ending.length(), ending));
+ }
+ else {
+ return false;
+ }
+}
+
+std::wstring ExtractFilePath(std::wstring Path) {
+ std::wstring result;
+ size_t slash = Path.find_last_of(TRAILING_PATHSEPARATOR);
+ if (slash != std::wstring::npos)
+ result = Path.substr(0, slash);
+ return result;
+}
+
+std::wstring GetCurrentExecutableName() {
+ TCHAR FileName[MAX_PATH];
+ GetModuleFileName(NULL, FileName, MAX_PATH);
+ return FileName;
+}
+
+int wmain(int argc, wchar_t* argv[]) {
+ wchar_t buf[MAX_PATH];
+ GetModuleFileName(NULL, buf, MAX_PATH);
+
+ std::wstring javacmd;
+ std::wstring javahome;
+
+ std::wstring exe = GetCurrentExecutableName();
+
+ if (exe.length() <= 0) {
+ JavaVersion * jv2 = GetMaxVersion(HKEY_LOCAL_MACHINE,
+ "SOFTWARE\\JavaSoft\\JDK");
+ if (jv2 != NULL) {
+ javahome = jv2->home;
+ javacmd = javahome + L"\\bin\\" + L"\\java.exe";
+ }
+ else {
+ javacmd = L"java.exe";
+ }
+ } else {
+ javacmd = ExtractFilePath(exe) + L"\\java.exe";
+ }
+
+ std::wstring cmd = L"\"" + javacmd + L"\"";
+ if (javahome.length() > 0) {
+ SetEnvironmentVariable(L"JAVA_HOME", javahome.c_str());
+ }
+
+ std::wstring memory = L"-Xmx512M";
+ std::wstring debug = L"";
+ std::wstring args = L"";
+
+ for (int i = 1; i < argc; i++) {
+ std::wstring argument = argv[i];
+ std::wstring debug_arg = L"-J-Xdebug:";
+ std::wstring icon_swap_arg = L"--icon-swap";
+ std::wstring version_swap_arg = L"--version-swap";
+
+ if (argument.find(L"-J-Xmx", 0) == 0) {
+ memory = argument.substr(2, argument.length() - 2);
+ }
+ else if (argument.find(debug_arg, 0) == 0) {
+ std::wstring address = argument.substr(debug_arg.length(),
+ argument.length() - debug_arg.length());
+ debug = L"-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=" + address;
+ }
+ else if (argument.find(icon_swap_arg, 0) == 0) {
+ if (argc != 4) {
+ fwprintf(stderr, TEXT("Usage: jpackager.exe --icon-swap [Icon File Name] [Executable File Name]\n"));
+ return 1;
+ }
+
+ wprintf(L"Icon File Name: %s\n", argv[i + 1]);
+ wprintf(L"Executable File Name: %s\n", argv[i + 2]);
+
+ if (ChangeIcon(argv[i + 1], argv[i + 2]) == true) {
+ return 0;
+ }
+ else {
+ fwprintf(stderr, TEXT("failed\n"));
+ return 1;
+ }
+ }
+ else if (argument.find(version_swap_arg, 0) == 0) {
+ if (argc != 4) {
+ fwprintf(stderr, TEXT("Usage: jpackager.exe --version-swap [Property File Name] [Executable File Name]\n"));
+ return 1;
+ }
+
+ fwprintf(stdout, TEXT("Resource File Name: %s\n"), argv[i + 1]);
+ fwprintf(stdout, TEXT("Executable File Name: %s\n"), argv[i + 2]);
+
+ VersionInfoSwap vs(argv[i + 1], argv[i + 2]);
+
+ if (vs.PatchExecutable()) {
+ return 0;
+ }
+ else {
+ fwprintf(stderr, TEXT("failed\n"));
+ return 1;
+ }
+ }
+ else {
+ args = args + L" \"" + argv[i] + L"\"";
+ }
+ }
+
+
+ cmd += debug + L" " + memory +
+ L" -m jdk.packager/jdk.packager.main.Main" +
+ L" " + args;
+
+#ifdef _DEBUG
+ fwprintf (stdout, TEXT("%s"), cmd.c_str());
+#endif
+
+ STARTUPINFO start;
+ PROCESS_INFORMATION pi;
+ memset(&start, 0, sizeof (start));
+ start.cb = sizeof(start);
+
+ if (!CreateProcess(NULL, (wchar_t *) cmd.data(),
+ NULL, NULL, TRUE, NORMAL_PRIORITY_CLASS, NULL, NULL, &start, &pi)) {
+#ifdef _DEBUG
+ fprintf(stderr, "Cannot start java.exe");
+#endif
+ return EXIT_FAILURE;
+ }
+
+ WaitForSingleObject(pi.hProcess, INFINITE);
+ unsigned long exitCode;
+ GetExitCodeProcess(pi.hProcess, &exitCode);
+
+ CloseHandle(pi.hProcess);
+ CloseHandle(pi.hThread);
+
+ return exitCode;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.packager/windows/native/jpackager/jpackager.manifest Wed Oct 17 13:50:11 2018 -0400
@@ -0,0 +1,34 @@
+<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
+<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
+ <assemblyIdentity version="JPACKAGER"
+ processorArchitecture="X86"
+ name="jpackager.exe"
+ type="win32"/>
+ <description>Java Packager</description>
+ <!-- Identify the application security requirements. -->
+ <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
+ <security>
+ <requestedPrivileges>
+ <requestedExecutionLevel
+ level="asInvoker"
+ uiAccess="false"/>
+ </requestedPrivileges>
+ </security>
+ </trustInfo>
+
+ <!-- Indicate JDK is high-dpi aware. -->
+ <asmv3:application>
+ <asmv3:windowsSettings
+ xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
+ <dpiAware>true</dpiAware>
+ </asmv3:windowsSettings>
+ </asmv3:application>
+
+ <!-- Indicate this JDK version is Windows 7 compatible -->
+ <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
+ <application>
+ <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
+ <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
+ </application>
+ </compatibility>
+</assembly>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.packager/windows/native/jpackager/jpackager.rc Wed Oct 17 13:50:11 2018 -0400
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+#include "windows.h"
+
+// Need 2 defines so macro argument to XSTR will get expanded before quoting.
+#define XSTR(x) STR(x)
+#define STR(x) #x
+
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION JDK_FVER
+ PRODUCTVERSION JDK_FVER
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ // FILEOS 0x4 is Win32, 0x40004 is Win32 NT only
+ FILEOS 0x4L
+ // FILETYPE should be 0x1 for .exe and 0x2 for .dll
+ FILETYPE 0x1L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "000004b0"
+ BEGIN
+ VALUE "CompanyName", XSTR(JDK_COMPANY) "\0"
+ VALUE "FileDescription", XSTR(JDK_COMPONENT) "\0"
+ VALUE "FileVersion", XSTR(JDK_VER) "\0"
+ VALUE "Full Version", XSTR(JDK_VERSION_STRING) "\0"
+ VALUE "InternalName", XSTR(JDK_INTERNAL_NAME) "\0"
+ VALUE "LegalCopyright", XSTR(JDK_COPYRIGHT) "\0"
+ VALUE "OriginalFilename", XSTR(JDK_FNAME) "\0"
+ VALUE "ProductName", XSTR(JDK_NAME) "\0"
+ VALUE "ProductVersion", XSTR(JDK_VER) "\0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1200
+ END
+END
+
+
+#define MANIFEST_RESOURCE_ID 1
+
+// Manifest
+//
+
+MANIFEST_RESOURCE_ID RT_MANIFEST "jpackager.manifest"
+
--- a/src/jdk.packager/windows/native/launcher/WinLauncher.cpp Fri Oct 12 19:00:51 2018 -0400
+++ b/src/jdk.packager/windows/native/launcher/WinLauncher.cpp Wed Oct 17 13:50:11 2018 -0400
@@ -68,17 +68,20 @@
if (library == NULL) {
std::wstring title = GetTitle();
- std::wstring description = std::wstring(PACKAGER_LIBRARY) + std::wstring(TEXT(" not found."));
- MessageBox(NULL, description.data(), title.data(), MB_ICONERROR | MB_OK);
+ std::wstring description = std::wstring(PACKAGER_LIBRARY)
+ + std::wstring(TEXT(" not found."));
+ MessageBox(NULL, description.data(),
+ title.data(), MB_ICONERROR | MB_OK);
}
else {
- start_launcher start = (start_launcher)GetProcAddress(library, "start_launcher");
- stop_launcher stop = (stop_launcher)GetProcAddress(library, "stop_launcher");
+ start_launcher start =
+ (start_launcher)GetProcAddress(library, "start_launcher");
+ stop_launcher stop =
+ (stop_launcher)GetProcAddress(library, "stop_launcher");
- if (start(argc, argv) == true) {
- result = 0;
-
- if (stop != NULL) {
+ if (start != NULL && stop != NULL) {
+ if (start(argc, argv) == true) {
+ result = 0;
stop();
}
}