IDEA-158404 Boot JDK switcher does not work with custom config dir for IDEA
authorAlexey Ushakov <Alexey.Ushakov@jetbrains.com>
Mon, 8 Aug 2016 16:20:45 +0000 (19:20 +0300)
committerAlexey Ushakov <Alexey.Ushakov@jetbrains.com>
Mon, 8 Aug 2016 16:21:56 +0000 (19:21 +0300)
Updated switcher to use default config dir for product to be in sync with our launchers

platform/lang-impl/src/com/intellij/openapi/util/SwitchBootJdkAction.java

index af988d3ac0a6d36976a4998f3629db7564e01c12..fa67005edfbd21ad19bb82139b838b5bb661b270 100644 (file)
@@ -33,7 +33,6 @@ import com.intellij.ui.ListCellRendererWrapper;
 import com.intellij.ui.components.JBLabel;
 import com.intellij.util.JdkBundle;
 import com.intellij.util.JdkBundleList;
-import org.jetbrains.annotations.NonNls;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
@@ -49,11 +48,18 @@ import java.util.Locale;
  * @author denis
  */
 public class SwitchBootJdkAction extends AnAction implements DumbAware {
-  @NonNls private static final Logger LOG = Logger.getInstance("#com.intellij.ide.actions.SwitchBootJdkAction");
-  @NonNls private static final String productJdkConfigFileName =
+  @NotNull private static final Logger LOG = Logger.getInstance("#com.intellij.ide.actions.SwitchBootJdkAction");
+  @NotNull private static final String productJdkConfigFileName =
     getExecutable() + (SystemInfo.isWindows ? ((SystemInfo.is64Bit) ? "64.exe.jdk" : ".exe.jdk") : ".jdk");
-  @NonNls private static final File productJdkConfigFile = new File(PathManager.getConfigPath(), productJdkConfigFileName);
-  @NonNls private static final File bundledJdkFile = getBundledJDKFile();
+
+  @Nullable private static final String pathsSelector = PathManager.getPathsSelector();
+  @NotNull private static final File productJdkConfigDir = new File(pathsSelector != null ?
+                                                                    PathManager.getDefaultConfigPathFor(pathsSelector) :
+                                                                    PathManager.getConfigPath());
+
+  @NotNull private static final File productJdkConfigFile = new File(productJdkConfigDir, productJdkConfigFileName);
+
+  @NotNull private static final File bundledJdkFile = getBundledJDKFile();
 
 
 
@@ -70,12 +76,18 @@ public class SwitchBootJdkAction extends AnAction implements DumbAware {
   @Override
   public void actionPerformed(AnActionEvent event) {
 
-    if (!productJdkConfigFile.exists()) {
+    if (!productJdkConfigDir.exists()) {
       try {
-        if (!productJdkConfigFile.createNewFile()){
-          LOG.error("Could not create " + productJdkConfigFileName + " productJdkConfigFile");
+        if (!productJdkConfigDir.mkdirs()) {
+          LOG.error("Could not create " + productJdkConfigDir + " productJdkConfigDir");
           return;
         }
+        if (!productJdkConfigFile.exists()) {
+          if (!productJdkConfigFile.createNewFile()) {
+            LOG.error("Could not create " + productJdkConfigFileName + " productJdkConfigFile");
+            return;
+          }
+        }
       }
       catch (IOException e) {
         LOG.error(e);