< prev index next >

modules/fxpackager/src/main/java/com/oracle/tools/packager/AbstractImageBundler.java

Print this page
rev 9619 : imported patch 9-jake-fxpackager.patch

@@ -22,65 +22,33 @@
  * or visit www.oracle.com if you need additional information or have any
  * questions.
  */
 package com.oracle.tools.packager;
 
-import com.sun.javafx.tools.packager.bundlers.BundleParams;
-
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.PrintStream;
 import java.nio.file.Files;
 import java.text.MessageFormat;
-import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.ResourceBundle;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import static com.oracle.tools.packager.StandardBundlerParam.*;
-import static com.oracle.tools.packager.StandardBundlerParam.ARGUMENTS;
 
 /**
  * Common utility methods used by app image bundlers.
  */
 public abstract class AbstractImageBundler extends AbstractBundler {
 
     private static final ResourceBundle I18N =
             ResourceBundle.getBundle(AbstractImageBundler.class.getName());
 
-    public static final String CFG_FORMAT_PROPERTIES="prop";
-    public static final String CFG_FORMAT_INI="ini";
-
-    public static final BundlerParamInfo<String> LAUNCHER_CFG_FORMAT =
-            new StandardBundlerParam<>(
-                    I18N.getString("param.launcher-cfg-format.name"),
-                    I18N.getString("param.launcher-cfg-format.description"),
-                    "launcher-cfg-format",
-                    String.class,
-                    params -> "ini",
-                    (s, p) -> s);
-
-    //helper method to test if required files are present in the runtime
-    public void testRuntime(RelativeFileSet runtime, String[] file) throws ConfigException {
-        if (runtime == null) {
-            return; //null runtime is ok (request to use system)
-        }
-
-        Pattern[] weave = Arrays.stream(file).map(Pattern::compile).toArray(Pattern[]::new);
-
-        if (!runtime.getIncludedFiles().stream().anyMatch(s ->
-                        Arrays.stream(weave).anyMatch(pattern -> pattern.matcher(s).matches())
-        )) {
-            throw new ConfigException(
-                    MessageFormat.format(I18N.getString("error.jre-missing-file"), Arrays.toString(file)),
-                    I18N.getString("error.jre-missing-file.advice"));
-        }
-    }
-
     public void imageBundleValidation(Map<String, ? super Object> p) throws ConfigException {
         StandardBundlerParam.validateMainClassInfoFromAppResources(p);
 
         Map<String, String> userJvmOptions = USER_JVM_OPTIONS.fetchFrom(p);
         if (userJvmOptions != null) {

@@ -97,166 +65,19 @@
             throw new ConfigException(
                     I18N.getString("error.no-application-jar"),
                     I18N.getString("error.no-application-jar.advice"));
         }
 
-        extractRuntimeFlags(p);
-
         if (ENABLE_APP_CDS.fetchFrom(p)) {
-            if (UNLOCK_COMMERCIAL_FEATURES.fetchFrom(p)) {
-                if (p.containsKey(BundleParams.PARAM_RUNTIME)
-                        && (p.get(BundleParams.PARAM_RUNTIME) == null))
-                {
-                    throw new ConfigException(
-                            I18N.getString("error.app-cds-requires-runtime"),
-                            I18N.getString("error.app-cds-requires-runtime.advice"));
-                }
-                Object majorV = p.get(".runtime.version.major");
-                Object minorV = p.get(".runtime.version.minor");
-                if (majorV != null && minorV != null) {
-                    try {
-                        int major = Integer.parseInt(majorV.toString());
-                        int minor = Integer.parseInt(minorV.toString());
-                        if ((major < 8) || (major == 8 && minor < 40)) {
-                            throw new ConfigException(
-                                    I18N.getString("error.app-cds-bad-version"),
-                                    I18N.getString("error.app-cds-bad-version.advice"));
-                        }
-                    } catch (NumberFormatException nfe) {
-                        //maybe log a failure to check versions?
-                    }
-                }
-            } else {
+            if (!UNLOCK_COMMERCIAL_FEATURES.fetchFrom(p)) {
                 throw new ConfigException(
                         I18N.getString("error.app-cds-no-commercial-unlock"),
                         I18N.getString("error.app-cds-no-commercial-unlock.advice"));
             }
         }
-
-    }
-
-    public void writeCfgFile(Map<String, ? super Object> params, File cfgFileName, String runtimeLocation) throws IOException {
-        cfgFileName.delete();
-
-        boolean appCDEnabled = UNLOCK_COMMERCIAL_FEATURES.fetchFrom(params) && ENABLE_APP_CDS.fetchFrom(params);
-        String appCDSCacheMode = APP_CDS_CACHE_MODE.fetchFrom(params);
-
-        PrintStream out = new PrintStream(cfgFileName);
-
-        out.println("[Application]");
-        out.println("app.name=" + APP_NAME.fetchFrom(params));
-        out.println("app.mainjar=" + MAIN_JAR.fetchFrom(params).getIncludedFiles().iterator().next());
-        out.println("app.version=" + VERSION.fetchFrom(params));
-        out.println("app.preferences.id=" + PREFERENCES_ID.fetchFrom(params));
-        out.println("app.mainclass=" +
-                MAIN_CLASS.fetchFrom(params).replaceAll("\\.", "/"));
-        out.println("app.classpath=" +
-                String.join(File.pathSeparator, CLASSPATH.fetchFrom(params).split("[ :;]")));
-        out.println("app.runtime=" + runtimeLocation);
-        out.println("app.identifier=" + IDENTIFIER.fetchFrom(params));
-        if (appCDEnabled) {
-            out.println("app.appcds.cache=" + appCDSCacheMode.split("\\+")[0]);
-        }
-
-
-        out.println();
-        out.println("[JVMOptions]");
-        List<String> jvmargs = JVM_OPTIONS.fetchFrom(params);
-        for (String arg : jvmargs) {
-            out.println(arg);
-        }
-        Map<String, String> jvmProps = JVM_PROPERTIES.fetchFrom(params);
-        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("[JVMUserOptions]");
-        Map<String, String> overridableJVMOptions = USER_JVM_OPTIONS.fetchFrom(params);
-        for (Map.Entry<String, String> arg: overridableJVMOptions.entrySet()) {
-            if (arg.getKey() == null || arg.getValue() == null) {
-                Log.info(I18N.getString("message.jvm-user-arg-is-null"));
-            } else {
-                out.println(arg.getKey().replaceAll("([\\=])", "\\\\$1") + "=" + arg.getValue());
-            }
-        }
-
-        if (appCDEnabled) {
-            prepareAppCDS(params, out);
-        }
-
-        out.println();
-        out.println("[ArgOptions]");
-        List<String> args = ARGUMENTS.fetchFrom(params);
-        for (String arg : args) {
-            if (arg.endsWith("=") && (arg.indexOf("=") == arg.lastIndexOf("="))) {
-                out.print(arg.substring(0, arg.length() - 1));
-                out.println("\\=");
-            } else {
-                out.println(arg);
-            }
-        }
-
-
-        out.close();
-    }
-
-    protected abstract String getCacheLocation(Map<String, ? super Object> params);
-
-    void prepareAppCDS(Map<String, ? super Object> params, PrintStream out) throws IOException {
-        //TODO check 8u40 or later
-
-        File tempDir = Files.createTempDirectory("javapackager").toFile();
-        tempDir.deleteOnExit();
-        File classList = new File(tempDir, APP_FS_NAME.fetchFrom(params)  + ".classlist");
-
-        try (FileOutputStream fos = new FileOutputStream(classList);
-             PrintStream ps = new PrintStream(fos)) {
-            for (String className : APP_CDS_CLASS_ROOTS.fetchFrom(params)) {
-                String slashyName = className.replace(".", "/");
-                ps.println(slashyName);
-            }
-        }
-        APP_RESOURCES_LIST.fetchFrom(params).add(new RelativeFileSet(classList.getParentFile(), Arrays.asList(classList)));
-
-        out.println();
-        out.println("[AppCDSJVMOptions]");
-        out.println("-XX:+UnlockCommercialFeatures");
-        out.print("-XX:SharedArchiveFile=");
-        out.print(getCacheLocation(params));
-        out.print(APP_FS_NAME.fetchFrom(params));
-        out.println(".jpa");
-        out.println("-Xshare:auto");
-        out.println("-XX:+UseAppCDS");
-        if (Log.isDebug()) {
-            out.println("-verbose:class");
-            out.println("-XX:+TraceClassPaths");
-            out.println("-XX:+UnlockDiagnosticVMOptions");
-        }
-        out.println("");
-
-        out.println("[AppCDSGenerateCacheJVMOptions]");
-        out.println("-XX:+UnlockCommercialFeatures");
-        out.println("-Xshare:dump");
-        out.println("-XX:+UseAppCDS");
-        out.print("-XX:SharedArchiveFile=");
-        out.print(getCacheLocation(params));
-        out.print(APP_FS_NAME.fetchFrom(params));
-        out.println(".jpa");
-        out.println("-XX:SharedClassListFile=$PACKAGEDIR/" + APP_FS_NAME.fetchFrom(params) + ".classlist");
-        if (Log.isDebug()) {
-            out.println("-XX:+UnlockDiagnosticVMOptions");
-        }
-    }
-
-    abstract public void extractRuntimeFlags(Map<String, ? super Object> params);
-
     public static void extractFlagsFromVersion(Map<String, ? super Object> params, String versionOutput) {
         Pattern bitArchPattern = Pattern.compile("(\\d*)[- ]?[bB]it");
         Matcher matcher = bitArchPattern.matcher(versionOutput);
         if (matcher.find()) {
             params.put(".runtime.bit-arch", matcher.group(1));
< prev index next >