Skip to content

Commit 6aad5e5

Browse files
committed
fix: version detection strategy didn't work for with custom branding
ApplicationInfo doesn't provide the MPS version if a custom RCP with a modified branding is used.
1 parent 5f230a3 commit 6aad5e5

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

lib/src/main/kotlin/org/modelix/mps/api/ModelixMpsApi.kt

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,23 @@
11
package org.modelix.mps.api
22

3+
import com.intellij.ide.plugins.PluginManagerCore
34
import com.intellij.openapi.application.ApplicationInfo
5+
import com.intellij.openapi.extensions.PluginId
46

57
private fun detectMpsVersion(): Int {
8+
PluginManagerCore.getPlugin(PluginId.getId("jetbrains.mps.core"))
9+
?.version
10+
?.substringBefore(".")
11+
?.toInt()
12+
?.let { return it }
13+
614
val info = ApplicationInfo.getInstance()
715
return (info.majorVersion.toInt() - 2000) * 10 + info.minorVersionMainPart.toInt()
816
}
917

1018
private fun resolveInstance(): IModelixMpsApi {
1119
val mpsVersion = detectMpsVersion()
12-
when (mpsVersion) {
20+
return when (mpsVersion) {
1321
203 -> ModelixMpsApiImpl203()
1422
211 -> ModelixMpsApiImpl211()
1523
212 -> ModelixMpsApiImpl212()
@@ -22,8 +30,6 @@ private fun resolveInstance(): IModelixMpsApi {
2230
243 -> ModelixMpsApiImpl243()
2331
else -> throw UnsupportedOperationException("Unsupported MPS version: $mpsVersion")
2432
}
25-
return Class.forName("org.modelix.mps.api.ModelixMpsApiImpl${detectMpsVersion()}")
26-
.constructors.single().newInstance() as IModelixMpsApi
2733
}
2834

2935
object ModelixMpsApi : IModelixMpsApi by resolveInstance()

0 commit comments

Comments
 (0)