From 99ebd030c1502d9d79e2e865a5a48fd59d28b737 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Tue, 29 Dec 2015 10:46:09 +0100 Subject: [PATCH] [platform] ConfigImportHelper API cleanup (IDEA-149673 prerequisite) --- .../application/ConfigImportHelper.java | 83 ++++++++----------- .../impl/UpdateCheckerComponent.java | 2 +- .../src/com/intellij/idea/MainImpl.java | 4 +- 3 files changed, 39 insertions(+), 50 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/application/ConfigImportHelper.java b/platform/platform-impl/src/com/intellij/openapi/application/ConfigImportHelper.java index fcb7163680a0..ed53b94d45f9 100644 --- a/platform/platform-impl/src/com/intellij/openapi/application/ConfigImportHelper.java +++ b/platform/platform-impl/src/com/intellij/openapi/application/ConfigImportHelper.java @@ -38,12 +38,8 @@ import java.util.PropertyResourceBundle; * @author max */ public class ConfigImportHelper { - /** - * Holds name of the system property that is supposed to hold 'true' value when IDE settings have been - * imported on the current startup - */ - public static final String CONFIG_IMPORTED_IN_CURRENT_SESSION_KEY = "intellij.config.imported.in.current.session"; - + private static final String CONFIG_IMPORTED_IN_CURRENT_SESSION_KEY = "intellij.config.imported.in.current.session"; + private static final String BUILD_NUMBER_FILE = SystemInfo.isMac ? "/Resources/build.txt" : "build.txt"; private static final String PLUGINS_PATH = "plugins"; private static final String BIN_FOLDER = "bin"; @@ -61,27 +57,34 @@ public class ConfigImportHelper { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Throwable ignore) { } - do { + while (true) { ImportOldConfigsPanel dialog = new ImportOldConfigsPanel(oldConfigDir, settings); dialog.setModalityType(Dialog.ModalityType.TOOLKIT_MODAL); AppUIUtil.updateWindowIcon(dialog); dialog.setVisible(true); - if (dialog.isImportEnabled()) { - File installationHome = dialog.getSelectedFile(); - oldConfigDir = getOldConfigDir(installationHome, settings); - if (!validateOldConfigDir(installationHome, oldConfigDir, settings)) { - continue; - } - - assert oldConfigDir != null; - doImport(newConfigDir, oldConfigDir, settings, installationHome); - settings.importFinished(newConfigPath); - System.setProperty(CONFIG_IMPORTED_IN_CURRENT_SESSION_KEY, Boolean.TRUE.toString()); + if (!dialog.isImportEnabled()) { + break; } + File installationHome = dialog.getSelectedFile(); + oldConfigDir = getOldConfigDir(installationHome, settings); + if (!validateOldConfigDir(installationHome, oldConfigDir, settings)) { + continue; + } + + assert oldConfigDir != null; + doImport(newConfigDir, oldConfigDir, settings, installationHome); + settings.importFinished(newConfigPath); + System.setProperty(CONFIG_IMPORTED_IN_CURRENT_SESSION_KEY, Boolean.TRUE.toString()); break; } - while (true); + } + + /** + * Returns {@code true} when the IDE is launched for the first time, and configs were imported from another installation. + */ + public static boolean isConfigImported() { + return Boolean.getBoolean(CONFIG_IMPORTED_IN_CURRENT_SESSION_KEY); } @NotNull @@ -223,7 +226,7 @@ public class ConfigImportHelper { } @Nullable - public static File getOldConfigDir(@Nullable File oldInstallHome, ConfigImportSettings settings) { + private static File getOldConfigDir(@Nullable File oldInstallHome, ConfigImportSettings settings) { if (oldInstallHome == null) { return null; } @@ -239,7 +242,6 @@ public class ConfigImportHelper { int oldBuildNumber = getBuildNumber(oldInstallHome); if (oldBuildNumber != -1 && oldBuildNumber <= 600) { // Pandora - //noinspection HardCodedStringLiteral return new File(oldInstallHome, "config"); } @@ -251,11 +253,8 @@ public class ConfigImportHelper { }); } - private static File getSettingsPath(final File installHome, - final ConfigImportSettings settings, - final String propertyName, - final Function fromPathSelector) { - final File[] launchFileCandidates = getLaunchFilesCandidates(installHome, settings); + private static File getSettingsPath(File installHome, ConfigImportSettings settings, String propertyName, Function fromPathSelector) { + final List launchFileCandidates = getLaunchFilesCandidates(installHome, settings); // custom config folder for (File candidate : launchFileCandidates) { @@ -274,10 +273,9 @@ public class ConfigImportHelper { if (candidate.exists()) { final String pathsSelector = getPropertyFromLaxFile(candidate, PathManager.PROPERTY_PATHS_SELECTOR); if (pathsSelector != null) { - final String configDir = fromPathSelector.fun(pathsSelector); - final File probableConfig = new File(configDir); - if (probableConfig.exists()) { - return probableConfig; + File candidateDir = new File(fromPathSelector.fun(pathsSelector)); + if (candidateDir.exists()) { + return candidateDir; } } } @@ -286,21 +284,18 @@ public class ConfigImportHelper { return null; } - @SuppressWarnings({"HardCodedStringLiteral"}) - private static File[] getLaunchFilesCandidates(@NotNull final File instHome, @NotNull final ConfigImportSettings settings) { + private static List getLaunchFilesCandidates(@NotNull File instHome, @NotNull ConfigImportSettings settings) { final File bin = new File(instHome, BIN_FOLDER); final List files = new ArrayList(); if (SystemInfo.isMac) { // Info.plist files.add(new File(new File(instHome, "Contents"), "Info.plist")); - files.add(new File(new File(new File(bin, "idea.app"), "Contents"), "Info.plist")); files.add(new File(new File(new File(instHome, "idea.app"), "Contents"), "Info.plist")); } // idea.properties files.add(new File(bin, PathManager.PROPERTIES_FILE_NAME)); - // other binary scripts final String executableName = StringUtil.toLowerCase(settings.getExecutableName()); // * defaults: @@ -312,21 +307,17 @@ public class ConfigImportHelper { // for compatibility with some platform-base IDEs with wrong executable names addLaunchExecutableScriptsCandidates(files, "idea", bin); } - return files.toArray(new File[files.size()]); + return files; } - private static void addLaunchExecutableScriptsCandidates(final List files, - final String executableName, - final File binFolder) { + private static void addLaunchExecutableScriptsCandidates(List files, String executableName, File binFolder) { files.add(new File(binFolder, executableName + ".lax")); files.add(new File(binFolder, executableName + ".bat")); files.add(new File(binFolder, executableName + ".sh")); } - @SuppressWarnings({"HardCodedStringLiteral"}) @Nullable - public static String getPropertyFromLaxFile(@NotNull final File file, - @NotNull final String propertyName) { + private static String getPropertyFromLaxFile(@NotNull File file, @NotNull String propertyName) { if (file.getName().endsWith(".properties")) { try { PropertyResourceBundle bundle; @@ -359,8 +350,7 @@ public class ConfigImportHelper { } @Nullable - private static String findProperty(final String propertyName, - final String fileContent) { + private static String findProperty(String propertyName, String fileContent) { String param = propertyName + "="; int idx = fileContent.indexOf(param); if (idx == -1) { @@ -411,7 +401,7 @@ public class ConfigImportHelper { } } - public static String fixDirName(String dir, boolean replaceUserHome) { + private static String fixDirName(String dir, boolean replaceUserHome) { if (StringUtil.startsWithChar(dir, '\"') && StringUtil.endsWithChar(dir, '\"')) { dir = dir.substring(1, dir.length() - 1); } @@ -421,7 +411,7 @@ public class ConfigImportHelper { return dir; } - public static boolean isInstallationHomeOrConfig(@NotNull final String installationHome, @NotNull final ConfigImportSettings settings) { + public static boolean isInstallationHomeOrConfig(@NotNull String installationHome, @NotNull ConfigImportSettings settings) { if (new File(installationHome, OPTIONS_XML).exists()) return true; if (new File(installationHome, CONFIG_RELATED_PATH + OPTIONS_XML).exists()) return true; @@ -434,7 +424,6 @@ public class ConfigImportHelper { String[] mainJarNames = settings.getMainJarNames(); for (String name : mainJarNames) { String mainJarName = StringUtil.toLowerCase(name) + ".jar"; - //noinspection HardCodedStringLiteral if (new File(libFolder, mainJarName).exists()) { quickTest = true; break; @@ -442,7 +431,7 @@ public class ConfigImportHelper { } if (!quickTest) return false; - File[] files = getLaunchFilesCandidates(new File(installationHome), settings); + List files = getLaunchFilesCandidates(new File(installationHome), settings); for (File file : files) { if (file.exists()) return true; } diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateCheckerComponent.java b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateCheckerComponent.java index 2771da8448b1..37454618fa09 100644 --- a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateCheckerComponent.java +++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateCheckerComponent.java @@ -82,7 +82,7 @@ public class UpdateCheckerComponent implements ApplicationComponent { notify(app, UpdateChecker.NOTIFICATIONS.createNotification(title, message, NotificationType.INFORMATION, null)); } - if (!eap && current == ChannelStatus.EAP && Boolean.getBoolean(ConfigImportHelper.CONFIG_IMPORTED_IN_CURRENT_SESSION_KEY)) { + if (!eap && current == ChannelStatus.EAP && ConfigImportHelper.isConfigImported()) { mySettings.setSelectedChannelStatus(ChannelStatus.RELEASE); LOG.info("channel set to 'release'"); } diff --git a/platform/platform-main/src/com/intellij/idea/MainImpl.java b/platform/platform-main/src/com/intellij/idea/MainImpl.java index 88ce048d3b0d..abb1948773d5 100644 --- a/platform/platform-main/src/com/intellij/idea/MainImpl.java +++ b/platform/platform-main/src/com/intellij/idea/MainImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -40,7 +40,7 @@ public class MainImpl { public void run() { PluginManager.installExceptionHandler(); - if (newConfigFolder && !Boolean.getBoolean(ConfigImportHelper.CONFIG_IMPORTED_IN_CURRENT_SESSION_KEY)) { + if (newConfigFolder && !ConfigImportHelper.isConfigImported()) { StartupUtil.runStartupWizard(); }