Skip to content

Commit a0094f5

Browse files
author
Alexey Semenyuk
committed
8374216: Assorted changes to jpackage without functional impact
Reviewed-by: almatvee
1 parent ecb4234 commit a0094f5

File tree

27 files changed

+204
-118
lines changed

27 files changed

+204
-118
lines changed

src/jdk.jpackage/linux/classes/jdk/jpackage/internal/LinuxBundlingEnvironment.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public LinuxBundlingEnvironment() {
5656
private static void createDebPackage(Options options, LinuxDebSystemEnvironment sysEnv) {
5757

5858
createNativePackage(options,
59-
LinuxFromOptions::createLinuxDebPackage,
59+
LinuxFromOptions.createLinuxDebPackage(options),
6060
buildEnv()::create,
6161
LinuxBundlingEnvironment::buildPipeline,
6262
(env, pkg, outputDir) -> {
@@ -67,7 +67,7 @@ private static void createDebPackage(Options options, LinuxDebSystemEnvironment
6767
private static void createRpmPackage(Options options, LinuxRpmSystemEnvironment sysEnv) {
6868

6969
createNativePackage(options,
70-
LinuxFromOptions::createLinuxRpmPackage,
70+
LinuxFromOptions.createLinuxRpmPackage(options),
7171
buildEnv()::create,
7272
LinuxBundlingEnvironment::buildPipeline,
7373
(env, pkg, outputDir) -> {

src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/MacBundlingEnvironment.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public MacBundlingEnvironment() {
5151

5252
private static void createDmdPackage(Options options, MacDmgSystemEnvironment sysEnv) {
5353
createNativePackage(options,
54-
MacFromOptions::createMacDmgPackage,
54+
MacFromOptions.createMacDmgPackage(options),
5555
buildEnv()::create,
5656
MacBundlingEnvironment::buildPipeline,
5757
(env, pkg, outputDir) -> {
@@ -62,7 +62,7 @@ private static void createDmdPackage(Options options, MacDmgSystemEnvironment sy
6262

6363
private static void createPkgPackage(Options options) {
6464
createNativePackage(options,
65-
MacFromOptions::createMacPkgPackage,
65+
MacFromOptions.createMacPkgPackage(options),
6666
buildEnv()::create,
6767
MacBundlingEnvironment::buildPipeline,
6868
(env, pkg, outputDir) -> {

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -144,29 +144,27 @@ static void createApplicationImage(Options options, Application app, PackagingPi
144144
}
145145

146146
static <T extends Package> void createNativePackage(Options options,
147-
Function<Options, T> createPackage,
147+
T pkg,
148148
BiFunction<Options, T, BuildEnv> createBuildEnv,
149149
PackagingPipeline.Builder pipelineBuilder,
150150
Packager.PipelineBuilderMutatorFactory<T> pipelineBuilderMutatorFactory) {
151151

152152
Objects.requireNonNull(pipelineBuilder);
153-
createNativePackage(options, createPackage, createBuildEnv, _ -> pipelineBuilder, pipelineBuilderMutatorFactory);
153+
createNativePackage(options, pkg, createBuildEnv, _ -> pipelineBuilder, pipelineBuilderMutatorFactory);
154154
}
155155

156156
static <T extends Package> void createNativePackage(Options options,
157-
Function<Options, T> createPackage,
157+
T pkg,
158158
BiFunction<Options, T, BuildEnv> createBuildEnv,
159159
Function<T, PackagingPipeline.Builder> createPipelineBuilder,
160160
Packager.PipelineBuilderMutatorFactory<T> pipelineBuilderMutatorFactory) {
161161

162162
Objects.requireNonNull(options);
163-
Objects.requireNonNull(createPackage);
163+
Objects.requireNonNull(pkg);
164164
Objects.requireNonNull(createBuildEnv);
165165
Objects.requireNonNull(createPipelineBuilder);
166166
Objects.requireNonNull(pipelineBuilderMutatorFactory);
167167

168-
var pkg = Objects.requireNonNull(createPackage.apply(options));
169-
170168
Packager.<T>build().pkg(pkg)
171169
.outputDir(OptionUtils.outputDir(options))
172170
.env(Objects.requireNonNull(createBuildEnv.apply(options, pkg)))
@@ -207,7 +205,9 @@ public Collection<? extends Exception> configurationErrors(BundlingOperationDesc
207205
}
208206

209207
private Supplier<Result<Consumer<Options>>> getBundlerSupplier(BundlingOperationDescriptor op) {
210-
return Optional.ofNullable(bundlers.get(op)).orElseThrow(NoSuchElementException::new);
208+
return Optional.ofNullable(bundlers.get(op)).orElseThrow(() -> {
209+
throw new NoSuchElementException(String.format("Unsupported bundling operation: %s", op));
210+
});
211211
}
212212

213213
private String bundleTypeDescription(PackageType type, OperatingSystem os) {

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

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,16 @@ Launcher create() {
5050

5151
final var fa = createFileAssociations(faSources, Optional.ofNullable(faTraits).orElse(DEFAULT_FA_TRAITS));
5252

53-
Objects.requireNonNull(defaultIconResourceName);
54-
5553
final var nonNullName = deriveNonNullName();
5654

57-
return new Stub(nonNullName, Optional.ofNullable(startupInfo), fa,
58-
isService, Optional.ofNullable(description).orElse(nonNullName),
59-
Optional.ofNullable(icon), defaultIconResourceName,
55+
return new Stub(
56+
nonNullName,
57+
Optional.ofNullable(startupInfo),
58+
fa,
59+
isService,
60+
Optional.ofNullable(description).orElse(nonNullName),
61+
Optional.ofNullable(icon),
62+
Optional.ofNullable(defaultIconResourceName).orElseGet(LauncherBuilder::defaultIconResourceName),
6063
Optional.ofNullable(extraAppImageFileData).orElseGet(Map::of));
6164
}
6265

@@ -170,6 +173,23 @@ private static List<FileAssociation> createFileAssociations(
170173
return FileAssociationGroup.flatMap(groups.stream()).toList();
171174
}
172175

176+
private static String defaultIconResourceName() {
177+
switch (OperatingSystem.current()) {
178+
case WINDOWS -> {
179+
return "JavaApp.ico";
180+
}
181+
case LINUX -> {
182+
return "JavaApp.png";
183+
}
184+
case MACOS -> {
185+
return "JavaApp.icns";
186+
}
187+
default -> {
188+
throw new UnsupportedOperationException();
189+
}
190+
}
191+
}
192+
173193
private String name;
174194
private LauncherStartupInfo startupInfo;
175195
private List<FileAssociationGroup> faSources = List.of();

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

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545
import java.util.function.BiConsumer;
4646
import java.util.function.BiFunction;
4747
import java.util.stream.IntStream;
48-
import jdk.internal.util.OperatingSystem;
4948
import jdk.jpackage.internal.FileAssociationGroup.FileAssociationException;
5049
import jdk.jpackage.internal.FileAssociationGroup.FileAssociationNoExtensionsException;
5150
import jdk.jpackage.internal.FileAssociationGroup.FileAssociationNoMimesException;
@@ -82,7 +81,7 @@ LauncherFromOptions faWithDefaultDescription() {
8281
}
8382

8483
Launcher create(Options options) {
85-
final var builder = new LauncherBuilder().defaultIconResourceName(defaultIconResourceName());
84+
final var builder = new LauncherBuilder();
8685

8786
DESCRIPTION.ifPresentIn(options, builder::description);
8887
builder.icon(toLauncherIcon(ICON.findIn(options).orElse(null)));
@@ -167,23 +166,6 @@ private static LauncherIcon toLauncherIcon(Path launcherIconPath) {
167166
}
168167
}
169168

170-
private static String defaultIconResourceName() {
171-
switch (OperatingSystem.current()) {
172-
case WINDOWS -> {
173-
return "JavaApp.ico";
174-
}
175-
case LINUX -> {
176-
return "JavaApp.png";
177-
}
178-
case MACOS -> {
179-
return "JavaApp.icns";
180-
}
181-
default -> {
182-
throw new UnsupportedOperationException();
183-
}
184-
}
185-
}
186-
187169
private BiConsumer<FileAssociationGroup.Builder, LauncherBuilder> faGroupBuilderMutator;
188170
private BiFunction<Options, FileAssociation, FileAssociation> faMapper;
189171
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -632,7 +632,7 @@ private static Callable<Void> createTask(TaskContext context, TaskID id, TaskCon
632632
final var accepted = withAction && context.test(id);
633633

634634
if (TRACE_TASK_ACTION) {
635-
var sb = new StringBuffer();
635+
var sb = new StringBuilder();
636636
sb.append("Execute task=[").append(id).append("]: ");
637637
if (!withAction) {
638638
sb.append("no action");

src/jdk.jpackage/share/classes/jdk/jpackage/internal/cli/OptionSpecMapperOptionScope.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ private static <T, U> Set<OptionScope> addOptionSpecBuilderMutator(
111111
if (contextOptionScope.isEmpty()) {
112112
var mutators = new AccumulatingContextOptionScope<T, U>(optionSpecBuilder, contextType);
113113
mutators.addMutator(optionSpecBuilderMutator);
114-
scope = SetBuilder.build(OptionScope.class).add(scope).add(mutators).create();
114+
scope = SetBuilder.<OptionScope>build().add(scope).add(mutators).create();
115115
}
116116

117117
return scope;

src/jdk.jpackage/share/classes/jdk/jpackage/internal/cli/StandardBundlingOperation.java

Lines changed: 48 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -53,27 +53,50 @@ public enum StandardBundlingOperation implements BundlingOperationOptionScope {
5353
CREATE_LINUX_DEB(StandardPackageType.LINUX_DEB, "^(?!(win-|mac-|linux-rpm-))", OperatingSystem.LINUX),
5454
CREATE_MAC_PKG(StandardPackageType.MAC_PKG, "^(?!(linux-|win-|mac-dmg-))", OperatingSystem.MACOS),
5555
CREATE_MAC_DMG(StandardPackageType.MAC_DMG, "^(?!(linux-|win-|mac-pkg-))", OperatingSystem.MACOS),
56-
SIGN_MAC_APP_IMAGE(APP_IMAGE, OperatingSystem.MACOS, "sign");
56+
SIGN_MAC_APP_IMAGE(APP_IMAGE, OperatingSystem.MACOS, Verb.SIGN);
57+
58+
/**
59+
* Supported values of the {@link BundlingOperationDescriptor#verb()} property.
60+
*/
61+
private enum Verb {
62+
CREATE(BundlingOperationDescriptor.VERB_CREATE_BUNDLE),
63+
SIGN("sign"),
64+
;
65+
66+
Verb(String value) {
67+
this.value = Objects.requireNonNull(value);
68+
}
69+
70+
String value() {
71+
return value;
72+
}
5773

58-
StandardBundlingOperation(PackageType packageType, String optionNameRegexp, OperatingSystem os, String descriptorVerb) {
74+
boolean createBundle() {
75+
return this == CREATE;
76+
}
77+
78+
private final String value;
79+
}
80+
81+
StandardBundlingOperation(PackageType packageType, String optionNameRegexp, OperatingSystem os, Verb descriptorVerb) {
5982
this.packageType = Objects.requireNonNull(packageType);
6083
optionNamePredicate = Pattern.compile(optionNameRegexp).asPredicate();
6184
this.os = Objects.requireNonNull(os);
6285
this.descriptorVerb = Objects.requireNonNull(descriptorVerb);
6386
}
6487

6588
StandardBundlingOperation(PackageType packageType, String optionNameRegexp, OperatingSystem os) {
66-
this(packageType, optionNameRegexp, os, "create");
89+
this(packageType, optionNameRegexp, os, Verb.CREATE);
6790
}
6891

69-
StandardBundlingOperation(PackageType packageType, OperatingSystem os, String descriptorVerb) {
92+
StandardBundlingOperation(PackageType packageType, OperatingSystem os, Verb descriptorVerb) {
7093
this.packageType = Objects.requireNonNull(packageType);
7194
optionNamePredicate = v -> false;
7295
this.os = Objects.requireNonNull(os);
7396
this.descriptorVerb = Objects.requireNonNull(descriptorVerb);
7497
}
7598

76-
OperatingSystem os() {
99+
public OperatingSystem os() {
77100
return os;
78101
}
79102

@@ -89,9 +112,17 @@ public PackageType packageType() {
89112
return packageType;
90113
}
91114

115+
/**
116+
* Returns {@code true} if this bundling operation will create a new bundle and
117+
* {@code false} otherwise.
118+
*/
119+
public boolean isCreateBundle() {
120+
return descriptorVerb.createBundle();
121+
}
122+
92123
@Override
93124
public BundlingOperationDescriptor descriptor() {
94-
return new BundlingOperationDescriptor(os(), packageTypeValue(), descriptorVerb);
125+
return new BundlingOperationDescriptor(os(), packageTypeValue(), descriptorVerb.value());
95126
}
96127

97128
public static Optional<StandardBundlingOperation> valueOf(BundlingOperationDescriptor descriptor) {
@@ -101,24 +132,24 @@ public static Optional<StandardBundlingOperation> valueOf(BundlingOperationDescr
101132
}).findFirst();
102133
}
103134

104-
static Stream<StandardBundlingOperation> ofPlatform(OperatingSystem os) {
135+
public static Stream<StandardBundlingOperation> ofPlatform(OperatingSystem os) {
105136
return Stream.of(values()).filter(platform(os));
106137
}
107138

139+
public static Predicate<StandardBundlingOperation> platform(OperatingSystem os) {
140+
Objects.requireNonNull(os);
141+
return op -> {
142+
return op.os() == os;
143+
};
144+
}
145+
108146
static Set<BundlingOperationOptionScope> fromOptionName(String optionName) {
109147
Objects.requireNonNull(optionName);
110148
return Stream.of(StandardBundlingOperation.values()).filter(v -> {
111149
return v.optionNamePredicate.test(optionName);
112150
}).collect(Collectors.toUnmodifiableSet());
113151
}
114152

115-
static Predicate<StandardBundlingOperation> platform(OperatingSystem os) {
116-
Objects.requireNonNull(os);
117-
return op -> {
118-
return op.os() == os;
119-
};
120-
}
121-
122153
static Stream<StandardBundlingOperation> narrow(Stream<OptionScope> scope) {
123154
return scope.filter(StandardBundlingOperation.class::isInstance).map(StandardBundlingOperation.class::cast);
124155
}
@@ -145,8 +176,8 @@ static Stream<StandardBundlingOperation> narrow(Stream<OptionScope> scope) {
145176

146177
static final Set<BundlingOperationOptionScope> LINUX = LINUX_CREATE_BUNDLE;
147178

148-
static final Set<BundlingOperationOptionScope> MACOS = SetBuilder.build(
149-
BundlingOperationOptionScope.class).add(MACOS_CREATE_BUNDLE).add(SIGN_MAC_APP_IMAGE).create();
179+
static final Set<BundlingOperationOptionScope> MACOS = SetBuilder.<BundlingOperationOptionScope>build(
180+
).add(MACOS_CREATE_BUNDLE).add(SIGN_MAC_APP_IMAGE).create();
150181

151182
static final Set<BundlingOperationOptionScope> MACOS_APP_IMAGE = Set.of(
152183
SIGN_MAC_APP_IMAGE, CREATE_MAC_APP_IMAGE);
@@ -169,5 +200,5 @@ static Stream<StandardBundlingOperation> narrow(Stream<OptionScope> scope) {
169200
private final Predicate<String> optionNamePredicate;
170201
private final OperatingSystem os;
171202
private final PackageType packageType;
172-
private final String descriptorVerb;
203+
private final Verb descriptorVerb;
173204
}

src/jdk.jpackage/share/classes/jdk/jpackage/internal/cli/StandardOption.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -543,7 +543,7 @@ private static <T> OptionSpecBuilder<T> option(String name, Class<? extends T> v
543543
.description("help.option." + name)
544544
.scope(fromOptionName(name))
545545
.scope(scope -> {
546-
return SetBuilder.build(OptionScope.class)
546+
return SetBuilder.<OptionScope>build()
547547
.add(scope)
548548
.add(BundlingOperationModifier.values())
549549
.create();

src/jdk.jpackage/share/classes/jdk/jpackage/internal/model/Application.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
*
4141
* @see Package
4242
*/
43-
public interface Application extends BundleSpec {
43+
public non-sealed interface Application extends BundleSpec {
4444

4545
/**
4646
* Gets the name of this application.

0 commit comments

Comments
 (0)