Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ modelix-model-api-gen = { id = "org.modelix.model-api-gen", version.ref = "model
npm-publish = { id = "dev.petuska.npm.publish", version = "3.5.2" }

[versions]
modelixCore = "11.2.1"
modelixCore = "11.3.0"
kotlinCoroutines="1.10.1"
ktor="3.0.3"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,20 +24,23 @@ import org.modelix.model.api.BuiltinLanguages
import org.modelix.model.api.INode
import org.modelix.model.api.PNodeAdapter
import org.modelix.model.api.isSubConceptOf
import org.modelix.model.mpsadapters.MPSNode
import org.modelix.model.mpsadapters.MPSWritableNode

@UnstableModelixFeature(reason = "The new modelix MPS plugin is under construction", intendedFinalization = "This feature is finalized when the new sync plugin is ready for release.")
fun INode.nodeIdAsLong(): Long =
when (this) {
is PNodeAdapter -> this.nodeId
is MPSNode -> {
val nodeId = this.node.nodeId
fun INode.nodeIdAsLong(): Long {
val node = this
val writableNode = this.asWritableNode()
return when {
node is PNodeAdapter -> node.nodeId
writableNode is MPSWritableNode -> {
val nodeId = writableNode.node.nodeId
check(nodeId is Regular) { "Unsupported NodeId format: $nodeId" }
nodeId.id
}

else -> throw IllegalStateException("Unsupported INode implementation")
}
}

@UnstableModelixFeature(reason = "The new modelix MPS plugin is under construction", intendedFinalization = "This feature is finalized when the new sync plugin is ready for release.")
fun INode.isModule(): Boolean {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ import org.modelix.model.api.PNodeReference
import org.modelix.model.api.getNode
import org.modelix.model.mpsadapters.MPSArea
import org.modelix.model.mpsadapters.MPSLanguageRepository
import org.modelix.model.mpsadapters.MPSNode
import org.modelix.model.mpsadapters.MPSProperty
import org.modelix.model.mpsadapters.MPSReferenceLink
import org.modelix.model.mpsadapters.MPSWritableNode
import org.modelix.mps.sync.modelix.util.getMpsNodeId
import org.modelix.mps.sync.modelix.util.nodeIdAsLong
import org.modelix.mps.sync.mps.services.ServiceLocator
Expand Down Expand Up @@ -151,7 +151,7 @@ class SNodeFactory(
} else {
// target node is an existing SNode
val area = MPSArea(mpsRepository)
val mpsNode = area.resolveNode(targetNodeReference) as MPSNode?
val mpsNode = area.resolveNode(targetNodeReference)?.asWritableNode() as MPSWritableNode?
requireNotNull(mpsNode) { "SNode identified by Node $sourceNodeId is not found." }
source.setReferenceTarget(reference, mpsNode.node)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ class MpsToModelixMapInitializerVisitor(
Pair(modelId, modelName)
} else {
// target is an SModel in MPS
val modelixModelImport = MPSArea(repository).resolveNode(targetModelRef) as MPSModelImportAsNode?
val modelixModelImport = MPSArea(repository).resolveNode(targetModelRef)?.asWritableNode() as MPSModelImportAsNode?
requireNotNull(modelixModelImport) { "Model Import identified by Node $modelImport is not found." }
val targetModel = modelixModelImport.importedModel
val modelId = targetModel.modelId
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import org.modelix.model.api.PropertyFromName
import org.modelix.model.api.getNode
import org.modelix.model.mpsadapters.MPSArea
import org.modelix.model.mpsadapters.MPSLanguageRepository
import org.modelix.model.mpsadapters.MPSNode
import org.modelix.model.mpsadapters.MPSWritableNode
import org.modelix.mps.sync.modelix.util.getModule
import org.modelix.mps.sync.modelix.util.isDevKitDependency
import org.modelix.mps.sync.modelix.util.isModel
Expand Down Expand Up @@ -104,7 +104,7 @@ class ModelixTreeChangeVisitor(
nodeMap.getNode(targetNode.nodeIdAsLong())
} else {
val area = MPSArea(mpsRepository)
val mpsNode = area.resolveNode(targetNodeReference) as MPSNode?
val mpsNode = area.resolveNode(targetNodeReference)?.asWritableNode() as MPSWritableNode?
requireNotNull(mpsNode) { "SNode identified by Node $nodeId is not found." }
mpsNode.node
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -204,9 +204,9 @@ class ModelTransformer(
)
} else {
// target is an SModel in MPS
val modelixModelImport = MPSArea(mpsRepository).resolveNode(targetModelRef) as MPSModelImportAsNode?
val modelixModelImport = MPSArea(mpsRepository).resolveNode(targetModelRef)?.asWritableNode() as MPSModelImportAsNode?
requireNotNull(modelixModelImport) { "Model Import identified by Node $nodeId is not found." }
val modelImport = modelixModelImport.importedModel.reference
val modelImport = modelixModelImport.importedModel
ModelImports(sourceModel).addModelImport(modelImport)

nodeMap.put(sourceModel, modelImport, iNode.nodeIdAsLong())
Expand Down
Loading