Skip to content

Commit c0fb452

Browse files
Allow to read properties configured on PackageBuilder.
1 parent 0c09eb6 commit c0fb452

File tree

1 file changed

+53
-11
lines changed

1 file changed

+53
-11
lines changed

src/jdk.jpackage/share/classes/jdk/jpackage/internal/PackageBuilder.java

Lines changed: 53 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,13 @@ final class PackageBuilder {
4444
}
4545

4646
Package create() throws ConfigException {
47-
final var effectiveName = Optional.ofNullable(name).orElseGet(app::name);
47+
final var validatedName = validatedName();
4848

4949
Path relativeInstallDir;
5050
if (installDir != null) {
5151
var normalizedInstallDir = mapInstallDir(installDir, type);
5252
if (type instanceof StandardPackageType stdType) {
53-
Optional<Path> installDirName = Optional.of(Path.of(effectiveName));
53+
Optional<Path> installDirName = Optional.of(Path.of(validatedName));
5454
switch (stdType) {
5555
case LINUX_DEB, LINUX_RPM -> {
5656
switch (normalizedInstallDir.toString()) {
@@ -69,10 +69,8 @@ Package create() throws ConfigException {
6969
normalizedInstallDir = installDirName.map(normalizedInstallDir::resolve).orElse(normalizedInstallDir);
7070
}
7171
relativeInstallDir = normalizedInstallDir;
72-
} else if (type instanceof StandardPackageType stdType) {
73-
relativeInstallDir = defaultInstallDir(stdType, effectiveName, app);
7472
} else {
75-
throw new UnsupportedOperationException();
73+
relativeInstallDir = defaultInstallDir().orElseThrow(UnsupportedOperationException::new);
7674
}
7775

7876
if (relativeInstallDir.isAbsolute()) {
@@ -82,7 +80,7 @@ Package create() throws ConfigException {
8280
return new Stub(
8381
app,
8482
type,
85-
effectiveName,
83+
validatedName,
8684
Optional.ofNullable(description).orElseGet(app::description),
8785
version = Optional.ofNullable(version).orElseGet(app::version),
8886
Optional.ofNullable(aboutURL),
@@ -95,42 +93,86 @@ PackageBuilder name(String v) {
9593
name = v;
9694
return this;
9795
}
96+
97+
Optional<String> name() {
98+
return Optional.ofNullable(name);
99+
}
98100

99101
PackageBuilder fileName(Path v) {
100102
fileName = v;
101103
return this;
102104
}
105+
106+
Optional<Path> fileName() {
107+
return Optional.ofNullable(fileName);
108+
}
103109

104110
PackageBuilder description(String v) {
105111
description = v;
106112
return this;
107113
}
108114

115+
Optional<String> description() {
116+
return Optional.ofNullable(description);
117+
}
118+
109119
PackageBuilder version(String v) {
110120
version = v;
111121
return this;
112122
}
113123

124+
Optional<String> version() {
125+
return Optional.ofNullable(version);
126+
}
127+
114128
PackageBuilder aboutURL(String v) {
115129
aboutURL = v;
116130
return this;
117131
}
118132

133+
Optional<String> aboutURL() {
134+
return Optional.ofNullable(aboutURL);
135+
}
136+
119137
PackageBuilder licenseFile(Path v) {
120138
licenseFile = v;
121139
return this;
122140
}
123141

142+
Optional<Path> licenseFile() {
143+
return Optional.ofNullable(licenseFile);
144+
}
145+
124146
PackageBuilder predefinedAppImage(Path v) {
125147
predefinedAppImage = v;
126148
return this;
127149
}
128150

151+
Optional<Path> predefinedAppImage() {
152+
return Optional.ofNullable(predefinedAppImage);
153+
}
154+
129155
PackageBuilder installDir(Path v) {
130156
installDir = v;
131157
return this;
132158
}
133159

160+
Optional<Path> installDir() {
161+
return Optional.ofNullable(installDir);
162+
}
163+
164+
Optional<Path> defaultInstallDir() {
165+
if (type instanceof StandardPackageType stdType) {
166+
return defaultInstallDir(stdType, validatedName(), app);
167+
} else {
168+
return Optional.empty();
169+
}
170+
}
171+
172+
private String validatedName() {
173+
return name().orElseGet(app::name);
174+
}
175+
134176
private static Path mapInstallDir(Path installDir, PackageType pkgType)
135177
throws ConfigException {
136178
var ex = buildConfigException("error.invalid-install-dir", installDir).create();
@@ -169,13 +211,13 @@ private static Path mapInstallDir(Path installDir, PackageType pkgType)
169211
return installDir;
170212
}
171213

172-
private static Path defaultInstallDir(StandardPackageType pkgType, String pkgName, Application app) {
214+
private static Optional<Path> defaultInstallDir(StandardPackageType pkgType, String pkgName, Application app) {
173215
switch (pkgType) {
174216
case WIN_EXE, WIN_MSI -> {
175-
return app.appImageDirName();
217+
return Optional.of(app.appImageDirName());
176218
}
177219
case LINUX_DEB, LINUX_RPM -> {
178-
return Path.of("/opt").resolve(pkgName);
220+
return Optional.of(Path.of("/opt").resolve(pkgName));
179221
}
180222
case MAC_DMG, MAC_PKG -> {
181223
final Path dirName = app.appImageDirName();
@@ -185,10 +227,10 @@ private static Path defaultInstallDir(StandardPackageType pkgType, String pkgNam
185227
} else {
186228
base = Path.of("/Applications");
187229
}
188-
return base.resolve(dirName);
230+
return Optional.of(base.resolve(dirName));
189231
}
190232
default -> {
191-
throw new UnsupportedOperationException();
233+
return Optional.empty();
192234
}
193235
}
194236
}

0 commit comments

Comments
 (0)