Skip to content

Commit 186d4f8

Browse files
committed
fix(bulk-model-sync-gradle): bugfixes
1 parent ccb79e6 commit 186d4f8

File tree

5 files changed

+103
-84
lines changed

5 files changed

+103
-84
lines changed

model-sync-gradle-test/src/test/kotlin/org/modelix/model/sync/gradle/test/PushTest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import org.modelix.model.data.NodeData
2121
import org.modelix.model.lazy.RepositoryId
2222
import org.modelix.model.mpsadapters.RepositoryLanguage
2323
import org.modelix.model.server.Main
24+
import org.modelix.model.sleep
2425
import org.modelix.model.sync.asExported
2526
import java.io.File
2627
import kotlin.test.assertEquals
@@ -70,5 +71,6 @@ class PushTest {
7071
graphNodes[1].name = "Y"
7172
graphNodes[2].name = "Z"
7273
}
74+
sleep(5000) // wait for changes to be sent to server
7375
}
7476
}

model-sync-gradle/src/main/kotlin/org/modelix/model/sync/gradle/ModelSyncGradlePlugin.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ class ModelSyncGradlePlugin : Plugin<Project> {
171171
val antDependencies = project.configurations.create("model-import-ant-dependencies")
172172
project.dependencies.add(antDependencies.name, "org.apache.ant:ant-junit:1.10.12")
173173

174-
val generateAntScriptName = "${syncDirection.name}generateAntScriptForImport"
174+
val generateAntScriptName = "${syncDirection.name}GenerateAntScriptForImport"
175175
val generateAntScript = project.tasks.register(generateAntScriptName, GenerateAntScriptForMps::class.java) {
176176
it.dependsOn(previousTask)
177177
it.mpsHomePath.set(localTarget.mpsHome?.absolutePath)

model-sync-gradle/src/main/kotlin/org/modelix/model/sync/gradle/tasks/ExportFromModelServer.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,15 @@ import org.gradle.api.tasks.OutputDirectory
1111
import org.gradle.api.tasks.TaskAction
1212
import org.modelix.model.ModelFacade
1313
import org.modelix.model.api.IBranch
14+
import org.modelix.model.api.IProperty
1415
import org.modelix.model.api.PBranch
1516
import org.modelix.model.api.getRootNode
1617
import org.modelix.model.client2.IModelClientV2
1718
import org.modelix.model.client2.ModelClientV2
1819
import org.modelix.model.client2.ModelClientV2PlatformSpecificBuilder
1920
import org.modelix.model.client2.getReplicatedModel
2021
import org.modelix.model.lazy.RepositoryId
22+
import org.modelix.model.mpsadapters.RepositoryLanguage
2123
import org.modelix.model.sync.ModelExporter
2224
import javax.inject.Inject
2325

@@ -53,8 +55,11 @@ abstract class ExportFromModelServer @Inject constructor(of: ObjectFactory) : De
5355
branch.runRead {
5456
val root = branch.getRootNode()
5557
println("Got root node: $root")
56-
val outputFile = outputDir.get().asFile.resolve("exported-repo.json")
57-
ModelExporter(root).export(outputFile)
58+
val outputDir = outputDir.get().asFile
59+
root.allChildren.forEach {
60+
val outputFile = outputDir.resolve("${it.getPropertyValue(IProperty.fromName(RepositoryLanguage.NamePropertyUID))}.json")
61+
ModelExporter(it).export(outputFile)
62+
}
5863
}
5964
}
6065

model-sync-gradle/src/main/kotlin/org/modelix/model/sync/gradle/tasks/ImportIntoModelServer.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import org.modelix.model.client2.ModelClientV2PlatformSpecificBuilder
1919
import org.modelix.model.client2.getReplicatedModel
2020
import org.modelix.model.lazy.RepositoryId
2121
import org.modelix.model.sync.ModelImporter
22-
import org.modelix.model.sync.importFile
22+
import org.modelix.model.sync.importFilesAsRootChildren
2323
import javax.inject.Inject
2424

2525
abstract class ImportIntoModelServer @Inject constructor(of: ObjectFactory) : DefaultTask() {
@@ -56,13 +56,13 @@ abstract class ImportIntoModelServer @Inject constructor(of: ObjectFactory) : De
5656
client.getReplicatedModel(branchRef).start()
5757
}
5858

59-
val file = inputDir.listFiles()?.first { it.extension == "json" } ?: error("json file not found")
59+
val files = inputDir.listFiles()?.filter { it.extension == "json" } ?: error("no json files found")
6060

6161
branch.runWrite {
6262
val rootNode = branch.getRootNode()
6363
println("Got root node: $rootNode")
6464
println("Importing...")
65-
ModelImporter(branch.getRootNode()).importFile(file)
65+
ModelImporter(branch.getRootNode()).importFilesAsRootChildren(*files.toTypedArray())
6666
println("Import finished")
6767
}
6868
}

model-sync-mps/solutions/org.modelix.model.sync.mps/models/org.modelix.model.sync.mps.mps

Lines changed: 90 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@
5959
<concept id="1068498886296" name="jetbrains.mps.baseLanguage.structure.VariableReference" flags="nn" index="37vLTw">
6060
<reference id="1068581517664" name="variableDeclaration" index="3cqZAo" />
6161
</concept>
62-
<concept id="1068498886292" name="jetbrains.mps.baseLanguage.structure.ParameterDeclaration" flags="ir" index="37vLTG" />
6362
<concept id="1068498886294" name="jetbrains.mps.baseLanguage.structure.AssignmentExpression" flags="nn" index="37vLTI" />
6463
<concept id="4972933694980447171" name="jetbrains.mps.baseLanguage.structure.BaseVariableDeclaration" flags="ng" index="19Szcq">
6564
<child id="5680397130376446158" name="type" index="1tU5fm" />
@@ -118,11 +117,9 @@
118117
</concept>
119118
<concept id="1146644602865" name="jetbrains.mps.baseLanguage.structure.PublicVisibility" flags="nn" index="3Tm1VV" />
120119
<concept id="1146644623116" name="jetbrains.mps.baseLanguage.structure.PrivateVisibility" flags="nn" index="3Tm6S6" />
121-
<concept id="1080120340718" name="jetbrains.mps.baseLanguage.structure.AndExpression" flags="nn" index="1Wc70l" />
122120
</language>
123121
<language id="fd392034-7849-419d-9071-12563d152375" name="jetbrains.mps.baseLanguage.closures">
124122
<concept id="1199569711397" name="jetbrains.mps.baseLanguage.closures.structure.ClosureLiteral" flags="nn" index="1bVj0M">
125-
<child id="1199569906740" name="parameter" index="1bW2Oz" />
126123
<child id="1199569916463" name="body" index="1bW5cS" />
127124
</concept>
128125
</language>
@@ -376,22 +373,6 @@
376373
</node>
377374
</node>
378375
<node concept="3clFbH" id="7gc0jqT1Ain" role="3cqZAp" />
379-
<node concept="3cpWs8" id="7gc0jqT1xFT" role="3cqZAp">
380-
<node concept="3cpWsn" id="7gc0jqT1xFU" role="3cpWs9">
381-
<property role="TrG5h" value="importer" />
382-
<node concept="3uibUv" id="7gc0jqT1xFV" role="1tU5fm">
383-
<ref role="3uigEE" to="2iw0:~ModelImporter" resolve="ModelImporter" />
384-
</node>
385-
<node concept="2ShNRf" id="7gc0jqT1xFW" role="33vP2m">
386-
<node concept="1pGfFk" id="7gc0jqT1xFX" role="2ShVmc">
387-
<ref role="37wK5l" to="2iw0:~ModelImporter.&lt;init&gt;(org.modelix.model.api.INode)" resolve="ModelImporter" />
388-
<node concept="37vLTw" id="7gc0jqT1xFY" role="37wK5m">
389-
<ref role="3cqZAo" node="7gc0jqT1ApC" resolve="repoAsNode" />
390-
</node>
391-
</node>
392-
</node>
393-
</node>
394-
</node>
395376
<node concept="3cpWs8" id="7gc0jqT1xFZ" role="3cqZAp">
396377
<node concept="3cpWsn" id="7gc0jqT1xG0" role="3cpWs9">
397378
<property role="TrG5h" value="inputPath" />
@@ -407,22 +388,6 @@
407388
</node>
408389
</node>
409390
</node>
410-
<node concept="3cpWs8" id="7gc0jqT1xG4" role="3cqZAp">
411-
<node concept="3cpWsn" id="7gc0jqT1xG5" role="3cpWs9">
412-
<property role="TrG5h" value="inputDir" />
413-
<node concept="3uibUv" id="7gc0jqT1xG6" role="1tU5fm">
414-
<ref role="3uigEE" to="guwi:~File" resolve="File" />
415-
</node>
416-
<node concept="2ShNRf" id="7gc0jqT1xG7" role="33vP2m">
417-
<node concept="1pGfFk" id="7gc0jqT1xG8" role="2ShVmc">
418-
<ref role="37wK5l" to="guwi:~File.&lt;init&gt;(java.lang.String)" resolve="File" />
419-
<node concept="37vLTw" id="7gc0jqT1xG9" role="37wK5m">
420-
<ref role="3cqZAo" node="7gc0jqT1xG0" resolve="inputPath" />
421-
</node>
422-
</node>
423-
</node>
424-
</node>
425-
</node>
426391
<node concept="3clFbF" id="7gc0jqT4cDu" role="3cqZAp">
427392
<node concept="2OqwBi" id="7gc0jqT4duu" role="3clFbG">
428393
<node concept="2OqwBi" id="7gc0jqT4dcW" role="2Oq$k0">
@@ -439,60 +404,107 @@
439404
</node>
440405
</node>
441406
<node concept="liA8E" id="7gc0jqT4dK5" role="2OqNvi">
442-
<ref role="37wK5l" to="lui3:~ModelAccess.runWriteAction(java.lang.Runnable)" resolve="runWriteAction" />
443-
<node concept="1bVj0M" id="7gc0jqT4dNT" role="37wK5m">
444-
<node concept="3clFbS" id="7gc0jqT4dNU" role="1bW5cS">
445-
<node concept="3clFbF" id="2rlXDkQH5ke" role="3cqZAp">
446-
<node concept="2YIFZM" id="2rlXDkQHKkS" role="3clFbG">
447-
<ref role="37wK5l" to="2iw0:~PlatformSpecificKt.importFilesAsRootChildren(org.modelix.model.sync.ModelImporter,java.io.File...)" resolve="importFilesAsRootChildren" />
448-
<ref role="1Pybhc" to="2iw0:~PlatformSpecificKt" resolve="PlatformSpecificKt" />
449-
<node concept="37vLTw" id="2rlXDkQHKkT" role="37wK5m">
450-
<ref role="3cqZAo" node="7gc0jqT1xFU" resolve="importer" />
451-
</node>
452-
<node concept="2OqwBi" id="2rlXDkQHKkU" role="37wK5m">
453-
<node concept="37vLTw" id="2rlXDkQHKkV" role="2Oq$k0">
454-
<ref role="3cqZAo" node="7gc0jqT1xG5" resolve="inputDir" />
407+
<ref role="37wK5l" to="lui3:~ModelAccess.runWriteInEDT(java.lang.Runnable)" resolve="runWriteInEDT" />
408+
<node concept="1bVj0M" id="2rlXDkQJYC6" role="37wK5m">
409+
<node concept="3clFbS" id="2rlXDkQJYC7" role="1bW5cS">
410+
<node concept="2Gpval" id="2rlXDkQJYPO" role="3cqZAp">
411+
<node concept="2GrKxI" id="2rlXDkQJYPQ" role="2Gsz3X">
412+
<property role="TrG5h" value="module" />
413+
</node>
414+
<node concept="2OqwBi" id="2rlXDkQJZ_J" role="2GsD0m">
415+
<node concept="2OqwBi" id="2rlXDkQJZ8x" role="2Oq$k0">
416+
<node concept="37vLTw" id="2rlXDkQJYWE" role="2Oq$k0">
417+
<ref role="3cqZAo" node="7gc0jqT1ApC" resolve="repoAsNode" />
455418
</node>
456-
<node concept="liA8E" id="2rlXDkQHKkW" role="2OqNvi">
457-
<ref role="37wK5l" to="guwi:~File.listFiles(java.io.FileFilter)" resolve="listFiles" />
458-
<node concept="1bVj0M" id="2rlXDkQHUeo" role="37wK5m">
459-
<node concept="37vLTG" id="2rlXDkQHUls" role="1bW2Oz">
460-
<property role="TrG5h" value="file" />
461-
<node concept="3uibUv" id="2rlXDkQHUtF" role="1tU5fm">
462-
<ref role="3uigEE" to="guwi:~File" resolve="File" />
463-
</node>
464-
</node>
465-
<node concept="3clFbS" id="2rlXDkQHUep" role="1bW5cS">
466-
<node concept="3clFbF" id="2rlXDkQHUVn" role="3cqZAp">
467-
<node concept="1Wc70l" id="2rlXDkQI0id" role="3clFbG">
468-
<node concept="2OqwBi" id="2rlXDkQI1uX" role="3uHU7w">
469-
<node concept="2OqwBi" id="2rlXDkQI0N$" role="2Oq$k0">
470-
<node concept="37vLTw" id="2rlXDkQI0rY" role="2Oq$k0">
471-
<ref role="3cqZAo" node="2rlXDkQHUls" resolve="file" />
472-
</node>
473-
<node concept="liA8E" id="2rlXDkQI0Zg" role="2OqNvi">
474-
<ref role="37wK5l" to="guwi:~File.getName()" resolve="getName" />
475-
</node>
419+
<node concept="liA8E" id="2rlXDkQJZiN" role="2OqNvi">
420+
<ref role="37wK5l" to="zxfz:~MPSRepositoryAsNode.getRepository()" resolve="getRepository" />
421+
</node>
422+
</node>
423+
<node concept="liA8E" id="2rlXDkQJZK3" role="2OqNvi">
424+
<ref role="37wK5l" to="lui3:~SRepository.getModules()" resolve="getModules" />
425+
</node>
426+
</node>
427+
<node concept="3clFbS" id="2rlXDkQJYPU" role="2LFqv$">
428+
<node concept="3cpWs8" id="2rlXDkQK1M3" role="3cqZAp">
429+
<node concept="3cpWsn" id="2rlXDkQK1M4" role="3cpWs9">
430+
<property role="TrG5h" value="moduleFile" />
431+
<node concept="3uibUv" id="2rlXDkQK1M5" role="1tU5fm">
432+
<ref role="3uigEE" to="guwi:~File" resolve="File" />
433+
</node>
434+
<node concept="2ShNRf" id="2rlXDkQK2xB" role="33vP2m">
435+
<node concept="1pGfFk" id="2rlXDkQK2xu" role="2ShVmc">
436+
<ref role="37wK5l" to="guwi:~File.&lt;init&gt;(java.lang.String)" resolve="File" />
437+
<node concept="3cpWs3" id="2rlXDkQK5o3" role="37wK5m">
438+
<node concept="Xl_RD" id="2rlXDkQK5_c" role="3uHU7w">
439+
<property role="Xl_RC" value=".json" />
440+
</node>
441+
<node concept="3cpWs3" id="2rlXDkQK3JI" role="3uHU7B">
442+
<node concept="3cpWs3" id="2rlXDkQK34a" role="3uHU7B">
443+
<node concept="37vLTw" id="2rlXDkQK2Os" role="3uHU7B">
444+
<ref role="3cqZAo" node="7gc0jqT1xG0" resolve="inputPath" />
476445
</node>
477-
<node concept="liA8E" id="2rlXDkQI1Nc" role="2OqNvi">
478-
<ref role="37wK5l" to="wyt6:~String.endsWith(java.lang.String)" resolve="endsWith" />
479-
<node concept="Xl_RD" id="2rlXDkQI1VF" role="37wK5m">
480-
<property role="Xl_RC" value=".json" />
481-
</node>
446+
<node concept="10M0yZ" id="2rlXDkQK3tA" role="3uHU7w">
447+
<ref role="3cqZAo" to="guwi:~File.separator" resolve="separator" />
448+
<ref role="1PxDUh" to="guwi:~File" resolve="File" />
482449
</node>
483450
</node>
484-
<node concept="2OqwBi" id="2rlXDkQHV7H" role="3uHU7B">
485-
<node concept="37vLTw" id="2rlXDkQHUVm" role="2Oq$k0">
486-
<ref role="3cqZAo" node="2rlXDkQHUls" resolve="file" />
451+
<node concept="2OqwBi" id="2rlXDkQK4CM" role="3uHU7w">
452+
<node concept="2GrUjf" id="2rlXDkQK3SO" role="2Oq$k0">
453+
<ref role="2Gs0qQ" node="2rlXDkQJYPQ" resolve="module" />
487454
</node>
488-
<node concept="liA8E" id="2rlXDkQHVh5" role="2OqNvi">
489-
<ref role="37wK5l" to="guwi:~File.isFile()" resolve="isFile" />
455+
<node concept="liA8E" id="2rlXDkQK56z" role="2OqNvi">
456+
<ref role="37wK5l" to="lui3:~SModule.getModuleName()" resolve="getModuleName" />
457+
</node>
458+
</node>
459+
</node>
460+
</node>
461+
</node>
462+
</node>
463+
</node>
464+
</node>
465+
<node concept="3clFbJ" id="2rlXDkQK6oT" role="3cqZAp">
466+
<node concept="3clFbS" id="2rlXDkQK6oV" role="3clFbx">
467+
<node concept="3cpWs8" id="2rlXDkQK7C_" role="3cqZAp">
468+
<node concept="3cpWsn" id="2rlXDkQK7CA" role="3cpWs9">
469+
<property role="TrG5h" value="importer" />
470+
<node concept="3uibUv" id="2rlXDkQK7CB" role="1tU5fm">
471+
<ref role="3uigEE" to="2iw0:~ModelImporter" resolve="ModelImporter" />
472+
</node>
473+
<node concept="2ShNRf" id="2rlXDkQK8dz" role="33vP2m">
474+
<node concept="1pGfFk" id="2rlXDkQK8dq" role="2ShVmc">
475+
<ref role="37wK5l" to="2iw0:~ModelImporter.&lt;init&gt;(org.modelix.model.api.INode)" resolve="ModelImporter" />
476+
<node concept="2ShNRf" id="2rlXDkQK8wO" role="37wK5m">
477+
<node concept="1pGfFk" id="2rlXDkQK8Rd" role="2ShVmc">
478+
<ref role="37wK5l" to="zxfz:~MPSModuleAsNode.&lt;init&gt;(org.jetbrains.mps.openapi.module.SModule)" resolve="MPSModuleAsNode" />
479+
<node concept="2GrUjf" id="2rlXDkQK91S" role="37wK5m">
480+
<ref role="2Gs0qQ" node="2rlXDkQJYPQ" resolve="module" />
481+
</node>
490482
</node>
491483
</node>
492484
</node>
493485
</node>
494486
</node>
495487
</node>
488+
<node concept="3clFbF" id="2rlXDkQK9wk" role="3cqZAp">
489+
<node concept="2YIFZM" id="2rlXDkQKa9p" role="3clFbG">
490+
<ref role="37wK5l" to="2iw0:~PlatformSpecificKt.importFile(org.modelix.model.sync.ModelImporter,java.io.File)" resolve="importFile" />
491+
<ref role="1Pybhc" to="2iw0:~PlatformSpecificKt" resolve="PlatformSpecificKt" />
492+
<node concept="37vLTw" id="2rlXDkQKaix" role="37wK5m">
493+
<ref role="3cqZAo" node="2rlXDkQK7CA" resolve="importer" />
494+
</node>
495+
<node concept="37vLTw" id="2rlXDkQKatp" role="37wK5m">
496+
<ref role="3cqZAo" node="2rlXDkQK1M4" resolve="moduleFile" />
497+
</node>
498+
</node>
499+
</node>
500+
</node>
501+
<node concept="2OqwBi" id="2rlXDkQK6ZI" role="3clFbw">
502+
<node concept="37vLTw" id="2rlXDkQK6xK" role="2Oq$k0">
503+
<ref role="3cqZAo" node="2rlXDkQK1M4" resolve="moduleFile" />
504+
</node>
505+
<node concept="liA8E" id="2rlXDkQK7kO" role="2OqNvi">
506+
<ref role="37wK5l" to="guwi:~File.exists()" resolve="exists" />
507+
</node>
496508
</node>
497509
</node>
498510
</node>

0 commit comments

Comments
 (0)