< prev index next >

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

Print this page

        

*** 45,183 **** * checkIfOtherSupported(CLIOptions mode, CLIOptions arg) * Determine if the given arg is valid in the a different mode. */ class ValidOptions { ! private ValidOptions() {}; ! // multimap that contains pairs of (mode, supported args) ! private static final Map<CLIOptions, Set<CLIOptions>> options = ! new HashMap<>(); - private static boolean argsInitialized = false; // initializing list of mandatory arguments ! private static void initArgs() { ! if (argsInitialized) { ! return; ! } ! ! // add options for CREATE_IMAGE ! add(CLIOptions.CREATE_IMAGE, CLIOptions.INPUT); ! add(CLIOptions.CREATE_IMAGE, CLIOptions.OUTPUT); ! add(CLIOptions.CREATE_IMAGE, CLIOptions.APPCLASS); ! add(CLIOptions.CREATE_IMAGE, CLIOptions.NAME); ! add(CLIOptions.CREATE_IMAGE, CLIOptions.IDENTIFIER); ! add(CLIOptions.CREATE_IMAGE, CLIOptions.VERBOSE); ! add(CLIOptions.CREATE_IMAGE, CLIOptions.OVERWRITE); ! add(CLIOptions.CREATE_IMAGE, CLIOptions.FILES); ! add(CLIOptions.CREATE_IMAGE, CLIOptions.ARGUMENTS); ! add(CLIOptions.CREATE_IMAGE, CLIOptions.STRIP_NATIVE_COMMANDS); ! add(CLIOptions.CREATE_IMAGE, CLIOptions.ICON); ! add(CLIOptions.CREATE_IMAGE, CLIOptions.VERSION); ! add(CLIOptions.CREATE_IMAGE, CLIOptions.JVM_ARGS); ! add(CLIOptions.CREATE_IMAGE, CLIOptions.SECONDARY_LAUNCHER); ! add(CLIOptions.CREATE_IMAGE, CLIOptions.BUILD_ROOT); ! add(CLIOptions.CREATE_IMAGE, CLIOptions.PREDEFINED_RUNTIME_IMAGE); ! add(CLIOptions.CREATE_IMAGE, CLIOptions.MAIN_JAR); ! add(CLIOptions.CREATE_IMAGE, CLIOptions.MODULE); ! add(CLIOptions.CREATE_IMAGE, CLIOptions.ADD_MODULES); ! add(CLIOptions.CREATE_IMAGE, CLIOptions.MODULE_PATH); ! add(CLIOptions.CREATE_IMAGE, CLIOptions.RESOURCE_DIR); ! ! if (Platform.getPlatform() == Platform.MAC) { ! add(CLIOptions.CREATE_IMAGE, CLIOptions.MAC_SIGN); ! add(CLIOptions.CREATE_IMAGE, CLIOptions.MAC_BUNDLE_NAME); ! add(CLIOptions.CREATE_IMAGE, CLIOptions.MAC_BUNDLE_IDENTIFIER); ! add(CLIOptions.CREATE_IMAGE, CLIOptions.MAC_BUNDLE_SIGNING_PREFIX); ! add(CLIOptions.CREATE_IMAGE, CLIOptions.MAC_SIGNING_KEY_NAME); ! add(CLIOptions.CREATE_IMAGE, CLIOptions.MAC_SIGNING_KEYCHAIN); ! add(CLIOptions.CREATE_IMAGE, CLIOptions.CATEGORY); ! add(CLIOptions.CREATE_IMAGE, CLIOptions.COPYRIGHT); ! } if (Platform.getPlatform() == Platform.WINDOWS) { ! add(CLIOptions.CREATE_IMAGE, CLIOptions.DESCRIPTION); ! add(CLIOptions.CREATE_IMAGE, CLIOptions.VENDOR); ! add(CLIOptions.CREATE_IMAGE, CLIOptions.COPYRIGHT); ! add(CLIOptions.CREATE_IMAGE, CLIOptions.WIN_CONSOLE_HINT); ! } ! ! // add options for CREATE_INSTALLER ! // (start with all options for CREATE_IMAGE) ! Set<CLIOptions> imageOptions = options.get(CLIOptions.CREATE_IMAGE); ! imageOptions.forEach(o -> add(CLIOptions.CREATE_INSTALLER, o)); ! ! add(CLIOptions.CREATE_INSTALLER, CLIOptions.RUNTIME_INSTALLER); ! add(CLIOptions.CREATE_INSTALLER, CLIOptions.INSTALLER_TYPE); ! add(CLIOptions.CREATE_INSTALLER, CLIOptions.LICENSE_FILE); ! add(CLIOptions.CREATE_INSTALLER, CLIOptions.FILE_ASSOCIATIONS); ! add(CLIOptions.CREATE_INSTALLER, CLIOptions.INSTALL_DIR); ! add(CLIOptions.CREATE_INSTALLER, CLIOptions.PREDEFINED_APP_IMAGE); ! add(CLIOptions.CREATE_INSTALLER, CLIOptions.INSTALLER_TYPE); ! if (Platform.getPlatform() == Platform.MAC) { ! add(CLIOptions.CREATE_INSTALLER, CLIOptions.MAC_APP_STORE_CATEGORY); ! add(CLIOptions.CREATE_INSTALLER, ! CLIOptions.MAC_APP_STORE_ENTITLEMENTS); } ! if (Platform.getPlatform() == Platform.LINUX) { ! add(CLIOptions.CREATE_INSTALLER, CLIOptions.LINUX_BUNDLE_NAME); ! add(CLIOptions.CREATE_INSTALLER, CLIOptions.LINUX_DEB_MAINTAINER); ! add(CLIOptions.CREATE_INSTALLER, CLIOptions.LINUX_RPM_LICENSE_TYPE); ! add(CLIOptions.CREATE_INSTALLER, ! CLIOptions.LINUX_PACKAGE_DEPENDENCIES); ! add(CLIOptions.CREATE_INSTALLER, CLIOptions.DESCRIPTION); ! add(CLIOptions.CREATE_INSTALLER, CLIOptions.VENDOR); ! add(CLIOptions.CREATE_INSTALLER, CLIOptions.CATEGORY); ! add(CLIOptions.CREATE_INSTALLER, CLIOptions.COPYRIGHT); ! } ! ! if (Platform.getPlatform() == Platform.WINDOWS) { ! add(CLIOptions.CREATE_INSTALLER, CLIOptions.WIN_MENU_HINT); ! add(CLIOptions.CREATE_INSTALLER, CLIOptions.WIN_MENU_GROUP); ! add(CLIOptions.CREATE_INSTALLER, CLIOptions.WIN_SHORTCUT_HINT); ! add(CLIOptions.CREATE_INSTALLER, ! CLIOptions.WIN_PER_USER_INSTALLATION); ! add(CLIOptions.CREATE_INSTALLER, CLIOptions.WIN_DIR_CHOOSER); ! add(CLIOptions.CREATE_INSTALLER, CLIOptions.WIN_REGISTRY_NAME); ! add(CLIOptions.CREATE_INSTALLER, CLIOptions.WIN_UPGRADE_UUID); ! add(CLIOptions.CREATE_INSTALLER, CLIOptions.CATEGORY); ! add(CLIOptions.CREATE_INSTALLER, CLIOptions.WIN_CONSOLE_HINT); ! } ! ! argsInitialized = true; } ! static void add(CLIOptions mode, CLIOptions arg) { ! if (mode.equals(arg)) { ! return; } - options.computeIfAbsent(mode, - k -> new HashSet<>()).add(arg); } ! static boolean checkIfSupported(CLIOptions mode, CLIOptions arg) { ! if (mode.equals(arg)) { ! return true; } ! initArgs(); ! Set<CLIOptions> set = options.get(mode); ! if (set != null) { ! return set.contains(arg); ! } ! return false; } ! static boolean checkIfOtherSupported(CLIOptions mode, CLIOptions arg) { ! for (CLIOptions other : options.keySet()) { ! if (!other.equals(mode)) { ! if (checkIfSupported(other, arg)) { ! return true; ! } ! } ! } ! return false; } } --- 45,145 ---- * checkIfOtherSupported(CLIOptions mode, CLIOptions arg) * Determine if the given arg is valid in the a different mode. */ class ValidOptions { ! enum USE { ! ALL, // valid in all cases ! LAUNCHER, // valid when creating a launcher ! INSTALL // valid when creating an installer ! } ! private static final HashMap<String, USE> options = new HashMap<>(); // initializing list of mandatory arguments ! static { ! options.put(CLIOptions.CREATE_IMAGE.getId(), USE.ALL); ! options.put(CLIOptions.CREATE_INSTALLER.getId(), USE.ALL); ! options.put(CLIOptions.NAME.getId(), USE.ALL); ! options.put(CLIOptions.VERSION.getId(), USE.ALL); ! options.put(CLIOptions.OUTPUT.getId(), USE.ALL); ! options.put(CLIOptions.TEMP_ROOT.getId(), USE.ALL); ! options.put(CLIOptions.VERBOSE.getId(), USE.ALL); ! options.put(CLIOptions.PREDEFINED_RUNTIME_IMAGE.getId(), USE.ALL); ! options.put(CLIOptions.RESOURCE_DIR.getId(), USE.ALL); ! options.put(CLIOptions.IDENTIFIER.getId(), USE.ALL); ! options.put(CLIOptions.DESCRIPTION.getId(), USE.ALL); ! options.put(CLIOptions.VENDOR.getId(), USE.ALL); ! options.put(CLIOptions.COPYRIGHT.getId(), USE.ALL); ! ! options.put(CLIOptions.INPUT.getId(), USE.LAUNCHER); ! options.put(CLIOptions.FILES.getId(), USE.LAUNCHER); ! options.put(CLIOptions.MODULE.getId(), USE.LAUNCHER); ! options.put(CLIOptions.MODULE_PATH.getId(), USE.LAUNCHER); ! options.put(CLIOptions.ADD_MODULES.getId(), USE.LAUNCHER); ! options.put(CLIOptions.MAIN_JAR.getId(), USE.LAUNCHER); ! options.put(CLIOptions.APPCLASS.getId(), USE.LAUNCHER); ! options.put(CLIOptions.ICON.getId(), USE.LAUNCHER); ! options.put(CLIOptions.ARGUMENTS.getId(), USE.LAUNCHER); ! options.put(CLIOptions.JVM_ARGS.getId(), USE.LAUNCHER); ! options.put(CLIOptions.ADD_LAUNCHER.getId(), USE.LAUNCHER); ! ! options.put(CLIOptions.INSTALLER_TYPE.getId(), USE.INSTALL); ! options.put(CLIOptions.LICENSE_FILE.getId(), USE.INSTALL); ! options.put(CLIOptions.FILE_ASSOCIATIONS.getId(), USE.INSTALL); ! options.put(CLIOptions.INSTALL_DIR.getId(), USE.INSTALL); ! options.put(CLIOptions.PREDEFINED_APP_IMAGE.getId(), USE.INSTALL); ! options.put(CLIOptions.INSTALLER_TYPE.getId(), USE.INSTALL); if (Platform.getPlatform() == Platform.WINDOWS) { ! options.put(CLIOptions.WIN_CONSOLE_HINT.getId(), USE.LAUNCHER); ! options.put(CLIOptions.WIN_MENU_HINT.getId(), USE.INSTALL); ! options.put(CLIOptions.WIN_MENU_GROUP.getId(), USE.INSTALL); ! options.put(CLIOptions.WIN_SHORTCUT_HINT.getId(), USE.INSTALL); ! options.put(CLIOptions.WIN_DIR_CHOOSER.getId(), USE.INSTALL); ! options.put(CLIOptions.WIN_REGISTRY_NAME.getId(), USE.INSTALL); ! options.put(CLIOptions.WIN_UPGRADE_UUID.getId(), USE.INSTALL); ! options.put(CLIOptions.WIN_PER_USER_INSTALLATION.getId(), ! USE.INSTALL); } ! if (Platform.getPlatform() == Platform.MAC) { ! options.put(CLIOptions.MAC_SIGN.getId(), USE.INSTALL); ! options.put(CLIOptions.MAC_BUNDLE_NAME.getId(), USE.INSTALL); ! options.put(CLIOptions.MAC_BUNDLE_IDENTIFIER.getId(), USE.INSTALL); ! options.put(CLIOptions.MAC_BUNDLE_SIGNING_PREFIX.getId(), ! USE.INSTALL); ! options.put(CLIOptions.MAC_SIGNING_KEY_NAME.getId(), USE.INSTALL); ! options.put(CLIOptions.MAC_SIGNING_KEYCHAIN.getId(), USE.INSTALL); ! options.put(CLIOptions.CATEGORY.getId(), USE.INSTALL); ! ! options.put(CLIOptions.MAC_APP_STORE_CATEGORY.getId(), USE.INSTALL); ! options.put(CLIOptions.MAC_APP_STORE_ENTITLEMENTS.getId(), ! USE.INSTALL); } ! if (Platform.getPlatform() == Platform.LINUX) { ! options.put(CLIOptions.LINUX_BUNDLE_NAME.getId(), USE.INSTALL); ! options.put(CLIOptions.LINUX_DEB_MAINTAINER.getId(), USE.INSTALL); ! options.put(CLIOptions.LINUX_RPM_LICENSE_TYPE.getId(), USE.INSTALL); ! options.put(CLIOptions.LINUX_PACKAGE_DEPENDENCIES.getId(), ! USE.INSTALL); ! options.put(CLIOptions.CATEGORY.getId(), USE.INSTALL); } } ! static boolean checkIfSupported(CLIOptions arg) { ! return options.containsKey(arg.getId()); } ! static boolean checkIfImageSupported(CLIOptions arg) { ! USE use = options.get(arg.getId()); ! return USE.ALL == use || USE.LAUNCHER == use; } ! static boolean checkIfInstallerSupported(CLIOptions arg) { ! USE use = options.get(arg.getId()); ! return USE.ALL == use || USE.INSTALL == use; } }
< prev index next >