From 60942f6c6d0f24186e30f30497c8044411cac104 Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 22 Mar 2017 17:27:12 +0100 Subject: [PATCH] cleanup some jdks added in tests --- .../testSrc/com/intellij/roots/RootsChangedTest.java | 11 ++++------- .../openapi/projectRoots/ProjectJdkTable.java | 10 ++++++++++ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/java/java-tests/testSrc/com/intellij/roots/RootsChangedTest.java b/java/java-tests/testSrc/com/intellij/roots/RootsChangedTest.java index ae7d5b688274..b014e75781e1 100644 --- a/java/java-tests/testSrc/com/intellij/roots/RootsChangedTest.java +++ b/java/java-tests/testSrc/com/intellij/roots/RootsChangedTest.java @@ -139,7 +139,7 @@ public class RootsChangedTest extends ModuleTestCase { catch (CloneNotSupportedException e) { throw new RuntimeException(e); } - ProjectJdkTable.getInstance().addJdk(jdk); + ProjectJdkTable.getInstance().addJdk(jdk, getTestRootDisposable()); assertEventsCount(0); ModuleRootModificationUtil.setModuleSdk(a, jdk); @@ -167,7 +167,7 @@ public class RootsChangedTest extends ModuleTestCase { catch (CloneNotSupportedException e) { throw new RuntimeException(e); } - ProjectJdkTable.getInstance().addJdk(jdk); + ProjectJdkTable.getInstance().addJdk(jdk, getTestRootDisposable()); assertEventsCount(0); final ModifiableRootModel rootModelA = ModuleRootManager.getInstance(moduleA).getModifiableModel(); @@ -199,7 +199,7 @@ public class RootsChangedTest extends ModuleTestCase { final Sdk jdkBBB; try { jdk = (Sdk)IdeaTestUtil.getMockJdk17("AAA").clone(); - ProjectJdkTable.getInstance().addJdk(jdk); + ProjectJdkTable.getInstance().addJdk(jdk, getTestRootDisposable()); assertEventsCount(0); jdkBBB = (Sdk)IdeaTestUtil.getMockJdk17("BBB").clone(); @@ -207,7 +207,7 @@ public class RootsChangedTest extends ModuleTestCase { catch (CloneNotSupportedException e) { throw new RuntimeException(e); } - ProjectJdkTable.getInstance().addJdk(jdk); + ProjectJdkTable.getInstance().addJdk(jdk, getTestRootDisposable()); assertEventsCount(0); ProjectRootManager.getInstance(myProject).setProjectSdk(jdkBBB); @@ -230,9 +230,6 @@ public class RootsChangedTest extends ModuleTestCase { sdkModificator.addRoot(getVirtualFile(tempDirectory), OrderRootType.CLASSES); sdkModificator.commitChanges(); assertEventsCount(1); - - ProjectJdkTable.getInstance().removeJdk(jdk); - assertEventsCount(1); }); } diff --git a/platform/projectModel-api/src/com/intellij/openapi/projectRoots/ProjectJdkTable.java b/platform/projectModel-api/src/com/intellij/openapi/projectRoots/ProjectJdkTable.java index 49dc63cca759..f77d653779d8 100644 --- a/platform/projectModel-api/src/com/intellij/openapi/projectRoots/ProjectJdkTable.java +++ b/platform/projectModel-api/src/com/intellij/openapi/projectRoots/ProjectJdkTable.java @@ -15,12 +15,16 @@ */ package com.intellij.openapi.projectRoots; +import com.intellij.openapi.Disposable; +import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.Condition; +import com.intellij.openapi.util.Disposer; import com.intellij.util.messages.Topic; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.annotations.TestOnly; import java.util.EventListener; import java.util.List; @@ -61,6 +65,12 @@ public abstract class ProjectJdkTable { public abstract void addJdk(Sdk jdk); + @TestOnly + public void addJdk(@NotNull Sdk jdk, @NotNull Disposable parentDisposable) { + addJdk(jdk); + Disposer.register(parentDisposable, () -> WriteAction.run(() -> removeJdk(jdk))); + } + public abstract void removeJdk(Sdk jdk); public abstract void updateJdk(Sdk originalJdk, Sdk modifiedJdk);