src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/MacAppImageBuilder.java
branchJDK-8200758-branch
changeset 58647 2c43b89b1679
parent 58538 12c965587689
child 58670 6fb9e12d5595
--- a/src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/MacAppImageBuilder.java	Tue Oct 15 14:00:04 2019 -0400
+++ b/src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/MacAppImageBuilder.java	Wed Oct 16 09:57:23 2019 -0400
@@ -25,16 +25,10 @@
 
 package jdk.jpackage.internal;
 
-import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.FileWriter;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.UncheckedIOException;
 import java.io.Writer;
 import java.math.BigInteger;
 import java.nio.file.Files;
@@ -63,6 +57,7 @@
 import static jdk.jpackage.internal.StandardBundlerParam.*;
 import static jdk.jpackage.internal.MacBaseInstallerBundler.*;
 import static jdk.jpackage.internal.MacAppBundler.*;
+import static jdk.jpackage.internal.OverridableResource.createResource;
 
 public class MacAppImageBuilder extends AbstractAppImageBuilder {
 
@@ -143,13 +138,6 @@
                     },
                     (s, p) -> s);
 
-    public static final BundlerParamInfo<String> DEFAULT_ICNS_ICON =
-            new StandardBundlerParam<>(
-            ".mac.default.icns",
-            String.class,
-            params -> TEMPLATE_BUNDLE_ICON,
-            (s, p) -> s);
-
     public static final BundlerParamInfo<File> ICON_ICNS =
             new StandardBundlerParam<>(
             "icon.icns",
@@ -312,18 +300,12 @@
         copyClassPathEntries(appDir, params);
 
         /*********** Take care of "config" files *******/
-        File icon = ICON_ICNS.fetchFrom(params);
 
-        InputStream in = locateResource(
-                APP_NAME.fetchFrom(params) + ".icns",
-                "icon",
-                DEFAULT_ICNS_ICON.fetchFrom(params),
-                icon,
-                VERBOSE.fetchFrom(params),
-                RESOURCE_DIR.fetchFrom(params));
-        Files.copy(in,
-                resourcesDir.resolve(APP_NAME.fetchFrom(params) + ".icns"),
-                StandardCopyOption.REPLACE_EXISTING);
+        createResource(TEMPLATE_BUNDLE_ICON, params)
+                .setCategory("icon")
+                .setExternal(ICON_ICNS.fetchFrom(params))
+                .saveToFile(resourcesDir.resolve(APP_NAME.fetchFrom(params)
+                        + ".icns"));
 
         // copy file association icons
         for (Map<String, ?
@@ -457,14 +439,11 @@
         data.put("CF_BUNDLE_VERSION", VERSION.fetchFrom(params));
         data.put("CF_BUNDLE_SHORT_VERSION_STRING", VERSION.fetchFrom(params));
 
-        try (Writer w = Files.newBufferedWriter(file.toPath())) {
-            w.write(preprocessTextResource("Runtime-Info.plist",
-                    I18N.getString("resource.runtime-info-plist"),
-                    TEMPLATE_RUNTIME_INFO_PLIST,
-                    data,
-                    VERBOSE.fetchFrom(params),
-                    RESOURCE_DIR.fetchFrom(params)));
-        }
+        createResource(TEMPLATE_RUNTIME_INFO_PLIST, params)
+                .setPublicName("Runtime-Info.plist")
+                .setCategory(I18N.getString("resource.runtime-info-plist"))
+                .setSubstitutionData(data)
+                .saveToFile(file);
     }
 
     private void writeInfoPlist(File file, Map<String, ? super Object> params)
@@ -664,16 +643,11 @@
         }
         data.put("DEPLOY_FILE_ASSOCIATIONS", associationData);
 
-
-        try (Writer w = Files.newBufferedWriter(file.toPath())) {
-            w.write(preprocessTextResource(
-                    // getConfig_InfoPlist(params).getName(),
-                    "Info.plist",
-                    I18N.getString("resource.app-info-plist"),
-                    TEMPLATE_INFO_PLIST_LITE,
-                    data, VERBOSE.fetchFrom(params),
-                    RESOURCE_DIR.fetchFrom(params)));
-        }
+        createResource(TEMPLATE_INFO_PLIST_LITE, params)
+                .setCategory(I18N.getString("resource.app-info-plist"))
+                .setSubstitutionData(data)
+                .setPublicName("Info.plist")
+                .saveToFile(file);
     }
 
     private void writePkgInfo(File file) throws IOException {