mirror of
https://github.com/openjdk/jdk.git
synced 2026-01-28 03:58:21 +00:00
8372292: Remove redundant "throws ConfigException"
Reviewed-by: almatvee
This commit is contained in:
parent
f912772045
commit
e439909b7d
@ -26,7 +26,6 @@ package jdk.jpackage.internal;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import jdk.jpackage.internal.model.ConfigException;
|
||||
import jdk.jpackage.internal.model.LinuxDebPackage;
|
||||
import jdk.jpackage.internal.model.LinuxDebPackageMixin;
|
||||
|
||||
@ -36,7 +35,7 @@ final class LinuxDebPackageBuilder {
|
||||
this.pkgBuilder = Objects.requireNonNull(pkgBuilder);
|
||||
}
|
||||
|
||||
LinuxDebPackage create() throws ConfigException {
|
||||
LinuxDebPackage create() {
|
||||
if (pkgBuilder.category().isEmpty()) {
|
||||
pkgBuilder.category(DEFAULTS.category());
|
||||
}
|
||||
|
||||
@ -32,12 +32,11 @@ import java.util.Optional;
|
||||
import java.util.regex.Pattern;
|
||||
import jdk.jpackage.internal.model.AppImageLayout;
|
||||
import jdk.jpackage.internal.model.ApplicationLayout;
|
||||
import jdk.jpackage.internal.model.ConfigException;
|
||||
import jdk.jpackage.internal.model.LinuxApplication;
|
||||
import jdk.jpackage.internal.model.LinuxPackage;
|
||||
import jdk.jpackage.internal.model.RuntimeLayout;
|
||||
import jdk.jpackage.internal.model.LinuxPackageMixin;
|
||||
import jdk.jpackage.internal.model.Package;
|
||||
import jdk.jpackage.internal.model.RuntimeLayout;
|
||||
import jdk.jpackage.internal.model.StandardPackageType;
|
||||
|
||||
final class LinuxPackageBuilder {
|
||||
@ -46,20 +45,17 @@ final class LinuxPackageBuilder {
|
||||
this.pkgBuilder = Objects.requireNonNull(pkgBuilder);
|
||||
}
|
||||
|
||||
LinuxPackage create() throws ConfigException {
|
||||
if (literalName != null) {
|
||||
pkgBuilder.name(literalName);
|
||||
} else {
|
||||
LinuxPackage create() {
|
||||
pkgBuilder.name(Optional.ofNullable(literalName).orElseGet(() -> {
|
||||
// Lower case and turn spaces/underscores into dashes
|
||||
pkgBuilder.name(pkgBuilder.create().packageName().toLowerCase().replaceAll("[ _]", "-"));
|
||||
}
|
||||
return pkgBuilder.create().packageName().toLowerCase().replaceAll("[ _]", "-");
|
||||
}));
|
||||
|
||||
final var tmpPkg = pkgBuilder.create();
|
||||
|
||||
final var stdPkgType = tmpPkg.asStandardPackageType();
|
||||
if (stdPkgType.isPresent()) {
|
||||
validatePackageName(tmpPkg.packageName(), stdPkgType.orElseThrow());
|
||||
}
|
||||
tmpPkg.asStandardPackageType().ifPresent(stdPkgType -> {
|
||||
validatePackageName(tmpPkg.packageName(), stdPkgType);
|
||||
});
|
||||
|
||||
final AppImageLayout relativeInstalledLayout;
|
||||
if (create(tmpPkg).isInstallDirInUsrTree()) {
|
||||
@ -81,7 +77,7 @@ final class LinuxPackageBuilder {
|
||||
.create());
|
||||
}
|
||||
|
||||
private LinuxPackage create(Package pkg) throws ConfigException {
|
||||
private LinuxPackage create(Package pkg) {
|
||||
return LinuxPackage.create(pkg, new LinuxPackageMixin.Stub(
|
||||
Optional.ofNullable(menuGroupName).orElseGet(DEFAULTS::menuGroupName),
|
||||
category(),
|
||||
@ -137,8 +133,7 @@ final class LinuxPackageBuilder {
|
||||
lib.resolve("lib/libapplauncher.so"));
|
||||
}
|
||||
|
||||
private static void validatePackageName(String packageName,
|
||||
StandardPackageType pkgType) throws ConfigException {
|
||||
private static void validatePackageName(String packageName, StandardPackageType pkgType) {
|
||||
switch (pkgType) {
|
||||
case LINUX_DEB -> {
|
||||
//
|
||||
|
||||
@ -26,7 +26,6 @@ package jdk.jpackage.internal;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import jdk.jpackage.internal.model.ConfigException;
|
||||
import jdk.jpackage.internal.model.LinuxRpmPackage;
|
||||
import jdk.jpackage.internal.model.LinuxRpmPackageMixin;
|
||||
|
||||
@ -36,7 +35,7 @@ final class LinuxRpmPackageBuilder {
|
||||
this.pkgBuilder = Objects.requireNonNull(pkgBuilder);
|
||||
}
|
||||
|
||||
LinuxRpmPackage create() throws ConfigException {
|
||||
LinuxRpmPackage create() {
|
||||
if (pkgBuilder.release().isEmpty()) {
|
||||
pkgBuilder.release("1");
|
||||
}
|
||||
|
||||
@ -28,7 +28,6 @@ import java.nio.file.Path;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import jdk.jpackage.internal.model.AppImageSigningConfig;
|
||||
import jdk.jpackage.internal.model.ConfigException;
|
||||
import jdk.jpackage.internal.model.LauncherStartupInfo;
|
||||
|
||||
final class AppImageSigningConfigBuilder {
|
||||
@ -62,21 +61,20 @@ final class AppImageSigningConfigBuilder {
|
||||
return this;
|
||||
}
|
||||
|
||||
Optional<AppImageSigningConfig> create() throws ConfigException {
|
||||
final var identityCfg = signingIdentityBuilder.create();
|
||||
if (identityCfg.isEmpty()) {
|
||||
return Optional.empty();
|
||||
} else {
|
||||
Optional<AppImageSigningConfig> create() {
|
||||
return signingIdentityBuilder.create().map(cfg -> {
|
||||
final var validatedEntitlements = validatedEntitlements();
|
||||
return identityCfg.map(cfg -> {
|
||||
return new AppImageSigningConfig.Stub(cfg.identity(), signingIdentifierPrefix,
|
||||
validatedEntitlements, cfg.keychain().map(Keychain::name),
|
||||
Optional.ofNullable(entitlementsResourceName).orElse("entitlements.plist"));
|
||||
});
|
||||
}
|
||||
return new AppImageSigningConfig.Stub(
|
||||
Objects.requireNonNull(cfg.identity()),
|
||||
Objects.requireNonNull(signingIdentifierPrefix),
|
||||
validatedEntitlements,
|
||||
cfg.keychain().map(Keychain::name),
|
||||
Optional.ofNullable(entitlementsResourceName).orElse("entitlements.plist")
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
private Optional<Path> validatedEntitlements() throws ConfigException {
|
||||
private Optional<Path> validatedEntitlements() {
|
||||
return Optional.ofNullable(entitlements);
|
||||
}
|
||||
|
||||
|
||||
@ -28,17 +28,15 @@ import java.io.IOException;
|
||||
import java.io.UncheckedIOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import jdk.jpackage.internal.model.AppImageLayout;
|
||||
import jdk.jpackage.internal.model.AppImageSigningConfig;
|
||||
import jdk.jpackage.internal.model.Application;
|
||||
import jdk.jpackage.internal.model.ConfigException;
|
||||
import jdk.jpackage.internal.model.Launcher;
|
||||
import jdk.jpackage.internal.model.MacApplication;
|
||||
import jdk.jpackage.internal.model.MacApplicationMixin;
|
||||
import jdk.jpackage.internal.model.AppImageLayout;
|
||||
import jdk.jpackage.internal.model.AppImageSigningConfig;
|
||||
|
||||
final class MacApplicationBuilder {
|
||||
|
||||
@ -92,7 +90,7 @@ final class MacApplicationBuilder {
|
||||
return this;
|
||||
}
|
||||
|
||||
MacApplication create() throws ConfigException {
|
||||
MacApplication create() {
|
||||
if (externalInfoPlistFile != null) {
|
||||
return createCopyForExternalInfoPlistFile().create();
|
||||
}
|
||||
@ -136,7 +134,7 @@ final class MacApplicationBuilder {
|
||||
return true;
|
||||
}
|
||||
|
||||
private static void validateAppVersion(Application app) throws ConfigException {
|
||||
private static void validateAppVersion(Application app) {
|
||||
try {
|
||||
CFBundleVersion.of(app.version());
|
||||
} catch (IllegalArgumentException ex) {
|
||||
@ -156,7 +154,7 @@ final class MacApplicationBuilder {
|
||||
}
|
||||
}
|
||||
|
||||
private MacApplicationBuilder createCopyForExternalInfoPlistFile() throws ConfigException {
|
||||
private MacApplicationBuilder createCopyForExternalInfoPlistFile() {
|
||||
try {
|
||||
final var plistFile = AppImageInfoPListFile.loadFromInfoPList(externalInfoPlistFile);
|
||||
|
||||
@ -187,15 +185,11 @@ final class MacApplicationBuilder {
|
||||
}
|
||||
}
|
||||
|
||||
private Optional<AppImageSigningConfig> createSigningConfig() throws ConfigException {
|
||||
if (signingBuilder != null) {
|
||||
return signingBuilder.create();
|
||||
} else {
|
||||
return Optional.empty();
|
||||
}
|
||||
private Optional<AppImageSigningConfig> createSigningConfig() {
|
||||
return Optional.ofNullable(signingBuilder).flatMap(AppImageSigningConfigBuilder::create);
|
||||
}
|
||||
|
||||
private String validatedBundleName() throws ConfigException {
|
||||
private String validatedBundleName() {
|
||||
final var value = Optional.ofNullable(bundleName).orElseGet(() -> {
|
||||
final var appName = app.name();
|
||||
// Commented out for backward compatibility
|
||||
@ -214,7 +208,7 @@ final class MacApplicationBuilder {
|
||||
return value;
|
||||
}
|
||||
|
||||
private String validatedBundleIdentifier() throws ConfigException {
|
||||
private String validatedBundleIdentifier() {
|
||||
final var value = Optional.ofNullable(bundleIdentifier).orElseGet(() -> {
|
||||
return app.mainLauncher()
|
||||
.flatMap(Launcher::startupInfo)
|
||||
@ -238,16 +232,12 @@ final class MacApplicationBuilder {
|
||||
return value;
|
||||
}
|
||||
|
||||
private String validatedCategory() throws ConfigException {
|
||||
private String validatedCategory() {
|
||||
return "public.app-category." + Optional.ofNullable(category).orElseGet(DEFAULTS::category);
|
||||
}
|
||||
|
||||
private Optional<Path> validatedIcon() throws ConfigException {
|
||||
if (icon != null) {
|
||||
LauncherBuilder.validateIcon(icon);
|
||||
}
|
||||
|
||||
return Optional.ofNullable(icon);
|
||||
private Optional<Path> validatedIcon() {
|
||||
return Optional.ofNullable(icon).map(LauncherBuilder::validateIcon);
|
||||
}
|
||||
|
||||
private record Defaults(String category) {
|
||||
|
||||
@ -28,7 +28,6 @@ import java.nio.file.Path;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import jdk.jpackage.internal.model.ConfigException;
|
||||
import jdk.jpackage.internal.model.MacDmgPackage;
|
||||
import jdk.jpackage.internal.model.MacDmgPackageMixin;
|
||||
|
||||
@ -52,7 +51,7 @@ final class MacDmgPackageBuilder {
|
||||
return Optional.ofNullable(dmgContent).orElseGet(List::of);
|
||||
}
|
||||
|
||||
MacDmgPackage create() throws ConfigException {
|
||||
MacDmgPackage create() {
|
||||
final var pkg = pkgBuilder.create();
|
||||
|
||||
return MacDmgPackage.create(pkg, new MacDmgPackageMixin.Stub(
|
||||
|
||||
@ -27,15 +27,13 @@ package jdk.jpackage.internal;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
|
||||
import jdk.jpackage.internal.model.ConfigException;
|
||||
import jdk.jpackage.internal.model.FileAssociation;
|
||||
import jdk.jpackage.internal.model.MacFileAssociation;
|
||||
import jdk.jpackage.internal.model.MacFileAssociationMixin;
|
||||
|
||||
final class MacFileAssociationBuilder {
|
||||
|
||||
MacFileAssociation create(FileAssociation fa) throws ConfigException {
|
||||
MacFileAssociation create(FileAssociation fa) {
|
||||
Objects.requireNonNull(fa);
|
||||
|
||||
final var mixin = new MacFileAssociationMixin.Stub(
|
||||
|
||||
@ -29,7 +29,6 @@ import static jdk.jpackage.internal.MacPackagingPipeline.LayoutUtils.packagerLay
|
||||
|
||||
import java.nio.file.Files;
|
||||
import java.util.Objects;
|
||||
import jdk.jpackage.internal.model.ConfigException;
|
||||
import jdk.jpackage.internal.model.MacApplication;
|
||||
import jdk.jpackage.internal.model.MacPackage;
|
||||
import jdk.jpackage.internal.model.MacPackageMixin;
|
||||
@ -49,7 +48,7 @@ final class MacPackageBuilder {
|
||||
return pkgBuilder;
|
||||
}
|
||||
|
||||
MacPackage create() throws ConfigException {
|
||||
MacPackage create() {
|
||||
|
||||
final var app = (MacApplication)pkgBuilder.app();
|
||||
|
||||
|
||||
@ -224,10 +224,12 @@ final class MacPackagingPipeline {
|
||||
if (!app.sign()) {
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
return toSupplier(() -> {
|
||||
return new PackageBuilder(app, SignAppImagePackageType.VALUE).predefinedAppImage(
|
||||
Objects.requireNonNull(env.appImageDir())).installDir(Path.of("/foo")).create();
|
||||
}).get();
|
||||
return new PackageBuilder(
|
||||
app,
|
||||
SignAppImagePackageType.VALUE
|
||||
).predefinedAppImage(
|
||||
Objects.requireNonNull(env.appImageDir())
|
||||
).installDir(Path.of("/foo")).create();
|
||||
}
|
||||
|
||||
static final class LayoutUtils {
|
||||
|
||||
@ -26,7 +26,6 @@ package jdk.jpackage.internal;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import jdk.jpackage.internal.model.ConfigException;
|
||||
import jdk.jpackage.internal.model.MacPkgPackage;
|
||||
import jdk.jpackage.internal.model.MacPkgPackageMixin;
|
||||
import jdk.jpackage.internal.model.PkgSigningConfig;
|
||||
@ -42,20 +41,16 @@ final class MacPkgPackageBuilder {
|
||||
return this;
|
||||
}
|
||||
|
||||
MacPkgPackage create() throws ConfigException {
|
||||
MacPkgPackage create() {
|
||||
var pkg = MacPkgPackage.create(pkgBuilder.create(), new MacPkgPackageMixin.Stub(createSigningConfig()));
|
||||
validatePredefinedAppImage(pkg);
|
||||
return pkg;
|
||||
}
|
||||
|
||||
private Optional<PkgSigningConfig> createSigningConfig() throws ConfigException {
|
||||
if (signingBuilder != null) {
|
||||
return signingBuilder.create().map(cfg -> {
|
||||
return new PkgSigningConfig.Stub(cfg.identity(), cfg.keychain().map(Keychain::name));
|
||||
});
|
||||
} else {
|
||||
return Optional.empty();
|
||||
}
|
||||
private Optional<PkgSigningConfig> createSigningConfig() {
|
||||
return Optional.ofNullable(signingBuilder).flatMap(SigningIdentityBuilder::create).map(cfg -> {
|
||||
return new PkgSigningConfig.Stub(cfg.identity(), cfg.keychain().map(Keychain::name));
|
||||
});
|
||||
}
|
||||
|
||||
private static void validatePredefinedAppImage(MacPkgPackage pkg) {
|
||||
|
||||
@ -30,12 +30,11 @@ import java.nio.file.Files;
|
||||
import java.nio.file.NoSuchFileException;
|
||||
import java.nio.file.Path;
|
||||
import java.util.function.Predicate;
|
||||
import jdk.jpackage.internal.model.ConfigException;
|
||||
import jdk.jpackage.internal.model.RuntimeLayout;
|
||||
|
||||
final class MacRuntimeValidator {
|
||||
|
||||
static void validateRuntimeHasJliLib(RuntimeLayout runtimeLayout) throws ConfigException {
|
||||
static void validateRuntimeHasJliLib(RuntimeLayout runtimeLayout) {
|
||||
final var jliName = Path.of("libjli.dylib");
|
||||
try (var walk = Files.walk(runtimeLayout.runtimeDirectory().resolve("lib"))) {
|
||||
if (walk.map(Path::getFileName).anyMatch(Predicate.isEqual(jliName))) {
|
||||
@ -51,7 +50,7 @@ final class MacRuntimeValidator {
|
||||
runtimeLayout.unresolve().runtimeDirectory().resolve("lib/**").resolve(jliName)).create();
|
||||
}
|
||||
|
||||
static void validateRuntimeHasNoBinDir(RuntimeLayout runtimeLayout) throws ConfigException {
|
||||
static void validateRuntimeHasNoBinDir(RuntimeLayout runtimeLayout) {
|
||||
if (Files.isDirectory(runtimeLayout.runtimeDirectory().resolve("bin"))) {
|
||||
throw I18N.buildConfigException()
|
||||
.message("error.invalid-runtime-image-bin-dir", runtimeLayout.rootDirectory())
|
||||
|
||||
@ -82,7 +82,7 @@ final class SigningIdentityBuilder {
|
||||
return this;
|
||||
}
|
||||
|
||||
Optional<SigningConfig> create() throws ConfigException {
|
||||
Optional<SigningConfig> create() {
|
||||
if (signingIdentity == null && certificateSelector == null) {
|
||||
return Optional.empty();
|
||||
} else {
|
||||
@ -90,11 +90,11 @@ final class SigningIdentityBuilder {
|
||||
}
|
||||
}
|
||||
|
||||
private Optional<Keychain> validatedKeychain() throws ConfigException {
|
||||
private Optional<Keychain> validatedKeychain() {
|
||||
return Optional.ofNullable(keychain).map(Keychain::new);
|
||||
}
|
||||
|
||||
private SigningIdentity validatedSigningIdentity() throws ConfigException {
|
||||
private SigningIdentity validatedSigningIdentity() {
|
||||
if (signingIdentity != null) {
|
||||
return new SigningIdentityImpl(signingIdentity);
|
||||
}
|
||||
@ -142,7 +142,7 @@ final class SigningIdentityBuilder {
|
||||
}
|
||||
|
||||
private static X509Certificate selectSigningIdentity(List<X509Certificate> certs,
|
||||
CertificateSelector certificateSelector, Optional<Keychain> keychain) throws ConfigException {
|
||||
CertificateSelector certificateSelector, Optional<Keychain> keychain) {
|
||||
Objects.requireNonNull(certificateSelector);
|
||||
Objects.requireNonNull(keychain);
|
||||
switch (certs.size()) {
|
||||
|
||||
@ -35,13 +35,10 @@ import java.util.Optional;
|
||||
import java.util.function.BiFunction;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
import jdk.jpackage.internal.model.AppImageLayout;
|
||||
import jdk.jpackage.internal.model.Application;
|
||||
import jdk.jpackage.internal.model.ApplicationLaunchers;
|
||||
import jdk.jpackage.internal.model.ConfigException;
|
||||
import jdk.jpackage.internal.model.ExternalApplication;
|
||||
import jdk.jpackage.internal.model.JPackageException;
|
||||
import jdk.jpackage.internal.model.Launcher;
|
||||
import jdk.jpackage.internal.model.LauncherIcon;
|
||||
import jdk.jpackage.internal.model.LauncherStartupInfo;
|
||||
@ -50,26 +47,17 @@ import jdk.jpackage.internal.model.RuntimeBuilder;
|
||||
|
||||
final class ApplicationBuilder {
|
||||
|
||||
Application create() throws ConfigException {
|
||||
Application create() {
|
||||
Objects.requireNonNull(appImageLayout);
|
||||
|
||||
final var launchersAsList = Optional.ofNullable(launchers).map(
|
||||
ApplicationLaunchers::asList).orElseGet(List::of);
|
||||
|
||||
launchersAsList.stream().collect(Collectors.toMap(Launcher::name, x -> x, (a, b) -> {
|
||||
throw new JPackageException(I18N.format("error.launcher-duplicate-name", a.name()));
|
||||
}));
|
||||
|
||||
final String effectiveName;
|
||||
if (name != null) {
|
||||
effectiveName = name;
|
||||
} else if (!launchersAsList.isEmpty()) {
|
||||
effectiveName = launchers.mainLauncher().name();
|
||||
} else {
|
||||
throw buildConfigException("error.no.name").advice("error.no.name.advice").create();
|
||||
}
|
||||
|
||||
Objects.requireNonNull(launchersAsList);
|
||||
final String effectiveName = Optional.ofNullable(name).or(() -> {
|
||||
return Optional.ofNullable(launchers).map(ApplicationLaunchers::mainLauncher).map(Launcher::name);
|
||||
}).orElseThrow(() -> {
|
||||
return buildConfigException("error.no.name").advice("error.no.name.advice").create();
|
||||
});
|
||||
|
||||
return new Application.Stub(
|
||||
effectiveName,
|
||||
@ -79,7 +67,10 @@ final class ApplicationBuilder {
|
||||
Optional.ofNullable(copyright).orElseGet(DEFAULTS::copyright),
|
||||
Optional.ofNullable(srcDir),
|
||||
Optional.ofNullable(contentDirs).orElseGet(List::of),
|
||||
appImageLayout, Optional.ofNullable(runtimeBuilder), launchersAsList, Map.of());
|
||||
appImageLayout,
|
||||
Optional.ofNullable(runtimeBuilder),
|
||||
launchersAsList,
|
||||
Map.of());
|
||||
}
|
||||
|
||||
ApplicationBuilder runtimeBuilder(RuntimeBuilder v) {
|
||||
|
||||
@ -31,7 +31,6 @@ import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import jdk.jpackage.internal.model.AppImageLayout;
|
||||
import jdk.jpackage.internal.model.Application;
|
||||
import jdk.jpackage.internal.model.ConfigException;
|
||||
import jdk.jpackage.internal.model.Package;
|
||||
import jdk.jpackage.internal.resources.ResourceLocator;
|
||||
|
||||
@ -41,7 +40,7 @@ final class BuildEnvBuilder {
|
||||
this.root = Objects.requireNonNull(root);
|
||||
}
|
||||
|
||||
BuildEnv create() throws ConfigException {
|
||||
BuildEnv create() {
|
||||
var exceptionBuilder = I18N.buildConfigException("ERR_BuildRootInvalid", root);
|
||||
if (Files.isDirectory(root)) {
|
||||
try (var rootDirContents = Files.list(root)) {
|
||||
|
||||
@ -50,7 +50,6 @@ import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
import jdk.internal.module.ModulePath;
|
||||
import jdk.jpackage.internal.model.AppImageLayout;
|
||||
import jdk.jpackage.internal.model.ConfigException;
|
||||
import jdk.jpackage.internal.model.JPackageException;
|
||||
import jdk.jpackage.internal.model.LauncherModularStartupInfo;
|
||||
import jdk.jpackage.internal.model.LauncherStartupInfo;
|
||||
@ -95,7 +94,7 @@ final class JLinkRuntimeBuilder implements RuntimeBuilder {
|
||||
}
|
||||
|
||||
static RuntimeBuilder createJLinkRuntimeBuilder(List<Path> modulePath, Set<String> addModules,
|
||||
Set<String> limitModules, List<String> options, List<LauncherStartupInfo> startupInfos) throws ConfigException {
|
||||
Set<String> limitModules, List<String> options, List<LauncherStartupInfo> startupInfos) {
|
||||
return new JLinkRuntimeBuilder(createJLinkCmdline(modulePath, addModules, limitModules,
|
||||
options, startupInfos));
|
||||
}
|
||||
@ -147,7 +146,7 @@ final class JLinkRuntimeBuilder implements RuntimeBuilder {
|
||||
}
|
||||
|
||||
private static List<String> createJLinkCmdline(List<Path> modulePath, Set<String> addModules,
|
||||
Set<String> limitModules, List<String> options, List<LauncherStartupInfo> startupInfos) throws ConfigException {
|
||||
Set<String> limitModules, List<String> options, List<LauncherStartupInfo> startupInfos) {
|
||||
List<String> launcherModules = startupInfos.stream().map(si -> {
|
||||
if (si instanceof LauncherModularStartupInfo siModular) {
|
||||
return siModular.moduleName();
|
||||
|
||||
@ -25,7 +25,6 @@
|
||||
package jdk.jpackage.internal;
|
||||
|
||||
import static jdk.jpackage.internal.I18N.buildConfigException;
|
||||
import static jdk.jpackage.internal.util.function.ThrowingConsumer.toConsumer;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.util.List;
|
||||
@ -34,23 +33,20 @@ import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
import jdk.internal.util.OperatingSystem;
|
||||
import jdk.jpackage.internal.model.ConfigException;
|
||||
import jdk.jpackage.internal.model.CustomLauncherIcon;
|
||||
import jdk.jpackage.internal.model.DefaultLauncherIcon;
|
||||
import jdk.jpackage.internal.model.FileAssociation;
|
||||
import jdk.jpackage.internal.model.Launcher;
|
||||
import jdk.jpackage.internal.model.Launcher.Stub;
|
||||
import jdk.jpackage.internal.util.PathUtils;
|
||||
import jdk.jpackage.internal.model.LauncherIcon;
|
||||
import jdk.jpackage.internal.model.LauncherStartupInfo;
|
||||
import jdk.jpackage.internal.model.ResourceDirLauncherIcon;
|
||||
import jdk.jpackage.internal.util.PathUtils;
|
||||
|
||||
final class LauncherBuilder {
|
||||
|
||||
Launcher create() throws ConfigException {
|
||||
Launcher create() {
|
||||
CustomLauncherIcon.fromLauncherIcon(icon)
|
||||
.map(CustomLauncherIcon::path)
|
||||
.ifPresent(toConsumer(LauncherBuilder::validateIcon));
|
||||
.ifPresent(LauncherBuilder::validateIcon);
|
||||
|
||||
final var fa = createFileAssociations(faSources, Optional.ofNullable(faTraits).orElse(DEFAULT_FA_TRAITS));
|
||||
|
||||
@ -123,7 +119,7 @@ final class LauncherBuilder {
|
||||
.setCategory("icon");
|
||||
}
|
||||
|
||||
static void validateIcon(Path icon) throws ConfigException {
|
||||
static Path validateIcon(Path icon) {
|
||||
switch (OperatingSystem.current()) {
|
||||
case WINDOWS -> {
|
||||
if (!icon.getFileName().toString().toLowerCase().endsWith(".ico")) {
|
||||
@ -144,13 +140,15 @@ final class LauncherBuilder {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
}
|
||||
|
||||
return icon;
|
||||
}
|
||||
|
||||
record FileAssociationTraits() {
|
||||
}
|
||||
|
||||
private static List<FileAssociation> createFileAssociations(
|
||||
List<FileAssociationGroup> groups, FileAssociationTraits faTraits) throws ConfigException {
|
||||
List<FileAssociationGroup> groups, FileAssociationTraits faTraits) {
|
||||
|
||||
Objects.requireNonNull(groups);
|
||||
Objects.requireNonNull(faTraits);
|
||||
|
||||
@ -31,7 +31,6 @@ import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import jdk.jpackage.internal.model.AppImageLayout;
|
||||
import jdk.jpackage.internal.model.Application;
|
||||
import jdk.jpackage.internal.model.ConfigException;
|
||||
import jdk.jpackage.internal.model.Package;
|
||||
import jdk.jpackage.internal.model.Package.Stub;
|
||||
import jdk.jpackage.internal.model.PackageType;
|
||||
@ -44,7 +43,7 @@ final class PackageBuilder {
|
||||
this.type = Objects.requireNonNull(type);
|
||||
}
|
||||
|
||||
Package create() throws ConfigException {
|
||||
Package create() {
|
||||
final var validatedName = validatedName();
|
||||
|
||||
Path relativeInstallDir;
|
||||
@ -208,8 +207,7 @@ final class PackageBuilder {
|
||||
});
|
||||
}
|
||||
|
||||
private static Path mapInstallDir(Path installDir, PackageType pkgType)
|
||||
throws ConfigException {
|
||||
private static Path mapInstallDir(Path installDir, PackageType pkgType) {
|
||||
var ex = buildConfigException("error.invalid-install-dir", installDir).create();
|
||||
|
||||
if (installDir.getNameCount() == 0) {
|
||||
|
||||
@ -25,7 +25,6 @@
|
||||
package jdk.jpackage.internal;
|
||||
|
||||
import static jdk.jpackage.internal.model.RuntimeBuilder.getDefaultModulePath;
|
||||
import static jdk.jpackage.internal.util.function.ThrowingSupplier.toSupplier;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.UncheckedIOException;
|
||||
@ -38,7 +37,6 @@ import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.function.Supplier;
|
||||
import jdk.jpackage.internal.model.ApplicationLayout;
|
||||
import jdk.jpackage.internal.model.ConfigException;
|
||||
import jdk.jpackage.internal.model.LauncherStartupInfo;
|
||||
import jdk.jpackage.internal.model.RuntimeBuilder;
|
||||
import jdk.jpackage.internal.util.FileUtils;
|
||||
@ -112,8 +110,7 @@ final class RuntimeBuilderBuilder {
|
||||
);
|
||||
}
|
||||
|
||||
private static RuntimeBuilder createCopyingRuntimeBuilder(Path runtimeDir,
|
||||
Path... modulePath) throws ConfigException {
|
||||
private static RuntimeBuilder createCopyingRuntimeBuilder(Path runtimeDir, Path... modulePath) {
|
||||
return appImageLayout -> {
|
||||
try {
|
||||
// copy whole runtime, skipping jmods and src.zip
|
||||
@ -147,10 +144,9 @@ final class RuntimeBuilderBuilder {
|
||||
|
||||
@Override
|
||||
public RuntimeBuilder get() {
|
||||
return toSupplier(() -> createCopyingRuntimeBuilder(
|
||||
return createCopyingRuntimeBuilder(
|
||||
predefinedRuntimeImage,
|
||||
Optional.ofNullable(thiz.modulePath).orElseGet(List::of).toArray(Path[]::new))
|
||||
).get();
|
||||
Optional.ofNullable(thiz.modulePath).orElseGet(List::of).toArray(Path[]::new));
|
||||
}
|
||||
}
|
||||
|
||||
@ -160,13 +156,12 @@ final class RuntimeBuilderBuilder {
|
||||
|
||||
@Override
|
||||
public RuntimeBuilder get() {
|
||||
return toSupplier(() -> JLinkRuntimeBuilder.createJLinkRuntimeBuilder(
|
||||
return JLinkRuntimeBuilder.createJLinkRuntimeBuilder(
|
||||
Optional.ofNullable(thiz.modulePath).orElseGet(List::of),
|
||||
Optional.ofNullable(addModules).orElseGet(Set::of),
|
||||
Optional.ofNullable(limitModules).orElseGet(Set::of),
|
||||
Optional.ofNullable(options).orElseGet(List::of),
|
||||
startupInfos)
|
||||
).get();
|
||||
startupInfos);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -104,23 +104,4 @@ public class ConfigException extends JPackageException {
|
||||
|
||||
private String advice;
|
||||
}
|
||||
|
||||
/**
|
||||
* Throws the cause of the given {@link RuntimeException} exception
|
||||
* as {@link ConfigException} if the cause is of this type or re-throws the given
|
||||
* {@link RuntimeException} exception as-is otherwise.
|
||||
* <p>
|
||||
* Never return a value. It always throws some exception object.
|
||||
*
|
||||
* @param ex exception to re-throw
|
||||
* @return doesn't return value
|
||||
* @throws ConfigException
|
||||
*/
|
||||
public static RuntimeException rethrowConfigException(RuntimeException ex) throws ConfigException {
|
||||
if (ex.getCause() instanceof ConfigException configEx) {
|
||||
throw configEx;
|
||||
} else {
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -27,7 +27,6 @@ package jdk.jpackage.internal;
|
||||
import java.nio.file.Path;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import jdk.jpackage.internal.model.ConfigException;
|
||||
import jdk.jpackage.internal.model.WinExePackage;
|
||||
import jdk.jpackage.internal.model.WinMsiPackage;
|
||||
|
||||
@ -37,11 +36,8 @@ final class WinExePackageBuilder {
|
||||
this.pkg = Objects.requireNonNull(pkg);
|
||||
}
|
||||
|
||||
WinExePackage create() throws ConfigException {
|
||||
if (icon != null) {
|
||||
LauncherBuilder.validateIcon(icon);
|
||||
}
|
||||
return WinExePackage.create(pkg, Optional.ofNullable(icon));
|
||||
WinExePackage create() {
|
||||
return WinExePackage.create(pkg, Optional.ofNullable(icon).map(LauncherBuilder::validateIcon));
|
||||
}
|
||||
|
||||
WinExePackageBuilder icon(Path v) {
|
||||
|
||||
@ -32,9 +32,7 @@ import java.nio.file.Path;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
import jdk.jpackage.internal.model.Application;
|
||||
import jdk.jpackage.internal.model.ConfigException;
|
||||
import jdk.jpackage.internal.model.MsiVersion;
|
||||
import jdk.jpackage.internal.model.WinMsiPackage;
|
||||
import jdk.jpackage.internal.model.WinMsiPackageMixin;
|
||||
@ -45,7 +43,7 @@ final class WinMsiPackageBuilder {
|
||||
this.pkgBuilder = Objects.requireNonNull(pkgBuilder);
|
||||
}
|
||||
|
||||
WinMsiPackage create() throws ConfigException {
|
||||
WinMsiPackage create() {
|
||||
var pkg = pkgBuilder.create();
|
||||
|
||||
try {
|
||||
|
||||
@ -24,8 +24,6 @@
|
||||
*/
|
||||
package jdk.jpackage.internal;
|
||||
|
||||
import static jdk.jpackage.internal.util.function.ThrowingSupplier.toSupplier;
|
||||
|
||||
import java.util.Objects;
|
||||
import jdk.jpackage.internal.util.Result;
|
||||
|
||||
@ -36,6 +34,6 @@ record WinSystemEnvironment(WixToolset wixToolset) implements SystemEnvironment
|
||||
}
|
||||
|
||||
static Result<WinSystemEnvironment> create() {
|
||||
return Result.create(toSupplier(WixTool::createToolset)).map(WinSystemEnvironment::new);
|
||||
return Result.create(WixTool::createToolset).map(WinSystemEnvironment::new);
|
||||
}
|
||||
}
|
||||
|
||||
@ -89,7 +89,7 @@ public enum WixTool {
|
||||
}
|
||||
}
|
||||
|
||||
static WixToolset createToolset() throws ConfigException {
|
||||
static WixToolset createToolset() {
|
||||
Function<List<ToolLookupResult>, Map<WixTool, ToolInfo>> conv = lookupResults -> {
|
||||
return lookupResults.stream().filter(ToolLookupResult::isValid).collect(Collectors.
|
||||
groupingBy(lookupResult -> {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user