[workspace model] IJPL-345 Introduce ModuleTypeId for ModuleEntity and remove the old class with the same name

GitOrigin-RevId: ac34862b4287f024b694b4da918208f73585982d
This commit is contained in:
Mikhail Mazurkevich
2024-03-15 23:29:21 +00:00
committed by intellij-monorepo-bot
parent a1d4b59126
commit bdecd1aaef
47 changed files with 154 additions and 118 deletions
@@ -16,7 +16,6 @@ import com.intellij.openapi.diagnostic.ControlFlowException
import com.intellij.openapi.diagnostic.logger
import com.intellij.openapi.module.Module
import com.intellij.openapi.module.ModuleManager
import com.intellij.openapi.module.ModuleTypeId
import com.intellij.openapi.progress.ProgressIndicator
import com.intellij.openapi.progress.Task
import com.intellij.openapi.roots.*
@@ -29,6 +28,7 @@ import com.intellij.psi.JavaDirectoryService
import com.intellij.psi.PsiDirectory
import com.intellij.psi.PsiManager
import com.intellij.refactoring.move.moveClassesOrPackages.MoveClassesOrPackagesUtil
import com.intellij.workspaceModel.ide.legacyBridge.impl.java.JAVA_MODULE_ENTITY_TYPE_ID_NAME
import org.jetbrains.annotations.TestOnly
import org.jetbrains.concurrency.AsyncPromise
import org.jetbrains.concurrency.Promise
@@ -127,7 +127,7 @@ class ExtractModuleFromPackageAction : AnAction() {
}
val newModule = ModuleManager.getInstance(module.project).newModule(imlFileDirectory.resolve("$moduleName.iml"),
ModuleTypeId.JAVA_MODULE)
JAVA_MODULE_ENTITY_TYPE_ID_NAME)
ModuleRootModificationUtil.updateModel(newModule) { model ->
if (ModuleRootManager.getInstance(module).isSdkInherited) {
@@ -19,5 +19,6 @@
<orderEntry type="module" module-name="intellij.platform.tests" exported="" scope="TEST" />
<orderEntry type="module" module-name="intellij.tools.ide.metrics.benchmark" scope="TEST" />
<orderEntry type="module" module-name="intellij.java.testFramework" scope="TEST" />
<orderEntry type="module" module-name="intellij.java.impl" scope="TEST" />
</component>
</module>
@@ -15,10 +15,11 @@
*/
package com.intellij;
import com.intellij.openapi.module.ModuleTypeId;
import com.intellij.testFramework.LightProjectDescriptor;
import org.jetbrains.annotations.NotNull;
import static com.intellij.workspaceModel.ide.legacyBridge.impl.java.JavaModuleTypeUtils.JAVA_MODULE_ENTITY_TYPE_ID_NAME;
public class BasicDefaultLightProjectDescriptor extends LightProjectDescriptor {
public BasicDefaultLightProjectDescriptor() {
@@ -26,8 +27,6 @@ public class BasicDefaultLightProjectDescriptor extends LightProjectDescriptor {
@Override
public @NotNull String getModuleTypeId() {
return ModuleTypeId.JAVA_MODULE;
return JAVA_MODULE_ENTITY_TYPE_ID_NAME;
}
}
@@ -6,12 +6,13 @@ import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.externalSystem.model.project.ModuleData;
import com.intellij.openapi.externalSystem.service.project.manage.ModuleDataServiceExtension;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleTypeId;
import com.intellij.openapi.roots.LanguageLevelModuleExtension;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.pom.java.LanguageLevel;
import org.jetbrains.annotations.NotNull;
import static com.intellij.workspaceModel.ide.legacyBridge.impl.java.JavaModuleTypeUtils.JAVA_MODULE_ENTITY_TYPE_ID_NAME;
/**
* @deprecated duplicate behaviour with {@link com.intellij.externalSystem.JavaModuleDataService}
*/
@@ -22,7 +23,7 @@ public final class ModuleDataServiceJavaExtension implements ModuleDataServiceEx
@Override
public void importModule(@NotNull IdeModifiableModelsProvider modelsProvider, @NotNull Module module, @NotNull ModuleData data) {
if (ModuleTypeId.JAVA_MODULE.equals(module.getModuleTypeName())) {
if (JAVA_MODULE_ENTITY_TYPE_ID_NAME.equals(module.getModuleTypeName())) {
ModifiableRootModel modifiableRootModel = modelsProvider.getModifiableRootModel(module);
setLanguageLevel(modifiableRootModel, data);
@@ -17,17 +17,18 @@ import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes;
import javax.swing.*;
import static com.intellij.workspaceModel.ide.legacyBridge.impl.java.JavaModuleTypeUtils.JAVA_MODULE_ENTITY_TYPE_ID_NAME;
public class JavaModuleType extends ModuleType<JavaModuleBuilder> {
public static ModuleType<?> getModuleType() {
return ModuleTypeManager.getInstance().findByID(JAVA_MODULE);
return ModuleTypeManager.getInstance().findByID(JAVA_MODULE_ENTITY_TYPE_ID_NAME);
}
public static final String JAVA_GROUP = "Java";
public static final String BUILD_TOOLS_GROUP = "Build Tools";
private static final String JAVA_MODULE = ModuleTypeId.JAVA_MODULE;
public JavaModuleType() {
this(JAVA_MODULE);
this(JAVA_MODULE_ENTITY_TYPE_ID_NAME);
}
protected JavaModuleType(@NonNls String id) {
@@ -0,0 +1,10 @@
@file:JvmName("JavaModuleTypeUtils")
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.workspaceModel.ide.legacyBridge.impl.java
import com.intellij.platform.workspace.jps.entities.ModuleTypeId
const val JAVA_MODULE_ENTITY_TYPE_ID_NAME = "JAVA_MODULE"
@JvmField
val JAVA_MODULE_ENTITY_TYPE_ID = ModuleTypeId(JAVA_MODULE_ENTITY_TYPE_ID_NAME)
@@ -20,12 +20,12 @@ import com.intellij.openapi.application.readAction
import com.intellij.openapi.application.writeAction
import com.intellij.openapi.module.JavaModuleType
import com.intellij.openapi.module.Module
import com.intellij.openapi.module.ModuleTypeId
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.psi.PsiManager
import com.intellij.testFramework.PsiTestUtil
import com.intellij.testFramework.junit5.TestApplication
import com.intellij.testFramework.rules.ProjectModelExtension
import com.intellij.workspaceModel.ide.impl.legacyBridge.module.WEB_MODULE_ENTITY_TYPE_ID_NAME
import kotlinx.coroutines.runBlocking
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.BeforeEach
@@ -78,7 +78,7 @@ class CopyReferenceActionFilesTest {
fun `reference to file under non-java source root must include path from content root`() = runBlocking {
lateinit var file: VirtualFile
writeAction {
module.setModuleType(ModuleTypeId.WEB_MODULE)
module.setModuleType(WEB_MODULE_ENTITY_TYPE_ID_NAME)
val sourceRoot = rootDir.createChildDirectory(this, "src")
PsiTestUtil.addContentRoot(module, rootDir)
PsiTestUtil.addSourceRoot(module, sourceRoot)
@@ -1,15 +1,13 @@
// Copyright 2000-2021 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.java.psi.formatter.java;
import com.intellij.openapi.module.ModuleType;
import com.intellij.openapi.module.ModuleTypeId;
import com.intellij.openapi.module.StdModuleTypes;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.psi.codeStyle.JavaCodeStyleSettings;
import com.intellij.psi.formatter.FormatterTestCase;
import com.intellij.testFramework.IdeaTestUtil;
import org.jetbrains.annotations.NotNull;
import static com.intellij.workspaceModel.ide.legacyBridge.impl.java.JavaModuleTypeUtils.JAVA_MODULE_ENTITY_TYPE_ID_NAME;
public abstract class JavaFormatterTestCase extends FormatterTestCase {
@Override
@@ -20,7 +18,7 @@ public abstract class JavaFormatterTestCase extends FormatterTestCase {
@NotNull
@Override
protected String getModuleTypeId() {
return ModuleTypeId.JAVA_MODULE;
return JAVA_MODULE_ENTITY_TYPE_ID_NAME;
}
@Override
@@ -15,11 +15,12 @@
*/
package com.intellij.testFramework;
import com.intellij.openapi.module.ModuleTypeId;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.psi.impl.JavaPsiFacadeEx;
import org.jetbrains.annotations.NotNull;
import static com.intellij.workspaceModel.ide.legacyBridge.impl.java.JavaModuleTypeUtils.JAVA_MODULE_ENTITY_TYPE_ID_NAME;
/**
* A test case that provides IDEA application and project. Note both are reused for each test run in the session so
* be careful to return all the modification made to application and project components (such as settings) after
@@ -46,6 +47,6 @@ public abstract class LightIdeaTestCase extends LightPlatformTestCase {
@NotNull
@Override
protected String getModuleTypeId() {
return ModuleTypeId.JAVA_MODULE;
return JAVA_MODULE_ENTITY_TYPE_ID_NAME;
}
}
@@ -3,7 +3,6 @@ package com.intellij.testFramework;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleTypeId;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.roots.ContentEntry;
import com.intellij.openapi.roots.ModifiableRootModel;
@@ -16,6 +15,8 @@ import org.jetbrains.annotations.NotNull;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static com.intellij.workspaceModel.ide.legacyBridge.impl.java.JavaModuleTypeUtils.JAVA_MODULE_ENTITY_TYPE_ID_NAME;
/**
* A TestCase for single PsiFile being opened in Editor conversion. See configureXXX and checkResultXXX method docs.
*/
@@ -103,6 +104,6 @@ public abstract class LightJavaCodeInsightTestCase extends LightPlatformCodeInsi
@NotNull
@Override
protected String getModuleTypeId() {
return ModuleTypeId.JAVA_MODULE;
return JAVA_MODULE_ENTITY_TYPE_ID_NAME;
}
}
@@ -16,7 +16,6 @@
package com.intellij.testFramework.fixtures;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleTypeId;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.roots.ContentEntry;
import com.intellij.openapi.roots.LanguageLevelModuleExtension;
@@ -31,6 +30,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.function.Supplier;
import static com.intellij.workspaceModel.ide.legacyBridge.impl.java.JavaModuleTypeUtils.JAVA_MODULE_ENTITY_TYPE_ID_NAME;
public class DefaultLightProjectDescriptor extends LightProjectDescriptor {
private static final String JETBRAINS_ANNOTATIONS_COORDINATES = "org.jetbrains:annotations-java5:24.0.0";
private @Nullable Supplier<? extends Sdk> customSdk;
@@ -52,7 +53,7 @@ public class DefaultLightProjectDescriptor extends LightProjectDescriptor {
@Override
public @NotNull String getModuleTypeId() {
return ModuleTypeId.JAVA_MODULE;
return JAVA_MODULE_ENTITY_TYPE_ID_NAME;
}
@Override
@@ -45,6 +45,7 @@
<orderEntry type="module" module-name="intellij.platform.testFramework.junit5" scope="TEST" />
<orderEntry type="library" scope="TEST" name="kotlinx-serialization-json" level="project" />
<orderEntry type="library" scope="TEST" name="kotlinx-serialization-core" level="project" />
<orderEntry type="module" module-name="intellij.java.impl" scope="TEST" />
</component>
<component name="TestModuleProperties" production-module="intellij.platform.configurationStore.impl" />
</module>
@@ -9,7 +9,6 @@ import com.intellij.openapi.components.StoragePathMacros
import com.intellij.openapi.components.stateStore
import com.intellij.openapi.module.Module
import com.intellij.openapi.module.ModuleManager
import com.intellij.openapi.module.ModuleTypeId
import com.intellij.openapi.roots.ModuleRootManager
import com.intellij.openapi.roots.ModuleRootModificationUtil
import com.intellij.openapi.roots.ProjectRootManager
@@ -23,6 +22,7 @@ import com.intellij.project.stateStore
import com.intellij.testFramework.*
import com.intellij.testFramework.assertions.Assertions.assertThat
import com.intellij.util.io.Ksuid
import com.intellij.workspaceModel.ide.legacyBridge.impl.java.JAVA_MODULE_ENTITY_TYPE_ID_NAME
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.runBlocking
@@ -187,7 +187,7 @@ class ModuleStoreTest {
// creating a persistent module to make non-empty valid modules.xml
withContext(Dispatchers.EDT) {
ApplicationManager.getApplication().runWriteAction {
ModuleManager.getInstance(project).newModule(tempDirManager.newPath().resolve("persistent.iml"), ModuleTypeId.JAVA_MODULE)
ModuleManager.getInstance(project).newModule(tempDirManager.newPath().resolve("persistent.iml"), JAVA_MODULE_ENTITY_TYPE_ID_NAME)
}
}
project.stateStore.save()
@@ -201,7 +201,7 @@ class ModuleStoreTest {
val module = writeAction {
ModuleManager.getInstance(project).newNonPersistentModule(moduleName, ModuleTypeId.JAVA_MODULE)
ModuleManager.getInstance(project).newNonPersistentModule(moduleName, JAVA_MODULE_ENTITY_TYPE_ID_NAME)
}
withContext(Dispatchers.EDT) {
SoftAssertions.assertSoftly {
@@ -264,6 +264,6 @@ val Module.contentRootUrls: Array<String>
internal suspend fun ProjectRule.createModule(path: Path): Module {
val project = project
return writeAction {
ModuleManager.getInstance(project).newModule(path, ModuleTypeId.JAVA_MODULE)
ModuleManager.getInstance(project).newModule(path, JAVA_MODULE_ENTITY_TYPE_ID_NAME)
}
}
@@ -12,5 +12,6 @@
<orderEntry type="module" module-name="intellij.platform.testFramework" />
<orderEntry type="module" module-name="intellij.platform.ide.util.io" />
<orderEntry type="library" name="assertJ" level="project" />
<orderEntry type="module" module-name="intellij.java.impl" />
</component>
</module>
@@ -6,8 +6,8 @@ import com.intellij.openapi.externalSystem.model.ProjectKeys
import com.intellij.openapi.externalSystem.model.ProjectSystemId
import com.intellij.openapi.externalSystem.model.project.*
import com.intellij.platform.externalSystem.testFramework.ExternalSystemTestUtil.TEST_EXTERNAL_SYSTEM_ID
import com.intellij.openapi.module.ModuleTypeId
import com.intellij.openapi.roots.DependencyScope
import com.intellij.workspaceModel.ide.legacyBridge.impl.java.JAVA_MODULE_ENTITY_TYPE_ID_NAME
import java.util.*
fun project(name: String = "project",
@@ -125,7 +125,7 @@ class Module : NamedNode<ModuleData>("module") {
props["moduleFileDirectoryPath"] = value
}
val moduleData by lazy { ModuleData(name, systemId, ModuleTypeId.JAVA_MODULE, name, moduleFileDirectoryPath, externalProjectPath) }
val moduleData by lazy { ModuleData(name, systemId, JAVA_MODULE_ENTITY_TYPE_ID_NAME, name, moduleFileDirectoryPath, externalProjectPath) }
fun module(name: String = "module",
externalProjectPath: String,
@@ -21,7 +21,6 @@ import com.intellij.openapi.externalSystem.settings.AbstractExternalSystemLocalS
import com.intellij.openapi.externalSystem.settings.ExternalProjectSettings;
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil;
import com.intellij.openapi.externalSystem.util.ExternalSystemUtil;
import com.intellij.openapi.module.ModuleTypeId;
import com.intellij.openapi.progress.ProcessCanceledException;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectUtil;
@@ -362,7 +361,7 @@ public final class ExternalProjectsDataStorage extends SimpleModificationTracker
for (ExternalProjectPojo childProject : childProjects) {
String moduleConfigPath = childProject.getPath();
ModuleData moduleData = new ModuleData(childProject.getName(), systemId,
ModuleTypeId.JAVA_MODULE, childProject.getName(),
"JAVA_MODULE", childProject.getName(),
moduleConfigPath, moduleConfigPath);
projectDataNode.createChild(MODULE, moduleData);
}
@@ -25,7 +25,6 @@ import com.intellij.openapi.externalSystem.service.project.manage.ExternalProjec
import com.intellij.openapi.module.EmptyModuleType
import com.intellij.openapi.module.Module
import com.intellij.openapi.module.ModuleManager
import com.intellij.openapi.module.ModuleTypeId
import com.intellij.openapi.project.ExternalStorageConfigurationManager
import com.intellij.openapi.project.Project
import com.intellij.openapi.project.doNotEnableExternalStorageByDefaultInTests
@@ -58,6 +57,7 @@ import com.intellij.util.io.delete
import com.intellij.util.io.directoryContentOf
import com.intellij.util.ui.UIUtil
import com.intellij.workspaceModel.ide.impl.jps.serialization.JpsProjectModelSynchronizer
import com.intellij.workspaceModel.ide.legacyBridge.impl.java.JAVA_MODULE_ENTITY_TYPE_ID_NAME
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withContext
@@ -94,7 +94,7 @@ class ExternalSystemStorageTest {
@Test
fun `save single mavenized module`() = saveProjectInExternalStorageAndCheckResult("singleModule") { project, projectDir ->
val module = ModuleManager.getInstance(project).newModule(projectDir.resolve("test.iml").invariantSeparatorsPathString,
ModuleTypeId.JAVA_MODULE)
JAVA_MODULE_ENTITY_TYPE_ID_NAME)
ModuleRootModificationUtil.addContentRoot(module, projectDir.invariantSeparatorsPathString)
ExternalSystemModulePropertyManager.getInstance(module).setMavenized(true)
}
@@ -103,7 +103,7 @@ class ExternalSystemStorageTest {
fun `load single mavenized module`() = loadProjectAndCheckResults("singleModule") { project ->
val module = ModuleManager.getInstance(project).modules.single()
assertThat(module.name).isEqualTo("test")
assertThat(module.moduleTypeName).isEqualTo(ModuleTypeId.JAVA_MODULE)
assertThat(module.moduleTypeName).isEqualTo(JAVA_MODULE_ENTITY_TYPE_ID_NAME)
assertThat(module.moduleFilePath).isEqualTo("${project.basePath}/test.iml")
assertThat(ExternalSystemModulePropertyManager.getInstance(module).isMavenized()).isTrue()
assertThat(ExternalStorageConfigurationManager.getInstance(project).isEnabled).isTrue()
@@ -113,7 +113,7 @@ class ExternalSystemStorageTest {
fun `save single module from external system`() = saveProjectInExternalStorageAndCheckResult(
"singleModuleFromExternalSystem") { project, projectDir ->
val module = ModuleManager.getInstance(project).newModule(projectDir.resolve("test.iml").invariantSeparatorsPathString,
ModuleTypeId.JAVA_MODULE)
JAVA_MODULE_ENTITY_TYPE_ID_NAME)
ModuleRootModificationUtil.addContentRoot(module, projectDir.invariantSeparatorsPathString)
setExternalSystemOptions(module, projectDir)
}
@@ -125,7 +125,7 @@ class ExternalSystemStorageTest {
writeAction {
val projectDir = project.stateStore.directoryStorePath!!.parent
val module = ModuleManager.getInstance(project).newModule(projectDir.resolve("test.iml").invariantSeparatorsPathString,
ModuleTypeId.JAVA_MODULE)
JAVA_MODULE_ENTITY_TYPE_ID_NAME)
ModuleRootModificationUtil.addContentRoot(module, projectDir.invariantSeparatorsPathString)
@@ -156,7 +156,7 @@ class ExternalSystemStorageTest {
fun `load single module from external system`() = loadProjectAndCheckResults("singleModuleFromExternalSystem") { project ->
val module = ModuleManager.getInstance(project).modules.single()
assertThat(module.name).isEqualTo("test")
assertThat(module.moduleTypeName).isEqualTo(ModuleTypeId.JAVA_MODULE)
assertThat(module.moduleTypeName).isEqualTo(JAVA_MODULE_ENTITY_TYPE_ID_NAME)
assertThat(module.moduleFilePath).isEqualTo("${project.basePath}/test.iml")
assertThat(ExternalSystemModulePropertyManager.getInstance(module).isMavenized()).isFalse()
assertThat(ExternalStorageConfigurationManager.getInstance(project).isEnabled).isTrue()
@@ -167,7 +167,7 @@ class ExternalSystemStorageTest {
fun `save single module from external system in internal storage`() = saveProjectInInternalStorageAndCheckResult(
"singleModuleFromExternalSystemInInternalStorage") { project, projectDir ->
val module = ModuleManager.getInstance(project).newModule(projectDir.resolve("test.iml").invariantSeparatorsPathString,
ModuleTypeId.JAVA_MODULE)
JAVA_MODULE_ENTITY_TYPE_ID_NAME)
ModuleRootModificationUtil.addContentRoot(module, projectDir.invariantSeparatorsPathString)
setExternalSystemOptions(module, projectDir)
}
@@ -177,7 +177,7 @@ class ExternalSystemStorageTest {
"singleModuleFromExternalSystemInInternalStorage") { project ->
val module = ModuleManager.getInstance(project).modules.single()
assertThat(module.name).isEqualTo("test")
assertThat(module.moduleTypeName).isEqualTo(ModuleTypeId.JAVA_MODULE)
assertThat(module.moduleTypeName).isEqualTo(JAVA_MODULE_ENTITY_TYPE_ID_NAME)
assertThat(module.moduleFilePath).isEqualTo("${project.basePath}/test.iml")
assertThat(ExternalSystemModulePropertyManager.getInstance(module).isMavenized()).isFalse()
assertThat(ExternalStorageConfigurationManager.getInstance(project).isEnabled).isFalse()
@@ -210,7 +210,7 @@ class ExternalSystemStorageTest {
fun `save imported module in internal storage`() = saveProjectInInternalStorageAndCheckResult(
"singleModuleInInternalStorage") { project, projectDir ->
val module = ModuleManager.getInstance(project).newModule(projectDir.resolve("test.iml").invariantSeparatorsPathString,
ModuleTypeId.JAVA_MODULE)
JAVA_MODULE_ENTITY_TYPE_ID_NAME)
ModuleRootModificationUtil.addContentRoot(module, projectDir.invariantSeparatorsPathString)
ExternalSystemModulePropertyManager.getInstance(module).setMavenized(true)
}
@@ -219,7 +219,7 @@ class ExternalSystemStorageTest {
fun `load imported module from internal storage`() = loadProjectAndCheckResults("singleModuleInInternalStorage") { project ->
val module = ModuleManager.getInstance(project).modules.single()
assertThat(module.name).isEqualTo("test")
assertThat(module.moduleTypeName).isEqualTo(ModuleTypeId.JAVA_MODULE)
assertThat(module.moduleTypeName).isEqualTo(JAVA_MODULE_ENTITY_TYPE_ID_NAME)
assertThat(module.moduleFilePath).isEqualTo("${project.basePath}/test.iml")
assertThat(ExternalSystemModulePropertyManager.getInstance(module).isMavenized()).isTrue()
assertThat(ExternalStorageConfigurationManager.getInstance(project).isEnabled).isFalse()
@@ -228,10 +228,10 @@ class ExternalSystemStorageTest {
@Test
fun `save mixed modules`() = saveProjectInExternalStorageAndCheckResult("mixedModules") { project, projectDir ->
val regular = ModuleManager.getInstance(project).newModule(projectDir.resolve("regular.iml").invariantSeparatorsPathString,
ModuleTypeId.JAVA_MODULE)
JAVA_MODULE_ENTITY_TYPE_ID_NAME)
ModuleRootModificationUtil.addContentRoot(regular, projectDir.resolve("regular").invariantSeparatorsPathString)
val imported = ModuleManager.getInstance(project).newModule(projectDir.resolve("imported.iml").invariantSeparatorsPathString,
ModuleTypeId.JAVA_MODULE)
JAVA_MODULE_ENTITY_TYPE_ID_NAME)
ModuleRootModificationUtil.addContentRoot(imported, projectDir.resolve("imported").invariantSeparatorsPathString)
ExternalSystemModulePropertyManager.getInstance(imported).setMavenized(true)
ExternalSystemModulePropertyManager.getInstance(imported).setLinkedProjectPath("${project.basePath}/imported")
@@ -261,8 +261,8 @@ class ExternalSystemStorageTest {
val (imported, regular) = modules
assertThat(imported.name).isEqualTo("imported")
assertThat(regular.name).isEqualTo("regular")
assertThat(imported.moduleTypeName).isEqualTo(ModuleTypeId.JAVA_MODULE)
assertThat(regular.moduleTypeName).isEqualTo(ModuleTypeId.JAVA_MODULE)
assertThat(imported.moduleTypeName).isEqualTo(JAVA_MODULE_ENTITY_TYPE_ID_NAME)
assertThat(regular.moduleTypeName).isEqualTo(JAVA_MODULE_ENTITY_TYPE_ID_NAME)
assertThat(imported.moduleFilePath).isEqualTo("${project.basePath}/imported.iml")
assertThat(regular.moduleFilePath).isEqualTo("${project.basePath}/regular.iml")
assertThat(ModuleRootManager.getInstance(imported).contentRootUrls.single()).isEqualTo(
@@ -278,7 +278,7 @@ class ExternalSystemStorageTest {
fun `save regular facet in imported module`() = saveProjectInExternalStorageAndCheckResult(
"regularFacetInImportedModule") { project, projectDir ->
val module = ModuleManager.getInstance(project).newModule(projectDir.resolve("test.iml").invariantSeparatorsPathString,
ModuleTypeId.JAVA_MODULE)
JAVA_MODULE_ENTITY_TYPE_ID_NAME)
ModuleRootModificationUtil.addContentRoot(module, projectDir.invariantSeparatorsPathString)
FacetManager.getInstance(module).addFacet(MockFacetType.getInstance(), "regular", null)
ExternalSystemModulePropertyManager.getInstance(module).setMavenized(true)
@@ -310,7 +310,7 @@ class ExternalSystemStorageTest {
assertThat(modules).hasSize(1)
val testModule = modules[0]
assertThat(testModule.name).isEqualTo("test")
assertThat(testModule.moduleTypeName).isEqualTo(ModuleTypeId.JAVA_MODULE)
assertThat(testModule.moduleTypeName).isEqualTo(JAVA_MODULE_ENTITY_TYPE_ID_NAME)
assertThat(testModule.moduleFilePath).isEqualTo("${project.basePath}/test.iml")
assertThat(ModuleRootManager.getInstance(testModule).contentRootUrls.single()).isEqualTo(
VfsUtil.pathToUrl("${project.basePath}/test"))
@@ -322,7 +322,7 @@ class ExternalSystemStorageTest {
fun `save imported facet in imported module`() = saveProjectInExternalStorageAndCheckResult(
"importedFacetInImportedModule") { project, projectDir ->
val imported = ModuleManager.getInstance(project).newModule(projectDir.resolve("imported.iml").invariantSeparatorsPathString,
ModuleTypeId.JAVA_MODULE)
JAVA_MODULE_ENTITY_TYPE_ID_NAME)
val facetRoot = VfsUtilCore.pathToUrl(projectDir.resolve("facet").invariantSeparatorsPathString)
addFacet(imported, SerializationConstants.MAVEN_EXTERNAL_SOURCE_ID, "imported", listOf(facetRoot))
ExternalSystemModulePropertyManager.getInstance(imported).setMavenized(true)
@@ -4,7 +4,6 @@ package com.intellij.openapi.externalSystem.service.project.manage
import com.intellij.openapi.application.runWriteAction
import com.intellij.openapi.module.Module
import com.intellij.openapi.module.ModuleManager
import com.intellij.openapi.module.ModuleTypeId
import com.intellij.openapi.roots.ModuleRootManager
import com.intellij.openapi.util.io.FileUtil
import com.intellij.openapi.vfs.LocalFileSystem
@@ -16,6 +15,7 @@ import com.intellij.platform.backend.workspace.impl.internal
import com.intellij.platform.workspace.storage.VersionedStorageChange
import com.intellij.testFramework.HeavyPlatformTestCase
import com.intellij.testFramework.PlatformTestUtil
import com.intellij.workspaceModel.ide.legacyBridge.impl.java.JAVA_MODULE_ENTITY_TYPE_ID_NAME
import org.assertj.core.api.BDDAssertions.then
import org.jetbrains.jps.model.java.JavaSourceRootType
import java.io.File
@@ -108,7 +108,7 @@ class SourceFolderManagerTest: HeavyPlatformTestCase() {
val modifiableModel = moduleManager.getModifiableModel()
val newModule: Module =
try {
modifiableModel.newModule(dir.toPath().resolve(moduleName).toAbsolutePath(), ModuleTypeId.JAVA_MODULE)
modifiableModel.newModule(dir.toPath().resolve(moduleName).toAbsolutePath(), JAVA_MODULE_ENTITY_TYPE_ID_NAME)
}
finally {
runWriteAction {
@@ -9,9 +9,11 @@ import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import static com.intellij.workspaceModel.ide.impl.legacyBridge.module.ModuleTypeUtils.WEB_MODULE_ENTITY_TYPE_ID_NAME;
public abstract class WebModuleTypeBase<T extends ModuleBuilder> extends ModuleType<T> implements ModuleTypeWithWebFeatures {
@NonNls public static final String WEB_MODULE = ModuleTypeId.WEB_MODULE;
@NonNls public static final String WEB_MODULE = WEB_MODULE_ENTITY_TYPE_ID_NAME;
public WebModuleTypeBase() {
super(WEB_MODULE);
@@ -144,7 +144,7 @@ internal class ModuleBridgeImpl(
override fun getOptionValue(key: String): String? {
val moduleEntity = this.findModuleEntity(entityStorage.current)
if (key == Module.ELEMENT_TYPE) {
return moduleEntity?.type
return moduleEntity?.type?.name
}
return moduleEntity?.customImlData?.customModuleOptions?.get(key)
}
@@ -152,7 +152,9 @@ internal class ModuleBridgeImpl(
override fun setOption(key: String, value: String?) {
fun updateOptionInEntity(diff: MutableEntityStorage, entity: ModuleEntity) {
if (key == Module.ELEMENT_TYPE) {
diff.modifyEntity(entity) { type = value }
diff.modifyEntity(entity) {
type = if (value != null) ModuleTypeId(value) else null
}
}
else {
val customImlData = entity.customImlData
@@ -0,0 +1,10 @@
@file:JvmName("ModuleTypeUtils")
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.workspaceModel.ide.impl.legacyBridge.module
import com.intellij.platform.workspace.jps.entities.ModuleTypeId
const val WEB_MODULE_ENTITY_TYPE_ID_NAME = "WEB_MODULE"
@JvmField
val WEB_MODULE_ENTITY_TYPE_ID = ModuleTypeId(WEB_MODULE_ENTITY_TYPE_ID_NAME)
@@ -6,13 +6,13 @@ import com.intellij.openapi.application.ModalityState
import com.intellij.openapi.application.asContextElement
import com.intellij.openapi.application.runWriteAction
import com.intellij.openapi.module.ModuleManager
import com.intellij.openapi.module.ModuleTypeId
import com.intellij.project.stateStore
import com.intellij.testFramework.ApplicationRule
import com.intellij.testFramework.TemporaryDirectory
import com.intellij.testFramework.assertions.Assertions.assertThat
import com.intellij.testFramework.createOrLoadProject
import com.intellij.util.io.createDirectories
import com.intellij.workspaceModel.ide.impl.legacyBridge.module.WEB_MODULE_ENTITY_TYPE_ID_NAME
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withContext
@@ -40,7 +40,7 @@ internal class ModuleAttachProcessorTest {
existingProjectDir = existingProject.basePath!!
withContext(Dispatchers.EDT + ModalityState.defaultModalityState().asContextElement()) {
runWriteAction {
ModuleManager.getInstance(existingProject).newModule("$existingProjectDir/test.iml", ModuleTypeId.WEB_MODULE)
ModuleManager.getInstance(existingProject).newModule("$existingProjectDir/test.iml", WEB_MODULE_ENTITY_TYPE_ID_NAME)
}
existingProject.stateStore.save()
}
@@ -94,5 +94,6 @@
<orderEntry type="module" module-name="intellij.platform.util.progress.tests" scope="TEST" />
<orderEntry type="library" name="jsvg" level="project" />
<orderEntry type="library" scope="TEST" name="hash4j" level="project" />
<orderEntry type="module" module-name="intellij.java.impl" scope="TEST" />
</component>
</module>
@@ -5,7 +5,6 @@ import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.module.ModuleType;
import com.intellij.openapi.module.ModuleTypeId;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ex.ProjectManagerEx;
import com.intellij.testFramework.HeavyPlatformTestCase;
@@ -16,6 +15,8 @@ import org.jetbrains.annotations.NotNull;
import java.nio.file.Path;
import static com.intellij.testFramework.assertions.Assertions.assertThat;
import static com.intellij.workspaceModel.ide.impl.legacyBridge.module.ModuleTypeUtils.WEB_MODULE_ENTITY_TYPE_ID_NAME;
import static com.intellij.workspaceModel.ide.legacyBridge.impl.java.JavaModuleTypeUtils.JAVA_MODULE_ENTITY_TYPE_ID_NAME;
public class OverwriteProjectConfigurationTest extends HeavyPlatformTestCase {
private Path myProjectDir;
@@ -29,7 +30,7 @@ public class OverwriteProjectConfigurationTest extends HeavyPlatformTestCase {
public void testOverwriteModulesList() {
Project project = ProjectManagerEx.getInstanceEx().newProject(myProjectDir, new OpenProjectTaskBuilder().build());
try {
createModule(project, "module", ModuleTypeId.JAVA_MODULE);
createModule(project, "module", JAVA_MODULE_ENTITY_TYPE_ID_NAME);
PlatformTestUtil.saveProject(project);
}
finally {
@@ -49,7 +50,7 @@ public class OverwriteProjectConfigurationTest extends HeavyPlatformTestCase {
public void testOverwriteModuleType() {
Project project = ProjectManagerEx.getInstanceEx().newProject(myProjectDir, new OpenProjectTaskBuilder().build());
try {
Path imlFile = createModule(project, "module", ModuleTypeId.JAVA_MODULE);
Path imlFile = createModule(project, "module", JAVA_MODULE_ENTITY_TYPE_ID_NAME);
PlatformTestUtil.saveProject(project);
assertThat(imlFile).isRegularFile();
}
@@ -59,10 +60,10 @@ public class OverwriteProjectConfigurationTest extends HeavyPlatformTestCase {
project = ProjectManagerEx.getInstanceEx().newProject(myProjectDir, new OpenProjectTaskBuilder().build());
try {
createModule(project, "module", ModuleTypeId.WEB_MODULE);
createModule(project, "module", WEB_MODULE_ENTITY_TYPE_ID_NAME);
PlatformTestUtil.saveProject(project);
Module module = assertOneElement(ModuleManager.getInstance(project).getModules());
assertEquals(ModuleTypeId.WEB_MODULE, ModuleType.get(module).getId());
assertEquals(WEB_MODULE_ENTITY_TYPE_ID_NAME, ModuleType.get(module).getId());
}
finally {
PlatformTestUtil.forceCloseProjectWithoutSaving(project);
@@ -5,7 +5,6 @@ import com.intellij.openapi.application.runWriteAction
import com.intellij.openapi.command.WriteCommandAction
import com.intellij.openapi.module.Module
import com.intellij.openapi.module.ModuleManager
import com.intellij.openapi.module.ModuleTypeId
import com.intellij.openapi.module.ModuleTypeManager
import com.intellij.openapi.project.Project
import com.intellij.openapi.util.ThrowableComputable
@@ -16,6 +15,7 @@ import com.intellij.openapi.vfs.VirtualFile
import com.intellij.testFramework.IndexingTestUtil
import com.intellij.testFramework.PsiTestUtil
import com.intellij.testFramework.rules.ProjectModelRule
import com.intellij.workspaceModel.ide.legacyBridge.impl.java.JAVA_MODULE_ENTITY_TYPE_ID_NAME
import org.jetbrains.jps.model.java.JavaResourceRootType
import org.jetbrains.jps.model.java.JavaSourceRootType
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
@@ -286,7 +286,7 @@ fun ProjectModelRule.createJavaModule(moduleName: String, content: ModuleContent
}
private fun createJavaModule(project: Project, moduleName: String, moduleRootDirectory: Path): Module {
val type = ModuleTypeManager.getInstance().findByID(ModuleTypeId.JAVA_MODULE)
val type = ModuleTypeManager.getInstance().findByID(JAVA_MODULE_ENTITY_TYPE_ID_NAME)
return WriteCommandAction.writeCommandAction(project).compute(
ThrowableComputable<Module, RuntimeException> {
val moduleModel = ModuleManager.getInstance(project).getModifiableModel()
@@ -1,10 +0,0 @@
// Copyright 2000-2021 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.module;
/**
* IDs of some well-known module types.
*/
public final class ModuleTypeId {
public static final String WEB_MODULE = "WEB_MODULE";
public static final String JAVA_MODULE = "JAVA_MODULE";
}
@@ -23,6 +23,7 @@ import com.intellij.platform.workspace.storage.MutableEntityStorage
import com.intellij.projectModel.ProjectModelBundle
import com.intellij.util.PathUtil
import com.intellij.util.containers.BidirectionalMap
import com.intellij.util.containers.ConcurrentFactoryMap
import com.intellij.workspaceModel.ide.NonPersistentEntitySource
import com.intellij.workspaceModel.ide.impl.LegacyBridgeJpsEntitySourceFactory
import com.intellij.workspaceModel.ide.impl.legacyBridge.LegacyBridgeModifiableBase
@@ -43,6 +44,8 @@ internal class ModifiableModuleModelBridgeImpl(
diff: MutableEntityStorage,
cacheStorageResult: Boolean = true
) : LegacyBridgeModifiableBase(diff, cacheStorageResult), ModifiableModuleModelBridge {
private val moduleTypes = ConcurrentFactoryMap.createMap<String, ModuleTypeId> { ModuleTypeId(it) }
override fun getProject(): Project = project
private val modulesToAdd = BidirectionalMap<String, ModuleBridge>()
@@ -99,7 +102,7 @@ internal class ModifiableModuleModelBridgeImpl(
dependencies = listOf(ModuleSourceDependency),
entitySource = entitySource
) {
type = moduleTypeId
type = moduleTypes[moduleTypeId]
}
return@addMeasuredTime createModuleInstance(moduleEntity, true)
@@ -480,7 +480,7 @@ primitiveTypeStringNotNullable), primitive = primitiveTypeMapNotNullable), withD
typeMetadata = EntityMetadata(fqName = "com.intellij.platform.workspace.jps.entities.ModuleEntity", entityDataFqName = "com.intellij.platform.workspace.jps.entities.ModuleEntityData", supertypes = listOf("com.intellij.platform.workspace.storage.WorkspaceEntity",
"com.intellij.platform.workspace.storage.WorkspaceEntityWithSymbolicId"), properties = listOf(OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "entitySource", valueType = ValueTypeMetadata.SimpleType.CustomType(isNullable = false, typeMetadata = FinalClassMetadata.KnownClass(fqName = "com.intellij.platform.workspace.storage.EntitySource")), withDefault = false),
OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "name", valueType = primitiveTypeStringNotNullable, withDefault = false),
OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "type", valueType = primitiveTypeStringNullable, withDefault = false),
OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "type", valueType = ValueTypeMetadata.SimpleType.CustomType(isNullable = true, typeMetadata = FinalClassMetadata.ClassMetadata(fqName = "com.intellij.platform.workspace.jps.entities.ModuleTypeId", properties = listOf(OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "name", valueType = primitiveTypeStringNotNullable, withDefault = false)), supertypes = listOf())), withDefault = false),
OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "dependencies", valueType = ValueTypeMetadata.ParameterizedType(generics = listOf(ValueTypeMetadata.SimpleType.CustomType(isNullable = false, typeMetadata = ExtendableClassMetadata.AbstractClassMetadata(fqName = "com.intellij.platform.workspace.jps.entities.ModuleDependencyItem", subclasses = listOf(FinalClassMetadata.ObjectMetadata(fqName = "com.intellij.platform.workspace.jps.entities.ModuleSourceDependency", properties = listOf(), supertypes = listOf("com.intellij.platform.workspace.jps.entities.ModuleDependencyItem",
"java.io.Serializable")),
FinalClassMetadata.ClassMetadata(fqName = "com.intellij.platform.workspace.jps.entities.SdkDependency", properties = listOf(OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "sdk", valueType = ValueTypeMetadata.SimpleType.CustomType(isNullable = false, typeMetadata = FinalClassMetadata.ClassMetadata(fqName = "com.intellij.platform.workspace.jps.entities.SdkId", properties = listOf(OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name = "presentableName", valueType = primitiveTypeStringNotNullable, withDefault = false),
@@ -604,7 +604,7 @@ OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name =
addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.LibraryEntity", metadataHash = 311438336)
addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.LibraryPropertiesEntity", metadataHash = -31768321)
addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.ModuleCustomImlDataEntity", metadataHash = -917110778)
addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.ModuleEntity", metadataHash = -1158387731)
addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.ModuleEntity", metadataHash = 1486093169)
addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.ModuleGroupPathEntity", metadataHash = -371618300)
addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.ModuleSettingsBase", metadataHash = -1726065761)
addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.SdkEntity", metadataHash = 154089668)
@@ -622,6 +622,7 @@ OwnPropertyMetadata(isComputable = false, isKey = false, isOpen = false, name =
addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.LibraryRoot", metadataHash = -909142712)
addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.LibraryRootTypeId", metadataHash = -389178127)
addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.LibraryRoot\$InclusionOptions", metadataHash = 1781041525)
addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.ModuleTypeId", metadataHash = 56899897)
addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.ModuleDependencyItem", metadataHash = 1232498200)
addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.InheritedSdkDependency", metadataHash = -1690206127)
addMetadataHash(typeFqn = "com.intellij.platform.workspace.jps.entities.LibraryDependency", metadataHash = -1835390724)
@@ -53,7 +53,7 @@ open class ModuleEntityImpl(private val dataSource: ModuleEntityData) : ModuleEn
return dataSource.name
}
override val type: String?
override val type: ModuleTypeId?
get() {
readField("type")
return dataSource.type
@@ -183,12 +183,13 @@ open class ModuleEntityImpl(private val dataSource: ModuleEntityData) : ModuleEn
changedProperty.add("name")
}
override var type: String?
override var type: ModuleTypeId?
get() = getEntityData().type
set(value) {
checkModificationAllowed()
getEntityData(true).type = value
changedProperty.add("type")
}
private val dependenciesUpdater: (value: List<ModuleDependencyItem>) -> Unit = { value ->
@@ -310,7 +311,7 @@ open class ModuleEntityImpl(private val dataSource: ModuleEntityData) : ModuleEn
class ModuleEntityData : WorkspaceEntityData.WithCalculableSymbolicId<ModuleEntity>(), SoftLinkable {
lateinit var name: String
var type: String? = null
var type: ModuleTypeId? = null
lateinit var dependencies: MutableList<ModuleDependencyItem>
internal fun isNameInitialized(): Boolean = ::name.isInitialized
@@ -14,6 +14,8 @@ import com.intellij.platform.workspace.storage.annotations.Child
import com.intellij.platform.workspace.storage.impl.containers.toMutableWorkspaceList
import org.jetbrains.annotations.NonNls
data class ModuleTypeId(val name: @NonNls String)
/**
* Describes configuration of a [Module][com.intellij.openapi.module.Module].
* See [package documentation](psi_element://com.intellij.platform.workspace.jps.entities) for more details.
@@ -21,7 +23,7 @@ import org.jetbrains.annotations.NonNls
interface ModuleEntity : WorkspaceEntityWithSymbolicId {
val name: @NlsSafe String
val type: @NonNls String?
val type: ModuleTypeId?
val dependencies: List<ModuleDependencyItem>
val contentRoots: List<@Child ContentRootEntity>
@@ -35,7 +37,7 @@ interface ModuleEntity : WorkspaceEntityWithSymbolicId {
interface Builder : ModuleEntity, WorkspaceEntity.Builder<ModuleEntity> {
override var entitySource: EntitySource
override var name: String
override var type: String?
override var type: ModuleTypeId?
override var dependencies: MutableList<ModuleDependencyItem>
override var contentRoots: List<ContentRootEntity>
override var facets: List<FacetEntity>
@@ -12,6 +12,7 @@ import com.intellij.platform.workspace.jps.serialization.impl.JpsProjectEntities
import com.intellij.platform.workspace.storage.*
import com.intellij.platform.workspace.storage.url.VirtualFileUrl
import com.intellij.platform.workspace.storage.url.VirtualFileUrlManager
import com.intellij.util.containers.ConcurrentFactoryMap
import io.opentelemetry.api.metrics.Meter
import org.jdom.Attribute
import org.jdom.Element
@@ -49,6 +50,7 @@ internal open class ModuleImlFileEntitiesSerializer(internal val modulePath: Mod
internal val internalModuleListSerializer: JpsModuleListSerializer? = null,
internal val externalModuleListSerializer: JpsModuleListSerializer? = null)
: JpsFileEntitiesSerializer<ModuleEntity> {
private val moduleTypes = ConcurrentFactoryMap.createMap<String, ModuleTypeId> { ModuleTypeId(it) }
override val mainEntityClass: Class<ModuleEntity>
get() = ModuleEntity::class.java
@@ -244,9 +246,9 @@ internal open class ModuleImlFileEntitiesSerializer(internal val modulePath: Mod
}
}
val moduleType = moduleOptions["type"]
if (moduleType != null) {
moduleEntity.type = moduleType
val moduleTypeName = moduleOptions["type"]
if (moduleTypeName != null) {
moduleEntity.type = moduleTypes[moduleTypeName]
}
@Suppress("UNCHECKED_CAST")
val customModuleOptions =
@@ -695,7 +697,7 @@ internal open class ModuleImlFileEntitiesSerializer(internal val modulePath: Mod
writer: JpsFileContentWriter) {
val externalSystemOptions = module.exModuleOptions
val customImlData = module.customImlData
saveModuleOptions(externalSystemOptions, module.type, customImlData, writer)
saveModuleOptions(externalSystemOptions, module.type?.name, customImlData, writer)
val moduleOptions = customImlData?.customModuleOptions
val customSerializerId = moduleOptions?.get(JpsProjectLoader.CLASSPATH_ATTRIBUTE)
if (customSerializerId != null) {
@@ -28,6 +28,7 @@
<orderEntry type="module" module-name="intellij.tools.ide.metrics.benchmark" scope="TEST" />
<orderEntry type="module" module-name="intellij.platform.util.coroutines" scope="TEST" />
<orderEntry type="library" name="kotlinx-collections-immutable" level="project" />
<orderEntry type="module" module-name="intellij.java.impl" scope="TEST" />
</component>
<component name="TestModuleProperties" production-module="intellij.platform.workspace.jps" />
</module>
@@ -39,10 +39,12 @@ import com.intellij.util.ui.UIUtil
import com.intellij.workspaceModel.ide.impl.WorkspaceModelInitialTestContent
import com.intellij.workspaceModel.ide.impl.jps.serialization.toConfigLocation
import com.intellij.workspaceModel.ide.impl.legacyBridge.module.ModuleManagerBridgeImpl
import com.intellij.workspaceModel.ide.impl.legacyBridge.module.WEB_MODULE_ENTITY_TYPE_ID
import com.intellij.workspaceModel.ide.impl.legacyBridge.module.findModule
import com.intellij.workspaceModel.ide.impl.legacyBridge.module.findModuleEntity
import com.intellij.workspaceModel.ide.impl.legacyBridge.module.roots.ModuleRootComponentBridge
import com.intellij.workspaceModel.ide.legacyBridge.ModuleBridge
import com.intellij.workspaceModel.ide.legacyBridge.impl.java.JAVA_MODULE_ENTITY_TYPE_ID_NAME
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withContext
@@ -413,7 +415,7 @@ class ModuleBridgesTest {
val moduleFile = File(project.basePath, "test.iml")
val moduleManager = ModuleManager.getInstance(project)
val module = runWriteActionAndWait { moduleManager.newModule(moduleFile.path, ModuleTypeId.JAVA_MODULE) }
val module = runWriteActionAndWait { moduleManager.newModule(moduleFile.path, JAVA_MODULE_ENTITY_TYPE_ID_NAME) }
project.stateStore.save()
@@ -633,7 +635,7 @@ class ModuleBridgesTest {
WriteCommandAction.runWriteCommandAction(project) {
val moduleManager = ModuleManager.getInstance(project)
val module = moduleManager.newModule(moduleImlFile.path, ModuleTypeId.WEB_MODULE)
val module = moduleManager.newModule(moduleImlFile.path, WEB_MODULE_ENTITY_TYPE_ID.name)
ModuleRootModificationUtil.updateModel(module) { model ->
val url = VfsUtilCore.pathToUrl(FileUtil.toSystemIndependentName(tempDir.path))
val contentEntry = model.addContentEntry(url)
@@ -15,6 +15,7 @@ import com.intellij.platform.workspace.storage.url.VirtualFileUrlManager
import com.intellij.testFramework.junit5.TestApplication
import com.intellij.testFramework.rules.ProjectModelExtension
import com.intellij.workspaceModel.ide.impl.IdeVirtualFileUrlManagerImpl
import com.intellij.workspaceModel.ide.legacyBridge.impl.java.JAVA_MODULE_ENTITY_TYPE_ID
import org.jetbrains.jps.util.JpsPathUtil
import org.junit.jupiter.api.Assertions.assertTrue
import org.junit.jupiter.api.BeforeEach
@@ -110,7 +111,7 @@ class JpsProjectSaveAfterChangesTest {
val dependencies = listOf(InheritedSdkDependency, ModuleSourceDependency)
val module = builder addEntity ModuleEntity("newModule", dependencies, source)
builder.modifyEntity(module) {
type = "JAVA_MODULE"
type = JAVA_MODULE_ENTITY_TYPE_ID
}
val contentRootEntity = builder addEntity ContentRootEntity(configLocation.baseDirectoryUrl.append("new"),
emptyList<@NlsSafe String>(), module.entitySource) {
@@ -435,7 +435,7 @@ class EclipseModuleRootsSerializer : CustomModuleRootsSerializer, StorageManager
val dotProjectFile = entitySource.classpathFile.toPath().parent.resolve(EclipseXml.PROJECT_FILE)
if (!dotProjectFile.exists()) {
val content = DotProjectFileHelper.generateProjectFileContent(ModuleTypeManager.getInstance().findByID(module.type), module.name)
val content = DotProjectFileHelper.generateProjectFileContent(ModuleTypeManager.getInstance().findByID(module.type?.name), module.name)
saveXmlFile(dotProjectFile, content)
}
@@ -6,9 +6,9 @@ import com.intellij.compiler.CompilerConfigurationImpl
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
import com.intellij.openapi.module.ModuleManager
import com.intellij.openapi.module.ModuleTypeId
import com.intellij.openapi.util.Computable
import com.intellij.testFramework.runInEdtAndGet
import com.intellij.workspaceModel.ide.legacyBridge.impl.java.JAVA_MODULE_ENTITY_TYPE_ID_NAME
import org.assertj.core.api.BDDAssertions.then
import org.jetbrains.jps.model.java.impl.compiler.ProcessorConfigProfileImpl
import org.jetbrains.plugins.gradle.GradleManager
@@ -423,7 +423,7 @@ class AnnotationProcessorConfigImportingTest: GradleImportingTestCase() {
fun `test annotation processor profiles of non gradle projects are not removed`() {
val nonGradleModule = runInEdtAndGet {
ApplicationManager.getApplication().runWriteAction(Computable {
ModuleManager.getInstance(myProject).newModule(myProject.basePath!! + "/java_module", ModuleTypeId.JAVA_MODULE)
ModuleManager.getInstance(myProject).newModule(myProject.basePath!! + "/java_module", JAVA_MODULE_ENTITY_TYPE_ID_NAME)
})
}
@@ -48,5 +48,6 @@
<orderEntry type="module" module-name="intellij.platform.backend.workspace" />
<orderEntry type="library" name="caffeine" level="project" />
<orderEntry type="module" module-name="intellij.platform.util.jdom" />
<orderEntry type="module" module-name="intellij.java.impl" />
</component>
</module>
@@ -3,11 +3,11 @@
package org.jetbrains.kotlin.idea.roots.ui
import com.intellij.openapi.module.ModuleConfigurationEditor
import com.intellij.openapi.module.ModuleTypeId
import com.intellij.openapi.roots.ui.configuration.ClasspathEditor
import com.intellij.openapi.roots.ui.configuration.ModuleConfigurationEditorProviderEx
import com.intellij.openapi.roots.ui.configuration.ModuleConfigurationState
import com.intellij.openapi.roots.ui.configuration.OutputEditor
import com.intellij.workspaceModel.ide.legacyBridge.impl.java.JAVA_MODULE_ENTITY_TYPE_ID_NAME
import org.jetbrains.kotlin.idea.base.facet.platform.platform
import org.jetbrains.kotlin.platform.jvm.isJvm
@@ -18,7 +18,7 @@ class NonJvmKotlinModuleEditorsProvider : ModuleConfigurationEditorProviderEx {
val rootModel = state.rootModel
val module = rootModel.module
if (module.moduleTypeName != ModuleTypeId.JAVA_MODULE || module.platform.isJvm()) {
if (module.moduleTypeName != JAVA_MODULE_ENTITY_TYPE_ID_NAME || module.platform.isJvm()) {
return ModuleConfigurationEditor.EMPTY
}
@@ -2,7 +2,6 @@
package org.jetbrains.kotlin.idea.base.test
import com.intellij.openapi.module.Module
import com.intellij.openapi.module.ModuleTypeId
import com.intellij.openapi.project.Project
import com.intellij.openapi.projectRoots.Sdk
import com.intellij.openapi.roots.ContentEntry
@@ -15,6 +14,7 @@ import com.intellij.pom.java.LanguageLevel
import com.intellij.testFramework.IdeaTestUtil
import com.intellij.testFramework.LightProjectDescriptor
import com.intellij.testFramework.PsiTestUtil
import com.intellij.workspaceModel.ide.legacyBridge.impl.java.JAVA_MODULE_ENTITY_TYPE_ID_NAME
import java.nio.file.Path
class KotlinJvmLightProjectDescriptor(
@@ -31,7 +31,7 @@ class KotlinJvmLightProjectDescriptor(
}
override fun getModuleTypeId(): String {
return ModuleTypeId.JAVA_MODULE
return JAVA_MODULE_ENTITY_TYPE_ID_NAME
}
override fun getSdk(): Sdk {
@@ -2,14 +2,13 @@
package org.jetbrains.kotlin.idea.codeInsight.generate
import com.intellij.openapi.module.ModuleTypeId
import com.intellij.openapi.projectRoots.Sdk
import com.intellij.openapi.projectRoots.Sdk
import com.intellij.testFramework.IdeaTestUtil
import com.intellij.testFramework.LightProjectDescriptor
import com.intellij.workspaceModel.ide.legacyBridge.impl.java.JAVA_MODULE_ENTITY_TYPE_ID_NAME
import org.jetbrains.jps.model.java.JavaSourceRootType
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
import org.jetbrains.kotlin.idea.actions.generate.KotlinGenerateTestSupportActionBase
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
import org.jetbrains.kotlin.idea.base.test.InTextDirectivesUtils
abstract class AbstractGenerateTestSupportMethodActionTest : AbstractCodeInsightActionTest() {
@@ -21,7 +20,7 @@ abstract class AbstractGenerateTestSupportMethodActionTest : AbstractCodeInsight
companion object {
val TEST_ROOT_PROJECT_DESCRIPTOR = object : LightProjectDescriptor() {
override fun getModuleTypeId(): String = ModuleTypeId.JAVA_MODULE
override fun getModuleTypeId(): String = JAVA_MODULE_ENTITY_TYPE_ID_NAME
override fun getSdk(): Sdk = IdeaTestUtil.getMockJdk18()
override fun getSourceRootType(): JpsModuleSourceRootType<*> = JavaSourceRootType.TEST_SOURCE
}
@@ -8,7 +8,6 @@ import com.intellij.jarRepository.RepositoryLibraryType.REPOSITORY_LIBRARY_KIND
import com.intellij.openapi.application.runWriteAction
import com.intellij.openapi.module.Module
import com.intellij.openapi.module.ModuleManager
import com.intellij.openapi.module.ModuleTypeId
import com.intellij.openapi.project.Project
import com.intellij.openapi.projectRoots.JavaSdk
import com.intellij.openapi.projectRoots.Sdk
@@ -21,7 +20,10 @@ import com.intellij.openapi.vfs.LocalFileSystem
import com.intellij.testFramework.PlatformTestUtil
import com.intellij.testFramework.PsiTestUtil
import com.intellij.testFramework.runInEdtAndWait
import com.intellij.util.io.*
import com.intellij.util.io.copy
import com.intellij.util.io.createDirectories
import com.intellij.util.io.delete
import com.intellij.workspaceModel.ide.legacyBridge.impl.java.JAVA_MODULE_ENTITY_TYPE_ID_NAME
import org.jetbrains.idea.maven.utils.library.RepositoryLibraryProperties
import org.jetbrains.kotlin.idea.base.plugin.artifacts.TestKotlinArtifacts
import org.jetbrains.kotlin.idea.base.test.KotlinRoot
@@ -275,7 +277,7 @@ class ModuleDescription(val moduleName: String) {
val moduleManager = ModuleManager.getInstance(project)
val module = with(moduleManager.getModifiableModel()) {
val imlPath = modulePath.resolve("$moduleName${ModuleFileType.DOT_DEFAULT_EXTENSION}")
val module = newModule(imlPath, ModuleTypeId.JAVA_MODULE)
val module = newModule(imlPath, JAVA_MODULE_ENTITY_TYPE_ID_NAME)
PsiTestUtil.addSourceRoot(module, moduleVirtualFile.findFileByRelativePath(src) ?: error("no '$src' in $this"))
commit()
module
@@ -9,7 +9,6 @@ import com.intellij.jarRepository.RemoteRepositoryDescription
import com.intellij.jarRepository.RepositoryLibraryType
import com.intellij.openapi.application.runWriteAction
import com.intellij.openapi.module.ModifiableModuleModel
import com.intellij.openapi.module.ModuleTypeId
import com.intellij.openapi.project.Project
import com.intellij.openapi.projectRoots.Sdk
import com.intellij.openapi.roots.*
@@ -17,6 +16,7 @@ import com.intellij.openapi.roots.libraries.ui.OrderRoot
import com.intellij.openapi.util.Disposer
import com.intellij.openapi.vfs.VfsUtil
import com.intellij.util.PathUtil
import com.intellij.workspaceModel.ide.legacyBridge.impl.java.JAVA_MODULE_ENTITY_TYPE_ID_NAME
import org.jetbrains.idea.maven.utils.library.RepositoryLibraryProperties
import org.jetbrains.jps.model.java.JavaResourceRootType
import org.jetbrains.jps.model.java.JavaSourceRootType
@@ -177,7 +177,7 @@ private class ProjectImporter(
private fun convertModule(moduleIr: ModuleIR): TaskResult<IdeaModule> {
val module = modulesModel.newModule(
(moduleIr.path / "${moduleIr.name}.iml").toString(),
ModuleTypeId.JAVA_MODULE
JAVA_MODULE_ENTITY_TYPE_ID_NAME
)
val rootModel = ModuleRootManager.getInstance(module).modifiableModel
val contentRoot = rootModel.addContentEntry(moduleIr.path.url)
@@ -3,16 +3,16 @@
package org.jetbrains.kotlin.idea.test;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleTypeId;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.roots.ContentEntry;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.testFramework.IdeaTestUtil;
import com.intellij.testFramework.LightProjectDescriptor;
import com.intellij.testFramework.fixtures.DefaultLightProjectDescriptor;
import com.intellij.testFramework.fixtures.MavenDependencyUtil;
import org.jetbrains.annotations.NotNull;
import static com.intellij.workspaceModel.ide.legacyBridge.impl.java.JavaModuleTypeUtils.JAVA_MODULE_ENTITY_TYPE_ID_NAME;
public class KotlinLightProjectDescriptor extends LightProjectDescriptor {
protected KotlinLightProjectDescriptor() {
}
@@ -22,7 +22,7 @@ public class KotlinLightProjectDescriptor extends LightProjectDescriptor {
@NotNull
@Override
public String getModuleTypeId() {
return ModuleTypeId.JAVA_MODULE;
return JAVA_MODULE_ENTITY_TYPE_ID_NAME;
}
@Override
@@ -6,7 +6,6 @@ import com.intellij.externalSystem.ImportedLibraryProperties
import com.intellij.externalSystem.ImportedLibraryType
import com.intellij.java.library.MavenCoordinates
import com.intellij.java.workspace.entities.JavaModuleSettingsEntity
import com.intellij.openapi.module.ModuleTypeId
import com.intellij.openapi.module.impl.ModuleManagerEx
import com.intellij.openapi.project.Project
import com.intellij.openapi.roots.DependencyScope
@@ -18,9 +17,6 @@ import com.intellij.openapi.vfs.VfsUtilCore
import com.intellij.openapi.vfs.VirtualFileManager
import com.intellij.platform.backend.workspace.toVirtualFileUrl
import com.intellij.platform.workspace.jps.entities.*
import com.intellij.platform.workspace.jps.entities.DependencyScope as EntitiesDependencyScope
import com.intellij.platform.workspace.jps.entities.ModuleDependency as EntitiesModuleDependency
import com.intellij.platform.workspace.jps.entities.LibraryDependency as EntitiesLibraryDependency
import com.intellij.platform.workspace.jps.serialization.impl.FileInDirectorySourceNames
import com.intellij.platform.workspace.storage.EntitySource
import com.intellij.platform.workspace.storage.EntityStorage
@@ -29,6 +25,7 @@ import com.intellij.platform.workspace.storage.url.VirtualFileUrl
import com.intellij.platform.workspace.storage.url.VirtualFileUrlManager
import com.intellij.util.containers.addIfNotNull
import com.intellij.workspaceModel.ide.impl.LegacyBridgeJpsEntitySourceFactory
import com.intellij.workspaceModel.ide.legacyBridge.impl.java.JAVA_MODULE_ENTITY_TYPE_ID
import org.jetbrains.idea.maven.importing.MavenImportUtil
import org.jetbrains.idea.maven.importing.StandardMavenModuleType
import org.jetbrains.idea.maven.importing.tree.MavenModuleImportData
@@ -41,6 +38,9 @@ import org.jetbrains.idea.maven.project.MavenProject
import org.jetbrains.idea.maven.utils.MavenLog
import org.jetbrains.jps.model.serialization.SerializationConstants
import org.jetbrains.jps.model.serialization.library.JpsLibraryTableSerializer
import com.intellij.platform.workspace.jps.entities.DependencyScope as EntitiesDependencyScope
import com.intellij.platform.workspace.jps.entities.LibraryDependency as EntitiesLibraryDependency
import com.intellij.platform.workspace.jps.entities.ModuleDependency as EntitiesModuleDependency
internal class WorkspaceModuleImporter(
private val project: Project,
@@ -81,7 +81,7 @@ internal class WorkspaceModuleImporter(
dependencies: List<ModuleDependencyItem>,
entitySource: EntitySource): ModuleEntity {
val moduleEntity = builder addEntity ModuleEntity(moduleName, dependencies, entitySource) {
this.type = ModuleTypeId.JAVA_MODULE
this.type = JAVA_MODULE_ENTITY_TYPE_ID
}
builder addEntity ExternalSystemModuleOptionsEntity(entitySource) {
ExternalSystemData(moduleEntity, mavenProject.file.path, mavenModuleType).write(this)
@@ -12,7 +12,6 @@ import com.intellij.openapi.application.EDT
import com.intellij.openapi.application.writeAction
import com.intellij.openapi.module.Module
import com.intellij.openapi.module.ModuleManager
import com.intellij.openapi.module.ModuleTypeId
import com.intellij.openapi.roots.LibraryOrderEntry
import com.intellij.openapi.roots.ModuleRootManager
import com.intellij.openapi.roots.ui.configuration.actions.ModuleDeleteProvider
@@ -21,6 +20,7 @@ import com.intellij.openapi.util.registry.Registry
import com.intellij.testFramework.TestActionEvent
import com.intellij.testFramework.UsefulTestCase
import com.intellij.util.FileContentUtil
import com.intellij.workspaceModel.ide.legacyBridge.impl.java.JAVA_MODULE_ENTITY_TYPE_ID_NAME
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withContext
@@ -589,7 +589,7 @@ class MavenProjectsManagerTest : MavenMultiVersionImportingTestCase() {
<artifactId>child1</artifactId>
</project>
""".trimIndent())
writeAction { ModuleManager.getInstance(project).newModule("non-maven", ModuleTypeId.JAVA_MODULE) }
writeAction { ModuleManager.getInstance(project).newModule("non-maven", JAVA_MODULE_ENTITY_TYPE_ID_NAME) }
importProjectAsync(mavenParentPom)
assertEquals(3, ModuleManager.getInstance(project).modules.size)
configConfirmationForYesAnswer()
@@ -12,5 +12,6 @@
<orderEntry type="library" name="kotlin-stdlib" level="project" />
<orderEntry type="module" module-name="intellij.java.impl" />
<orderEntry type="module" module-name="intellij.ml.models.local" />
<orderEntry type="module" module-name="intellij.platform.workspace.jps" />
</component>
</module>
@@ -12,15 +12,15 @@ import com.intellij.notification.Notification
import com.intellij.notification.NotificationAction
import com.intellij.notification.NotificationType
import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.application.NonBlockingReadAction
import com.intellij.openapi.application.ReadAction
import com.intellij.openapi.module.ModuleManager
import com.intellij.openapi.module.ModuleTypeId
import com.intellij.openapi.project.Project
import com.intellij.openapi.util.registry.Registry
import com.intellij.platform.backend.workspace.WorkspaceModel
import com.intellij.platform.workspace.jps.entities.ModuleEntity
import com.intellij.psi.PsiClass
import com.intellij.psi.PsiMethod
import com.intellij.util.concurrency.AppExecutorUtil
import com.intellij.workspaceModel.ide.legacyBridge.impl.java.JAVA_MODULE_ENTITY_TYPE_ID
import java.util.concurrent.atomic.AtomicInteger
@@ -44,8 +44,8 @@ internal class CompletionSessionsCounter : LookupManagerListener {
}
if (counter.get() == 0) {
isJavaProject = ModuleManager.getInstance(project).modules.any {
it.moduleTypeName == ModuleTypeId.JAVA_MODULE
isJavaProject = WorkspaceModel.getInstance(project).currentSnapshot.entities(ModuleEntity::class.java).any {
it.type == JAVA_MODULE_ENTITY_TYPE_ID
}
} else if (!isJavaProject) {
return