Skip to content

Commit 44df134

Browse files
authored
Merge pull request #196 from modelix/mps-compatibility
ci: compile with all MPS versions
2 parents fa01fb5 + 414a9ff commit 44df134

File tree

5 files changed

+60
-20
lines changed

5 files changed

+60
-20
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: MPS compatibility
2+
3+
on:
4+
push:
5+
branches:
6+
- 'main'
7+
pull_request: {}
8+
# allow manual execution just in case
9+
workflow_dispatch:
10+
11+
jobs:
12+
assemble-mps-components:
13+
runs-on: ubuntu-latest
14+
timeout-minutes: 30
15+
strategy:
16+
fail-fast: false
17+
matrix:
18+
version:
19+
# - "2020.3"
20+
- "2021.1"
21+
- "2021.2"
22+
- "2021.3"
23+
- "2022.2"
24+
- "2022.3"
25+
- "2023.2"
26+
- "2024.1"
27+
# - "2024.3"
28+
steps:
29+
- uses: actions/checkout@v4
30+
- name: Set up JDK
31+
uses: actions/setup-java@v4
32+
with:
33+
distribution: 'temurin'
34+
java-version: '21'
35+
- name: Set up Gradle
36+
uses: gradle/gradle-build-action@v3
37+
- name: Assemble with ${{ matrix.version }}
38+
env:
39+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
40+
run: >-
41+
./gradlew --build-cache
42+
assemble
43+
-Pmps.version.major=${{ matrix.version }}

mps-legacy-sync-plugin/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ dependencies {
6262

6363
implementation(coreLibs.kotlin.reflect)
6464
implementation(coreLibs.ktor.server.resources)
65+
implementation(libs.modelix.mpsApi)
6566

6667
// There is a usage of MakeActionParameters in ProjectMakeRunner which we might want to delete
6768
compileOnly(mpsHomeDir.map { it.files("plugins/mps-make/languages/jetbrains.mps.ide.make.jar") })

mps-legacy-sync-plugin/src/main/java/org/modelix/model/mpsplugin/plugin/ModelImportExport.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import jetbrains.mps.internal.collections.runtime.Sequence
1212
import jetbrains.mps.messages.IMessage
1313
import jetbrains.mps.project.MPSProject
1414
import jetbrains.mps.project.Project
15-
import jetbrains.mps.project.StandaloneMPSProject
1615
import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory
1716
import org.apache.log4j.Level
1817
import org.apache.log4j.LogManager
@@ -31,6 +30,7 @@ import org.modelix.model.mpsplugin.ModelServerConnection
3130
import org.modelix.model.mpsplugin.ModelServerConnections
3231
import org.modelix.model.mpsplugin.ProjectBinding
3332
import org.modelix.model.mpsplugin.SyncDirection
33+
import org.modelix.mps.api.ModelixMpsApi
3434
import java.io.BufferedReader
3535
import java.io.InputStreamReader
3636
import java.io.PrintWriter
@@ -39,6 +39,7 @@ import java.net.Socket
3939
import java.util.function.Consumer
4040

4141
/*Generated by MPS */
42+
@Suppress("UnstableApiUsage", "removal")
4243
class ModelImportExport {
4344
fun cloud2mps() {
4445
val exportPath = PropertyOrEnv.get(ModelixExportConfiguration.PATH)
@@ -149,10 +150,7 @@ class ModelImportExport {
149150
),
150151
).where(object : IWhereFilter<SModule>() {
151152
override fun accept(it: SModule): Boolean {
152-
val virtualFolder =
153-
(mpsProject as StandaloneMPSProject).getFolderFor(
154-
it,
155-
)
153+
val virtualFolder = ModelixMpsApi.getVirtualFolder(mpsProject, it)
156154
println("Modelix Application Plugin - Considering module: " + it.moduleName + " virtual folder: " + virtualFolder + ", make is currently: " + make)
157155
return Sequence.fromIterable<String>(
158156
Sequence.fromArray<String>(

mps-legacy-sync-plugin/src/main/java/org/modelix/model/mpsplugin/projectview/CloudProjectViewExtension.kt

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
@file:Suppress("removal", "UnstableApiUsage")
2+
13
package org.modelix.model.mpsplugin.projectview
24

35
import com.intellij.openapi.application.ApplicationManager
@@ -6,8 +8,6 @@ import jetbrains.mps.baseLanguage.closures.runtime.Wrappers._T
68
import jetbrains.mps.baseLanguage.closures.runtime._FunctionTypes._void_P1_E0
79
import jetbrains.mps.ide.project.ProjectHelper
810
import jetbrains.mps.ide.projectPane.ProjectPane
9-
import jetbrains.mps.ide.projectPane.logicalview.ProjectTree
10-
import jetbrains.mps.ide.ui.tree.MPSTreeNode
1111
import jetbrains.mps.ide.ui.tree.TextTreeNode
1212
import jetbrains.mps.internal.collections.runtime.ISelector
1313
import jetbrains.mps.internal.collections.runtime.IVisitor
@@ -35,10 +35,12 @@ import java.awt.event.ActionEvent
3535
import java.awt.event.ActionListener
3636
import java.util.concurrent.atomic.AtomicBoolean
3737
import javax.swing.Icon
38+
import javax.swing.JTree
3839
import javax.swing.Timer
3940
import javax.swing.event.TreeModelEvent
4041
import javax.swing.event.TreeModelListener
4142
import javax.swing.tree.DefaultTreeModel
43+
import javax.swing.tree.MutableTreeNode
4244
import javax.swing.tree.TreeNode
4345
import kotlin.math.min
4446

@@ -127,8 +129,8 @@ class CloudProjectViewExtension(private val project: Project?) {
127129
}
128130
}
129131

130-
private fun waitForProjectTree(callback: _void_P1_E0<in ProjectTree>) {
131-
val tree: ProjectTree? = projectTree
132+
private fun waitForProjectTree(callback: _void_P1_E0<in JTree>) {
133+
val tree = projectTree
132134
if (tree != null) {
133135
callback.invoke(tree)
134136
} else {
@@ -137,7 +139,7 @@ class CloudProjectViewExtension(private val project: Project?) {
137139
1000,
138140
object : ActionListener {
139141
override fun actionPerformed(e: ActionEvent) {
140-
val tree: ProjectTree? = projectTree
142+
val tree = projectTree
141143
if (tree != null) {
142144
callback.invoke(tree)
143145
timer.value!!.stop()
@@ -153,7 +155,7 @@ class CloudProjectViewExtension(private val project: Project?) {
153155
}
154156
}
155157

156-
private val projectTree: ProjectTree?
158+
private val projectTree: JTree?
157159
private get() {
158160
if (project!!.isDisposed) {
159161
return null
@@ -184,10 +186,8 @@ class CloudProjectViewExtension(private val project: Project?) {
184186
val projectPane: ProjectPane = ProjectPane.getInstance(
185187
project,
186188
)
187-
val root: MPSTreeNode? = projectPane.tree.rootNode
188-
if (root == null) {
189-
return
190-
}
189+
val root = projectPane.tree.model.root ?: return
190+
root as MutableTreeNode
191191
val model: DefaultTreeModel? = TreeModelUtil.getModel(projectPane.tree)
192192

193193
// wrong parent
@@ -238,10 +238,7 @@ class CloudProjectViewExtension(private val project: Project?) {
238238
}
239239

240240
fun updateModules() {
241-
val root: MPSTreeNode? = projectTree?.rootNode
242-
if (root == null) {
243-
return
244-
}
241+
val root = projectTree?.model?.root ?: return
245242
val treeModel: DefaultTreeModel? = TreeModelUtil.getModel(projectTree)
246243
project!!.repository.modelAccess.runReadAction(object : Runnable {
247244
override fun run() {

mps-sync-plugin-lib/src/main/kotlin/org/modelix/mps/sync/mps/ModelRenameHelper.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,8 @@ class ModelRenameHelper(private val model: EditableSModelBase, private val mpsPr
7373
while (var4.hasNext()) {
7474
val sm: SModel = var4.next() as SModel
7575
if (!sm.isReadOnly) {
76-
if (sm is EditableSModelBase && sm.updateExternalReferences(mpsProject.repository)) {
76+
if (sm is EditableSModelBase) {
77+
sm.updateExternalReferences(mpsProject.repository)
7778
sm.isChanged = true
7879
}
7980
}

0 commit comments

Comments
 (0)