fix "IDEA-221944 Deadlock on opening second project" and support preloading for proje...
[idea/community.git] / platform / projectModel-impl / src / com / intellij / openapi / roots / impl / TestModulePropertiesImpl.java
index ccce409c83c2bb1885c0475f9a3c24a5c43da73f..768834dd29f716b60188ab60a4df517b12b81808 100644 (file)
@@ -1,18 +1,4 @@
-/*
- * Copyright 2000-2016 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.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
 package com.intellij.openapi.roots.impl;
 
 import com.intellij.openapi.components.PersistentStateComponent;
@@ -20,6 +6,9 @@ import com.intellij.openapi.components.State;
 import com.intellij.openapi.module.Module;
 import com.intellij.openapi.module.ModulePointer;
 import com.intellij.openapi.module.ModulePointerManager;
+import com.intellij.openapi.roots.ExternalProjectSystemRegistry;
+import com.intellij.openapi.roots.ProjectModelElement;
+import com.intellij.openapi.roots.ProjectModelExternalSource;
 import com.intellij.openapi.roots.TestModuleProperties;
 import com.intellij.util.xmlb.annotations.Attribute;
 import org.jetbrains.annotations.NotNull;
@@ -29,12 +18,13 @@ import org.jetbrains.annotations.Nullable;
  * @author nik
  */
 @State(name = "TestModuleProperties")
-public class TestModulePropertiesImpl extends TestModuleProperties implements PersistentStateComponent<TestModulePropertiesImpl.TestModulePropertiesState> {
-  private final ModulePointerManager myModulePointerManager;
+class TestModulePropertiesImpl extends TestModuleProperties implements PersistentStateComponent<TestModulePropertiesImpl.TestModulePropertiesState>,
+                                                                       ProjectModelElement {
   private ModulePointer myProductionModulePointer;
+  private final Module myModule;
 
-  public TestModulePropertiesImpl(@NotNull ModulePointerManager modulePointerManager) {
-    myModulePointerManager = modulePointerManager;
+  TestModulePropertiesImpl(@NotNull Module module) {
+    myModule = module;
   }
 
   @Nullable
@@ -51,7 +41,7 @@ public class TestModulePropertiesImpl extends TestModuleProperties implements Pe
 
   @Override
   public void setProductionModuleName(@Nullable String moduleName) {
-    myProductionModulePointer = moduleName != null ? myModulePointerManager.create(moduleName) : null;
+    myProductionModulePointer = moduleName != null ? ModulePointerManager.getInstance(myModule.getProject()).create(moduleName) : null;
   }
 
   @Nullable
@@ -63,10 +53,16 @@ public class TestModulePropertiesImpl extends TestModuleProperties implements Pe
   }
 
   @Override
-  public void loadState(TestModulePropertiesState state) {
+  public void loadState(@NotNull TestModulePropertiesState state) {
     setProductionModuleName(state.moduleName);
   }
 
+  @Nullable
+  @Override
+  public ProjectModelExternalSource getExternalSource() {
+    return ExternalProjectSystemRegistry.getInstance().getExternalSource(myModule);
+  }
+
   public static class TestModulePropertiesState {
     @Attribute("production-module")
     public String moduleName;