@@ -21,8 +21,6 @@ import com.intellij.openapi.project.Project
21
21
import com.intellij.openapi.startup.StartupActivity
22
22
import jetbrains.mps.ide.project.ProjectHelper
23
23
import jetbrains.mps.project.MPSProject
24
- import jetbrains.mps.project.ProjectBase
25
- import jetbrains.mps.project.ProjectManager
26
24
import org.modelix.model.api.INode
27
25
import org.modelix.model.api.runSynchronized
28
26
import org.modelix.model.mpsadapters.MPSRepositoryAsNode
@@ -56,18 +54,18 @@ class MPSModelServer : Disposable {
56
54
projects.remove(project)
57
55
}
58
56
59
- private fun getRootNode (): INode ? {
57
+ private fun getMPSProjects (): List < MPSProject > {
60
58
return runSynchronized(projects) {
61
- projects.removeIf { it.isDisposed }
62
- projects.asSequence().mapNotNull {
63
- it
64
- .getComponent(MPSProject ::class .java)
65
- ?.repository
66
- ?.let { MPSRepositoryAsNode (it) }
67
- }.firstOrNull()
59
+ projects.mapNotNull { it.getComponent(MPSProject ::class .java) }
68
60
}
69
61
}
70
62
63
+ private fun getRootNode (): INode ? {
64
+ return getMPSProjects().asSequence().map {
65
+ MPSRepositoryAsNode (it.repository)
66
+ }.firstOrNull()
67
+ }
68
+
71
69
fun ensureStarted () {
72
70
runSynchronized(this ) {
73
71
if (server != null ) return
@@ -85,8 +83,7 @@ class MPSModelServer : Disposable {
85
83
86
84
override fun run (output : java.lang.StringBuilder ): Boolean {
87
85
var allSmart = true
88
- val projects = ProjectManager .getInstance().openedProjects
89
- for (project in projects) {
86
+ for (project in getMPSProjects()) {
90
87
project.repository.modelAccess.runReadAction {
91
88
val indexerDone =
92
89
! DumbService .getInstance(ProjectHelper .toIdeaProject(project)).isDumb
@@ -106,10 +103,10 @@ class MPSModelServer : Disposable {
106
103
get() = false
107
104
108
105
override fun run (output : StringBuilder ): Boolean {
109
- val projects = ProjectManager .getInstance().openedProjects
106
+ val projects = getMPSProjects()
110
107
output.append(" ${projects.size} projects found" )
111
- projects.forEach { output.append(" ${it.toString()} " ) }
112
- return ProjectManager .getInstance().openedProjects .isNotEmpty()
108
+ projects.forEach { output.append(" $it " ) }
109
+ return projects .isNotEmpty()
113
110
}
114
111
})
115
112
.healthCheck(object : LightModelServer .IHealthCheck {
@@ -119,13 +116,13 @@ class MPSModelServer : Disposable {
119
116
get() = false
120
117
121
118
override fun run (output : StringBuilder ): Boolean {
122
- val projects = ProjectManager .getInstance().openedProjects.filterIsInstance< ProjectBase > ()
119
+ val projects = getMPSProjects ()
123
120
for (project in projects) {
124
121
val modules = project.projectModules
125
122
val virtualFolders = modules
126
123
.mapNotNull { project.getPath(it)?.virtualFolder }
127
124
.filter { it.isNotEmpty() }
128
- output.append(" project ${ project.toString()} contains ${modules.size} modules with ${virtualFolders.size} virtual folders" )
125
+ output.append(" project $project contains ${modules.size} modules with ${virtualFolders.size} virtual folders" )
129
126
if (virtualFolders.isNotEmpty()) return true
130
127
}
131
128
return false
0 commit comments