Skip to content

Commit 49e862c

Browse files
committed
use imports instead of qualified names everywhere
1 parent 080b015 commit 49e862c

File tree

1 file changed

+39
-25
lines changed

1 file changed

+39
-25
lines changed

metamodel-generator/src/main/kotlin/org/modelix/metamodel/generator/MetaModelGenerator.kt

Lines changed: 39 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -77,13 +77,13 @@ class MetaModelGenerator(val outputDir: Path) {
7777
.joinToString(", ") { it.simpleName }
7878
builder.addFunction(FunSpec.builder("getConcepts")
7979
.addModifiers(KModifier.OVERRIDE)
80-
.addStatement("return listOf($conceptNamesList)")
80+
.addCode(language.getConceptsInLanguage().map { it.conceptObjectType() }.toListLiteralCodeBlock())
8181
.build())
8282
builder.superclass(GeneratedLanguage::class)
8383
builder.addSuperclassConstructorParameter("\"${language.name}\"")
8484
for (concept in language.getConceptsInLanguage()) {
85-
builder.addProperty(PropertySpec.builder(concept.simpleName, ClassName(language.name, concept.concept.conceptObjectName()))
86-
.initializer(language.name + "." + concept.concept.conceptObjectName())
85+
builder.addProperty(PropertySpec.builder(concept.simpleName, concept.conceptObjectType())
86+
.initializer("%T", concept.conceptObjectType())
8787
.build())
8888
}
8989
return builder.build()
@@ -134,14 +134,6 @@ class MetaModelGenerator(val outputDir: Path) {
134134
}
135135
}
136136
}
137-
.addImport(PropertyAccessor::class.asClassName().packageName, PropertyAccessor::class.asClassName().simpleName)
138-
.addImport(RawPropertyAccessor::class.asClassName().packageName, RawPropertyAccessor::class.asClassName().simpleName)
139-
.addImport(IntPropertyAccessor::class.asClassName().packageName, IntPropertyAccessor::class.asClassName().simpleName)
140-
.addImport(StringPropertyAccessor::class.asClassName().packageName, StringPropertyAccessor::class.asClassName().simpleName)
141-
.addImport(BooleanPropertyAccessor::class.asClassName().packageName, BooleanPropertyAccessor::class.asClassName().simpleName)
142-
.addImport(MandatoryReferenceAccessor::class.asClassName().packageName, MandatoryReferenceAccessor::class.asClassName().simpleName)
143-
.addImport(OptionalReferenceAccessor::class.asClassName().packageName, OptionalReferenceAccessor::class.asClassName().simpleName)
144-
.addImport(RawReferenceAccessor::class.asClassName().packageName, RawReferenceAccessor::class.asClassName().simpleName)
145137
.build().write()
146138
}
147139

@@ -158,15 +150,15 @@ class MetaModelGenerator(val outputDir: Path) {
158150
.initializer(concept.nodeWrapperImplName() + "::class")
159151
.build())
160152
addProperty(PropertySpec.builder(GeneratedConcept<*, *>::_typed.name, concept.conceptWrapperImplType(), KModifier.OVERRIDE)
161-
.getter(FunSpec.getterBuilder().addStatement("""return ${concept.conceptWrapperInterfaceType().simpleName}""").build())
153+
.getter(FunSpec.getterBuilder().addStatement("""return %T""", concept.conceptWrapperInterfaceType()).build())
162154
.build())
163155
addProperty(PropertySpec.builder(IConcept::language.name, ILanguage::class, KModifier.OVERRIDE)
164156
.initializer(concept.language.generatedClassName().simpleName)
165157
.build())
166158
addFunction(FunSpec.builder(GeneratedConcept<*, *>::wrap.name)
167159
.addModifiers(KModifier.OVERRIDE)
168160
.addParameter("node", INode::class)
169-
.addStatement("return ${concept.nodeWrapperImplName()}(node)")
161+
.addStatement("return %T(node)", concept.nodeWrapperImplType())
170162
.build())
171163
concept.concept.uid?.let { uid ->
172164
addFunction(FunSpec.builder(GeneratedConcept<*, *>::getUID.name)
@@ -176,7 +168,7 @@ class MetaModelGenerator(val outputDir: Path) {
176168
}
177169
addFunction(FunSpec.builder(GeneratedConcept<*, *>::getDirectSuperConcepts.name)
178170
.addModifiers(KModifier.OVERRIDE)
179-
.addStatement("return listOf(${concept.concept.extends.joinToString(", ") { it.conceptObjectName() } })")
171+
.addCode(concept.directSuperConcepts().map { it.conceptObjectType() }.toListLiteralCodeBlock())
180172
.returns(List::class.asTypeName().parameterizedBy(IConcept::class.asTypeName()))
181173
.build())
182174
for (feature in concept.directFeatures()) {
@@ -196,14 +188,15 @@ class MetaModelGenerator(val outputDir: Path) {
196188
}
197189
}).asTypeName()
198190
addProperty(PropertySpec.builder(feature.validName, GeneratedProperty::class.asClassName().parameterizedBy(data.asKotlinType()))
199-
.initializer("""newProperty("${feature.originalName}", %T, ${data.optional})""", serializer)
191+
.initializer("""newProperty(%S, %T, ${data.optional})""", feature.originalName, serializer)
200192
.build())
201193
}
202194
is ChildLinkData -> {
203195
val methodName = if (data.multiple) "newChildListLink" else "newSingleChildLink"
204196
addProperty(PropertySpec.builder(feature.validName, feature.generatedChildLinkType())
205197
.initializer(
206-
"""$methodName("${feature.originalName}", ${data.optional}, %T, %T::class)""",
198+
"""$methodName(%S, ${data.optional}, %T, %T::class)""",
199+
feature.originalName,
207200
data.type.conceptObjectName().parseClassName(),
208201
data.type.nodeWrapperInterfaceName().parseClassName()
209202
)
@@ -212,7 +205,8 @@ class MetaModelGenerator(val outputDir: Path) {
212205
is ReferenceLinkData -> {
213206
addProperty(PropertySpec.builder(feature.validName, feature.generatedReferenceLinkType())
214207
.initializer(
215-
"""newReferenceLink("${feature.originalName}", ${data.optional}, %T, %T::class)""",
208+
"""newReferenceLink(%S, ${data.optional}, %T, %T::class)""",
209+
feature.originalName,
216210
data.type.conceptObjectName().parseClassName(),
217211
data.type.nodeWrapperInterfaceName().parseClassName()
218212
)
@@ -244,7 +238,7 @@ class MetaModelGenerator(val outputDir: Path) {
244238
addFunction(FunSpec.builder(IConceptOfTypedNode<*>::getInstanceInterface.name)
245239
.addModifiers(KModifier.OVERRIDE)
246240
.returns(KClass::class.asTypeName().parameterizedBy(concept.nodeWrapperInterfaceType()))
247-
.addStatement("return ${concept.nodeWrapperInterfaceType().simpleName}::class")
241+
.addStatement("return %T::class", concept.nodeWrapperInterfaceType())
248242
.build())
249243
}.build())
250244
}.build()
@@ -257,7 +251,7 @@ class MetaModelGenerator(val outputDir: Path) {
257251
} else {
258252
superclass(concept.extends().first().conceptWrapperImplType())
259253
for (extended in concept.extends().drop(1)) {
260-
addSuperinterface(extended.conceptWrapperInterfaceType(), CodeBlock.of(extended.conceptWrapperInterfaceType().canonicalName))
254+
addSuperinterface(extended.conceptWrapperInterfaceType(), CodeBlock.of("%T", extended.conceptWrapperInterfaceType()))
261255
}
262256
}
263257
addSuperinterface(concept.conceptWrapperInterfaceType())
@@ -299,7 +293,7 @@ class MetaModelGenerator(val outputDir: Path) {
299293
return TypeSpec.classBuilder(concept.nodeWrapperImplType()).apply {
300294
addModifiers(KModifier.OPEN)
301295
addProperty(PropertySpec.builder(TypedNodeImpl::_concept.name, concept.conceptWrapperImplType(), KModifier.OVERRIDE)
302-
.getter(FunSpec.getterBuilder().addStatement("""return ${concept.conceptWrapperInterfaceType().simpleName}""").build())
296+
.getter(FunSpec.getterBuilder().addStatement("""return %T""", concept.conceptWrapperInterfaceType()).build())
303297
.build())
304298

305299
if (concept.extends().size > 1) {
@@ -318,7 +312,7 @@ class MetaModelGenerator(val outputDir: Path) {
318312
superclass(concept.extends().first().nodeWrapperImplType())
319313
addSuperclassConstructorParameter("_node")
320314
for (extended in concept.extends().drop(1)) {
321-
addSuperinterface(extended.nodeWrapperInterfaceType(), CodeBlock.of(extended.nodeWrapperImplType().canonicalName + "(_node)"))
315+
addSuperinterface(extended.nodeWrapperInterfaceType(), CodeBlock.of("%T(_node)", extended.nodeWrapperImplType()))
322316
}
323317
}
324318
addSuperinterface(concept.nodeWrapperInterfaceType())
@@ -352,13 +346,16 @@ class MetaModelGenerator(val outputDir: Path) {
352346
val type = accessorSubclass.asClassName()
353347
.parameterizedBy(
354348
data.type.parseConceptRef(concept.language).nodeWrapperInterfaceType())
355-
val accessorName = accessorSubclass.qualifiedName
356349
addProperty(PropertySpec.builder(feature.validName, type)
357350
.addModifiers(KModifier.OVERRIDE)
358351
.initializer(
359-
"""$accessorName(${ITypedNode::unwrap.name}(), %T.%N, ${data.type.conceptObjectName()}, ${data.type.nodeWrapperInterfaceName()}::class)""",
352+
"""%T(%N(), %T.%N, %T, %T::class)""",
353+
accessorSubclass.asTypeName(),
354+
ITypedNode::unwrap.name,
360355
feature.concept.conceptObjectType(),
361356
feature.validName,
357+
data.type.conceptObjectName().parseClassName(),
358+
data.type.nodeWrapperInterfaceName().parseClassName()
362359
)
363360
.build())
364361
}
@@ -368,16 +365,20 @@ class MetaModelGenerator(val outputDir: Path) {
368365
.addModifiers(KModifier.OVERRIDE)
369366
.mutable(true)
370367
.delegate(
371-
"""${accessorClass.qualifiedName}(${ITypedNode::unwrap.name}(), %T.%N, ${data.type.nodeWrapperInterfaceName()}::class)""",
368+
"""%T(%N(), %T.%N, %T::class)""",
369+
accessorClass.asTypeName(),
370+
ITypedNode::unwrap.name,
372371
feature.concept.conceptObjectType(),
373372
feature.validName,
373+
data.type.nodeWrapperInterfaceName().parseClassName()
374374
)
375375
.build())
376376
addProperty(PropertySpec.builder("raw_" + feature.validName, INode::class.asTypeName().copy(nullable = true))
377377
.addModifiers(KModifier.OVERRIDE)
378378
.mutable(true)
379379
.delegate(
380-
"""${RawReferenceAccessor::class.qualifiedName}(${ITypedNode::unwrap.name}(), %T.%N)""",
380+
"""%T(${ITypedNode::unwrap.name}(), %T.%N)""",
381+
RawReferenceAccessor::class.asClassName(),
381382
feature.concept.conceptObjectType(),
382383
feature.validName,
383384
)
@@ -481,4 +482,17 @@ fun FeatureInConcept.generatedReferenceLinkType(): TypeName {
481482
val targetConcept = (data as ReferenceLinkData).type.parseConceptRef(concept.language)
482483
return GeneratedReferenceLink::class.asClassName().parameterizedBy(
483484
targetConcept.nodeWrapperInterfaceType(), targetConcept.conceptWrapperInterfaceType())
485+
}
486+
487+
private fun List<TypeName>.toListLiteralCodeBlock(): CodeBlock {
488+
val list = this
489+
return CodeBlock.builder().apply {
490+
add("return listOf(\n")
491+
withIndent {
492+
for (element in list) {
493+
add("%T,\n", element)
494+
}
495+
}
496+
add(")")
497+
}.build()
484498
}

0 commit comments

Comments
 (0)