project model: ModuleDescription class moved to core-api module dbe/173.74
authornik <Nikolay.Chashnikov@jetbrains.com>
Fri, 9 Jun 2017 09:53:49 +0000 (11:53 +0200)
committernik <Nikolay.Chashnikov@jetbrains.com>
Fri, 9 Jun 2017 10:13:07 +0000 (12:13 +0200)
This is needed to allow referencing ModuleDescription from GlobalSearchScope. The classes were converted to Java because we cannot use Kotlin in core-api module which is used inside the Kotlin compiler. Properties were converted to functions in implementations because Kotlin doesn't allow overriding Java getters with properties (KT-6653).

platform/core-api/src/com/intellij/openapi/module/LoadedModuleDescription.java [new file with mode: 0644]
platform/core-api/src/com/intellij/openapi/module/ModuleDescription.java [moved from platform/projectModel-api/src/com/intellij/openapi/module/ModuleDescription.kt with 57% similarity]
platform/core-api/src/com/intellij/openapi/module/UnloadedModuleDescription.java [new file with mode: 0644]
platform/projectModel-impl/src/com/intellij/openapi/module/impl/LoadedModuleDescriptionImpl.kt
platform/projectModel-impl/src/com/intellij/openapi/module/impl/UnloadedModuleDescriptionImpl.kt

diff --git a/platform/core-api/src/com/intellij/openapi/module/LoadedModuleDescription.java b/platform/core-api/src/com/intellij/openapi/module/LoadedModuleDescription.java
new file mode 100644 (file)
index 0000000..4ca1433
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2000-2017 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.
+ */
+package com.intellij.openapi.module;
+
+import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * @author nik
+ */
+@ApiStatus.Experimental
+public interface LoadedModuleDescription extends ModuleDescription {
+  @NotNull
+  Module getModule();
+}
similarity index 57%
rename from platform/projectModel-api/src/com/intellij/openapi/module/ModuleDescription.kt
rename to platform/core-api/src/com/intellij/openapi/module/ModuleDescription.java
index d2da9b3657206ec45d3378f06fd8591a67a625bb..95c743fccf910f327d892c88a89dd6b0e83e84ca 100644 (file)
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.intellij.openapi.module
+package com.intellij.openapi.module;
 
-import com.intellij.openapi.vfs.pointers.VirtualFilePointer
-import org.jetbrains.annotations.ApiStatus
+import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
 
 /**
  * Represents a description of a module which may be either loaded into the project or unloaded. Use this class only if you need to process
- * all modules including unloaded, in other cases [Module] should be used instead.
- * @see [ModuleManager.getUnloadedModuleDescriptions]
+ * all modules including unloaded, in other cases {@link Module} should be used instead.
+ *
+ * @see UnloadedModuleDescription
+ * @see LoadedModuleDescription
  * @author nik
  */
 @ApiStatus.Experimental
-interface ModuleDescription {
-  val name: String
+public interface ModuleDescription {
+  @NotNull
+  String getName();
 
   /**
    * Names of the modules on which the current module depend.
    */
-  val dependencyModuleNames: List<String>
+  @NotNull
+  List<String> getDependencyModuleNames();
 }
-
-@ApiStatus.Experimental
-interface UnloadedModuleDescription : ModuleDescription {
-  val contentRoots: List<VirtualFilePointer>
-  val groupPath: List<String>
-}
-
-@ApiStatus.Experimental
-interface LoadedModuleDescription : ModuleDescription {
-  val module: Module
-}
\ No newline at end of file
diff --git a/platform/core-api/src/com/intellij/openapi/module/UnloadedModuleDescription.java b/platform/core-api/src/com/intellij/openapi/module/UnloadedModuleDescription.java
new file mode 100644 (file)
index 0000000..1d4be72
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2000-2017 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.
+ */
+package com.intellij.openapi.module;
+
+import com.intellij.openapi.vfs.pointers.VirtualFilePointer;
+import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.List;
+
+/**
+ * @author nik
+ */
+@ApiStatus.Experimental
+public interface UnloadedModuleDescription extends ModuleDescription {
+  @NotNull
+  List<VirtualFilePointer> getContentRoots();
+
+  @NotNull
+  List<String> getGroupPath();
+}
index 16a920338248daf9e6afe30d58293ecacc6f5ad8..fb1e0ed2609c7f6935fcc957fc593434da0487f6 100644 (file)
@@ -22,10 +22,10 @@ import com.intellij.openapi.roots.ModuleRootManager
 /**
  * @author nik
  */
-class LoadedModuleDescriptionImpl(override val module: Module): LoadedModuleDescription {
-  override val name: String
-    get() = module.name
+class LoadedModuleDescriptionImpl(private val module: Module): LoadedModuleDescription {
+  override fun getModule() = module
 
-  override val dependencyModuleNames: List<String>
-    get() = ModuleRootManager.getInstance(module).dependencyModuleNames.asList()
+  override fun getName() = module.name
+
+  override fun getDependencyModuleNames() = ModuleRootManager.getInstance(module).dependencyModuleNames.asList()
 }
\ No newline at end of file
index 6256e19993411d85178feeabbbb652f3548138ea..9e19ca16f992de393a096f8fc6791632ec8dd407 100644 (file)
@@ -30,13 +30,15 @@ import java.nio.file.Paths
  * @author nik
  */
 class UnloadedModuleDescriptionImpl(val modulePath: ModulePath,
-                                    override val dependencyModuleNames: List<String>,
-                                    override val contentRoots: List<VirtualFilePointer>) : UnloadedModuleDescription {
-  override val groupPath: List<String>
-    get() = modulePath.group?.split(ModuleManagerImpl.MODULE_GROUP_SEPARATOR) ?: emptyList()
+                                    private val dependencyModuleNames: List<String>,
+                                    private val contentRoots: List<VirtualFilePointer>) : UnloadedModuleDescription {
+  override fun getGroupPath() = modulePath.group?.split(ModuleManagerImpl.MODULE_GROUP_SEPARATOR) ?: emptyList()
 
-  override val name: String
-    get() = modulePath.moduleName
+  override fun getName() = modulePath.moduleName
+
+  override fun getContentRoots() = contentRoots
+
+  override fun getDependencyModuleNames() = dependencyModuleNames
 
   companion object {
     @JvmStatic