@@ -14,13 +14,20 @@ import org.modelix.model.api.IConcept
1414import org.modelix.model.api.IConceptReference
1515import org.modelix.model.api.INode
1616import org.modelix.model.api.INodeReference
17- import org.modelix.model.api.NodeReference
1817import org.modelix.model.area.IArea
1918import org.modelix.model.area.IAreaListener
2019import org.modelix.model.area.IAreaReference
20+ import org.modelix.mps.multiplatform.model.MPSDevKitDependencyReference
21+ import org.modelix.mps.multiplatform.model.MPSJavaModuleFacetReference
22+ import org.modelix.mps.multiplatform.model.MPSModelImportReference
2123import org.modelix.mps.multiplatform.model.MPSModelReference
24+ import org.modelix.mps.multiplatform.model.MPSModuleDependencyReference
2225import org.modelix.mps.multiplatform.model.MPSModuleReference
2326import org.modelix.mps.multiplatform.model.MPSNodeReference
27+ import org.modelix.mps.multiplatform.model.MPSProjectModuleReference
28+ import org.modelix.mps.multiplatform.model.MPSProjectReference
29+ import org.modelix.mps.multiplatform.model.MPSRepositoryReference
30+ import org.modelix.mps.multiplatform.model.MPSSingleLanguageDependencyReference
2431
2532data class MPSArea (val repository : SRepository ) : IArea, IAreaReference {
2633
@@ -162,89 +169,38 @@ data class MPSArea(val repository: SRepository) : IArea, IAreaReference {
162169 }
163170
164171 private fun resolveMPSDevKitDependencyReference (ref : INodeReference ): MPSDevKitDependencyAsNode ? {
165- if (ref is MPSDevKitDependencyReference ) {
166- return when {
167- ref.userModule != null -> ref.userModule.resolve(repository)
168- ?.let { MPSModuleAsNode (it).findDevKitDependency(ref.usedModuleId) }
169- ref.userModel != null -> ref.userModel.resolve(repository)
170- ?.let { MPSModelAsNode (it).findDevKitDependency(ref.usedModuleId) }
171- else -> error(" No importer found." )
172- }
173- }
174- val serialized = ref.serialize()
175- val serializedModuleId = serialized.substringAfter(" ${MPSDevKitDependencyReference .PREFIX } :" )
176- .substringBefore(MPSDevKitDependencyReference .SEPARATOR )
177-
178- val importer = serialized.substringAfter(MPSDevKitDependencyReference .SEPARATOR )
179- val foundImporter = resolveNode(NodeReference (importer))?.asWritableNode()
180-
181- val moduleId = PersistenceFacade .getInstance().createModuleId(serializedModuleId)
182-
183- return when (foundImporter) {
184- is MPSModelAsNode -> foundImporter.findDevKitDependency(moduleId)
185- is MPSModuleAsNode <* > -> foundImporter.findDevKitDependency(moduleId)
186- else -> null
172+ val ref = MPSDevKitDependencyReference .tryConvert(ref) ? : return null
173+ val userModule = ref.userModule
174+ val userModel = ref.userModel
175+ return when {
176+ userModule != null -> userModule.toMPS().resolve(repository)
177+ ?.let { MPSModuleAsNode (it).findDevKitDependency(ref.usedModuleId.toMPS().moduleId) }
178+ userModel != null -> userModel.toMPS().resolve(repository)
179+ ?.let { MPSModelAsNode (it).findDevKitDependency(ref.usedModuleId.toMPS().moduleId) }
180+ else -> error(" No importer found." )
187181 }
188182 }
189183
190184 private fun resolveMPSJavaModuleFacetReference (ref : INodeReference ): MPSJavaModuleFacetAsNode ? {
191- val moduleRef = if (ref is MPSJavaModuleFacetReference ) {
192- ref.moduleReference
193- } else {
194- val serialized = ref.serialize()
195- val serializedModuleRef = serialized.substringAfter(" ${MPSJavaModuleFacetReference .PREFIX } :" )
196- MPSReferenceParser .parseSModuleReference(serializedModuleRef)
197- }
198-
199- val facet = moduleRef.resolve(repository)?.getFacetOfType(JavaModuleFacet .FACET_TYPE )
185+ val ref = MPSJavaModuleFacetReference .tryConvert(ref) ? : return null
186+ val facet = ref.moduleReference.toMPS().resolve(repository)?.getFacetOfType(JavaModuleFacet .FACET_TYPE )
200187 return facet?.let { MPSJavaModuleFacetAsNode (it as JavaModuleFacet ) }
201188 }
202189
203190 private fun resolveMPSModelImportReference (ref : INodeReference ): MPSModelImportAsNode ? {
204- val serialized = ref.serialize()
205- val importedModelRef = if (ref is MPSModelImportReference ) {
206- ref.importedModel
207- } else {
208- val serializedModelRef = serialized
209- .substringAfter(" ${MPSModelImportReference .PREFIX } :" )
210- .substringBefore(MPSModelImportReference .SEPARATOR )
211- MPSReferenceParser .parseSModelReference(serializedModelRef)
212- }
213-
214- val importingModelRef = if (ref is MPSModelImportReference ) {
215- ref.importingModel
216- } else {
217- val serializedModelRef = serialized.substringAfter(MPSModelImportReference .SEPARATOR )
218- MPSReferenceParser .parseSModelReference(serializedModelRef)
219- }
191+ val ref = MPSModelImportReference .tryConvert(ref) ? : return null
220192
221- val importingModel = importingModelRef .resolve(repository) ? : return null
222- if (! ModelImports (importingModel).importedModels.contains(importedModelRef )) return null
193+ val importingModel = ref.importingModel.toMPS() .resolve(repository) ? : return null
194+ if (! ModelImports (importingModel).importedModels.contains(ref.importedModel.toMPS() )) return null
223195
224- return MPSModelImportAsNode (importedModel = importedModelRef , importingModel = importingModel)
196+ return MPSModelImportAsNode (importedModel = ref.importedModel.toMPS() , importingModel = importingModel)
225197 }
226198
227199 private fun resolveMPSModuleDependencyReference (ref : INodeReference ): MPSModuleDependencyAsNode ? {
228- val serialized = ref.serialize()
229- val usedModuleId = if (ref is MPSModuleDependencyReference ) {
230- ref.usedModuleId
231- } else {
232- val serializedModuleId = serialized
233- .substringAfter(" ${MPSModuleDependencyReference .PREFIX } :" )
234- .substringBefore(MPSModuleDependencyReference .SEPARATOR )
235- PersistenceFacade .getInstance().createModuleId(serializedModuleId)
236- }
237-
238- val userModuleReference = if (ref is MPSModuleDependencyReference ) {
239- ref.userModuleReference
240- } else {
241- val serializedModuleRef = serialized.substringAfter(MPSModuleDependencyReference .SEPARATOR )
242- MPSReferenceParser .parseSModuleReference(serializedModuleRef)
243- }
244-
245- return userModuleReference.resolve(repository)
200+ val ref = MPSModuleDependencyReference .tryConvert(ref) ? : return null
201+ return ref.userModuleReference.toMPS().resolve(repository)
246202 ?.let { MPSModuleAsNode (it) }
247- ?.findModuleDependency(usedModuleId)
203+ ?.findModuleDependency(ref. usedModuleId.toMPS().moduleId )
248204 }
249205
250206 private fun resolveMPSModuleReferenceReference (ref : INodeReference ): MPSModuleReferenceAsNode ? {
@@ -281,28 +237,15 @@ data class MPSArea(val repository: SRepository) : IArea, IAreaReference {
281237 }
282238
283239 private fun resolveMPSSingleLanguageDependencyReference (ref : INodeReference ): MPSSingleLanguageDependencyAsNode ? {
284- if (ref is MPSSingleLanguageDependencyReference ) {
285- return when {
286- ref.userModule != null -> ref.userModule.resolve(repository)
287- ?.let { MPSModuleAsNode (it).findSingleLanguageDependency(ref.usedModuleId) }
288- ref.userModel != null -> ref.userModel.resolve(repository)
289- ?.let { MPSModelAsNode (it).findSingleLanguageDependency(ref.usedModuleId) }
290- else -> error(" No importer found." )
291- }
292- }
293- val serialized = ref.serialize()
294- val serializedModuleId = serialized.substringAfter(" ${MPSSingleLanguageDependencyReference .PREFIX } :" )
295- .substringBefore(MPSSingleLanguageDependencyReference .SEPARATOR )
296-
297- val importer = serialized.substringAfter(MPSSingleLanguageDependencyReference .SEPARATOR )
298- val foundImporter = resolveNode(NodeReference (importer))?.asWritableNode()
299-
300- val moduleId = PersistenceFacade .getInstance().createModuleId(serializedModuleId)
301-
302- return when (foundImporter) {
303- is MPSModelAsNode -> foundImporter.findSingleLanguageDependency(moduleId)
304- is MPSModuleAsNode <* > -> foundImporter.findSingleLanguageDependency(moduleId)
305- else -> null
240+ val ref = MPSSingleLanguageDependencyReference .tryConvert(ref) ? : return null
241+ val userModule = ref.userModule
242+ val userModel = ref.userModel
243+ return when {
244+ userModule != null -> userModule.toMPS().resolve(repository)
245+ ?.let { MPSModuleAsNode (it).findSingleLanguageDependency(ref.usedModuleId.toMPS().moduleId) }
246+ userModel != null -> userModel.toMPS().resolve(repository)
247+ ?.let { MPSModelAsNode (it).findSingleLanguageDependency(ref.usedModuleId.toMPS().moduleId) }
248+ else -> error(" No importer found." )
306249 }
307250 }
308251
0 commit comments