|
1 /* |
|
2 * Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved. |
|
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
|
4 * |
|
5 * This code is free software; you can redistribute it and/or modify it |
|
6 * under the terms of the GNU General Public License version 2 only, as |
|
7 * published by the Free Software Foundation. Oracle designates this |
|
8 * particular file as subject to the "Classpath" exception as provided |
|
9 * by Oracle in the LICENSE file that accompanied this code. |
|
10 * |
|
11 * This code is distributed in the hope that it will be useful, but WITHOUT |
|
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
14 * version 2 for more details (a copy is included in the LICENSE file that |
|
15 * accompanied this code). |
|
16 * |
|
17 * You should have received a copy of the GNU General Public License version |
|
18 * 2 along with this work; if not, write to the Free Software Foundation, |
|
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
|
20 * |
|
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
|
22 * or visit www.oracle.com if you need additional information or have any |
|
23 * questions. |
|
24 */ |
|
25 |
|
26 package jdk.incubator.jpackage.internal; |
|
27 |
|
28 import java.io.File; |
|
29 import java.io.IOException; |
|
30 import java.util.*; |
|
31 import java.util.jar.Attributes; |
|
32 import java.util.jar.JarFile; |
|
33 import java.util.jar.Manifest; |
|
34 |
|
35 import static jdk.incubator.jpackage.internal.StandardBundlerParam.*; |
|
36 |
|
37 public class BundleParams { |
|
38 |
|
39 final protected Map<String, ? super Object> params; |
|
40 |
|
41 // RelativeFileSet |
|
42 public static final String PARAM_APP_RESOURCES = "appResources"; |
|
43 |
|
44 // String - Icon file name |
|
45 public static final String PARAM_ICON = "icon"; |
|
46 |
|
47 // String - Name of bundle file and native launcher |
|
48 public static final String PARAM_NAME = "name"; |
|
49 |
|
50 // String - application vendor, used by most of the bundlers |
|
51 public static final String PARAM_VENDOR = "vendor"; |
|
52 |
|
53 // String - email name and email, only used for debian */ |
|
54 public static final String PARAM_EMAIL = "email"; |
|
55 |
|
56 // String - vendor <email>, only used for debian */ |
|
57 public static final String PARAM_MAINTAINER = "maintainer"; |
|
58 |
|
59 /* String - Copyright. Used on Mac */ |
|
60 public static final String PARAM_COPYRIGHT = "copyright"; |
|
61 |
|
62 // String - GUID on windows for MSI, CFBundleIdentifier on Mac |
|
63 // If not compatible with requirements then bundler either do not bundle |
|
64 // or autogenerate |
|
65 public static final String PARAM_IDENTIFIER = "identifier"; |
|
66 |
|
67 /* boolean - shortcut preferences */ |
|
68 public static final String PARAM_SHORTCUT = "shortcutHint"; |
|
69 // boolean - menu shortcut preference |
|
70 public static final String PARAM_MENU = "menuHint"; |
|
71 |
|
72 // String - Application version. Format may differ for different bundlers |
|
73 public static final String PARAM_VERSION = "appVersion"; |
|
74 |
|
75 // String - Application release. Used on Linux. |
|
76 public static final String PARAM_RELEASE = "appRelease"; |
|
77 |
|
78 // String - Optional application description. Used by MSI and on Linux |
|
79 public static final String PARAM_DESCRIPTION = "description"; |
|
80 |
|
81 // String - License type. Needed on Linux (rpm) |
|
82 public static final String PARAM_LICENSE_TYPE = "licenseType"; |
|
83 |
|
84 // String - File with license. Format is OS/bundler specific |
|
85 public static final String PARAM_LICENSE_FILE = "licenseFile"; |
|
86 |
|
87 // String Main application class. |
|
88 // Not used directly but used to derive default values |
|
89 public static final String PARAM_APPLICATION_CLASS = "applicationClass"; |
|
90 |
|
91 // boolean - Adds a dialog to let the user choose a directory |
|
92 // where the product will be installed. |
|
93 public static final String PARAM_INSTALLDIR_CHOOSER = "installdirChooser"; |
|
94 |
|
95 /** |
|
96 * create a new bundle with all default values |
|
97 */ |
|
98 public BundleParams() { |
|
99 params = new HashMap<>(); |
|
100 } |
|
101 |
|
102 /** |
|
103 * Create a bundle params with a copy of the params |
|
104 * @param params map of initial parameters to be copied in. |
|
105 */ |
|
106 public BundleParams(Map<String, ?> params) { |
|
107 this.params = new HashMap<>(params); |
|
108 } |
|
109 |
|
110 public void addAllBundleParams(Map<String, ? super Object> params) { |
|
111 this.params.putAll(params); |
|
112 } |
|
113 |
|
114 // NOTE: we do not care about application parameters here |
|
115 // as they will be embeded into jar file manifest and |
|
116 // java launcher will take care of them! |
|
117 |
|
118 public Map<String, ? super Object> getBundleParamsAsMap() { |
|
119 return new HashMap<>(params); |
|
120 } |
|
121 |
|
122 public String getName() { |
|
123 return APP_NAME.fetchFrom(params); |
|
124 } |
|
125 |
|
126 public void setAppResourcesList( |
|
127 List<jdk.incubator.jpackage.internal.RelativeFileSet> rfs) { |
|
128 putUnlessNull(APP_RESOURCES_LIST.getID(), rfs); |
|
129 } |
|
130 |
|
131 private void putUnlessNull(String param, Object value) { |
|
132 if (value != null) { |
|
133 params.put(param, value); |
|
134 } |
|
135 } |
|
136 } |