# HG changeset patch # User herrick # Date 1531839255 14400 # Node ID 40abf95122b08d800fc70cae0e3a20fdfa5da23e # Parent 43caa6ff671a4b6f7fce12004b17f67b732c889b 8207143: jpackager fails to parse file associations Reviewed-by: almatvee, asemenyuk diff -r 43caa6ff671a -r 40abf95122b0 src/jdk.packager/share/classes/jdk/packager/internal/Arguments.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/Arguments.java Fri Jul 13 10:41:07 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/Arguments.java Tue Jul 17 10:54:15 2018 -0400 @@ -278,8 +278,14 @@ args.put(StandardBundlerParam.FA_ICON.getID(), icon); } + ArrayList> associationList = + new ArrayList>(); + + associationList.add(args); + // check that we really add _another_ value to the list - setOptionValue("file-associations", args); + setOptionValue("file-associations", associationList); + }), SECONDARY_LAUNCHER ("secondary-launcher", diff -r 43caa6ff671a -r 40abf95122b0 src/jdk.packager/share/classes/jdk/packager/internal/DeployParams.java --- a/src/jdk.packager/share/classes/jdk/packager/internal/DeployParams.java Fri Jul 13 10:41:07 2018 -0400 +++ b/src/jdk.packager/share/classes/jdk/packager/internal/DeployParams.java Tue Jul 17 10:54:15 2018 -0400 @@ -568,19 +568,21 @@ StandardBundlerParam.ADD_MODULES.getID(), StandardBundlerParam.LIMIT_MODULES.getID(), StandardBundlerParam.STRIP_NATIVE_COMMANDS.getID(), + StandardBundlerParam.FILE_ASSOCIATIONS.getID(), JLinkBundlerHelper.DETECT_MODULES.getID() )); @SuppressWarnings("unchecked") public void addBundleArgument(String key, Object value) { // special hack for multi-line arguments - if (multi_args.contains(key) && value instanceof String) { + if (multi_args.contains(key)) { Object existingValue = bundlerArguments.get(key); - if (existingValue instanceof String) { + if (existingValue instanceof String && value instanceof String) { bundlerArguments.put(key, existingValue + "\n\n" + value); - } else if (existingValue instanceof List) { - ((List)existingValue).add(value); - } else if (existingValue instanceof Map && ((String)value).contains("=")) { + } else if (existingValue instanceof List && value instanceof List) { + ((List)existingValue).addAll((List)value); + } else if (existingValue instanceof Map && + value instanceof String && ((String)value).contains("=")) { String[] mapValues = ((String)value).split("=", 2); ((Map)existingValue).put(mapValues[0], mapValues[1]); } else {