Skip to content

Commit

Permalink
fix(model-api): deprecated IConcept.getConcept()
Browse files Browse the repository at this point in the history
It's an extension method that does an unnecessary resolution of the
concept. The implementation INode.concept decides if the resolution is
necessary or if the concept can be accessed in a more efficient way.
  • Loading branch information
slisson committed Mar 11, 2024
1 parent 8ed3a46 commit 5882ac4
Show file tree
Hide file tree
Showing 3 changed files with 3 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,12 @@ package org.modelix.metamodel

import org.modelix.model.api.IConcept
import org.modelix.model.api.INode
import org.modelix.model.api.getConcept

abstract class TypedNodeImpl(val wrappedNode: INode) : ITypedNode {

init {
val expected: IConcept = _concept._concept
val actual: IConcept? = unwrap().getConcept()
val actual: IConcept? = unwrap().concept
require(actual != null && actual.isSubConceptOf(expected)) {
"Concept of node ${unwrap()} expected to be a sub-concept of $expected, but was $actual"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import org.modelix.model.api.ILanguage
import org.modelix.model.api.INode
import org.modelix.model.api.IProperty
import org.modelix.model.api.IReferenceLink
import org.modelix.model.api.getConcept
import org.modelix.model.area.IArea
import kotlin.reflect.KClass

Expand Down Expand Up @@ -91,7 +90,7 @@ data class UnknownTypedConcept(private val ref: IConcept?) : IConceptOfTypedNode

data class UnknownConceptInstance(val node: INode) : ITypedNode {
override val _concept: ITypedConcept
get() = UnknownTypedConcept(node.getConcept())
get() = UnknownTypedConcept(node.concept)

override fun unwrap(): INode = node
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -307,6 +307,7 @@ fun INode.setReferenceTarget(link: IReferenceLink, target: INodeReference?): Uni
fun INode.getPropertyValue(property: IProperty): String? = if (this is INodeEx) getPropertyValue(property) else getPropertyValue(property.key(this))
fun INode.setPropertyValue(property: IProperty, value: String?): Unit = if (this is INodeEx) setPropertyValue(property, value) else setPropertyValue(property.key(this), value)

@Deprecated("use INode.concept", ReplaceWith("concept"))
fun INode.getConcept(): IConcept? = getConceptReference()?.resolve()
fun INode.getResolvedReferenceTarget(role: String): INode? = getReferenceTargetRef(role)?.resolveIn(getArea()!!)
fun INode.getResolvedConcept(): IConcept? = getConceptReference()?.resolve()
Expand Down

0 comments on commit 5882ac4

Please sign in to comment.