@@ -81,7 +81,13 @@ class MetaModelGenerator(val outputDir: Path) {
81
81
.addType(generateNodeWrapperInterface(concept))
82
82
.addType(generateNodeWrapperImpl(concept))
83
83
.addImport(PropertyAccessor ::class .asClassName().packageName, PropertyAccessor ::class .asClassName().simpleName)
84
- .addImport(ReferenceAccessor ::class .asClassName().packageName, ReferenceAccessor ::class .asClassName().simpleName)
84
+ .addImport(RawPropertyAccessor ::class .asClassName().packageName, RawPropertyAccessor ::class .asClassName().simpleName)
85
+ .addImport(IntPropertyAccessor ::class .asClassName().packageName, IntPropertyAccessor ::class .asClassName().simpleName)
86
+ .addImport(StringPropertyAccessor ::class .asClassName().packageName, StringPropertyAccessor ::class .asClassName().simpleName)
87
+ .addImport(BooleanPropertyAccessor ::class .asClassName().packageName, BooleanPropertyAccessor ::class .asClassName().simpleName)
88
+ .addImport(MandatoryReferenceAccessor ::class .asClassName().packageName, MandatoryReferenceAccessor ::class .asClassName().simpleName)
89
+ .addImport(OptionalReferenceAccessor ::class .asClassName().packageName, OptionalReferenceAccessor ::class .asClassName().simpleName)
90
+ .addImport(RawReferenceAccessor ::class .asClassName().packageName, RawReferenceAccessor ::class .asClassName().simpleName)
85
91
.build().write()
86
92
}
87
93
@@ -265,10 +271,16 @@ class MetaModelGenerator(val outputDir: Path) {
265
271
.build())
266
272
}
267
273
is ReferenceLinkData -> {
268
- addProperty(PropertySpec .builder(feature.validName, data.type.parseConceptRef(concept.language).nodeWrapperInterfaceType().copy(nullable = true ))
274
+ val accessorClass = if (data.optional) OptionalReferenceAccessor ::class else MandatoryReferenceAccessor ::class
275
+ addProperty(PropertySpec .builder(feature.validName, data.type.parseConceptRef(concept.language).nodeWrapperInterfaceType().copy(nullable = data.optional))
269
276
.addModifiers(KModifier .OVERRIDE )
270
277
.mutable(true )
271
- .delegate(""" ${ReferenceAccessor ::class .qualifiedName} (${ITypedNode ::unwrap.name} (), "${feature.originalName} ", ${data.type.nodeWrapperInterfaceName()} ::class)""" )
278
+ .delegate(""" ${accessorClass.qualifiedName} (${ITypedNode ::unwrap.name} (), "${feature.originalName} ", ${data.type.nodeWrapperInterfaceName()} ::class)""" )
279
+ .build())
280
+ addProperty(PropertySpec .builder(" _raw_" + feature.validName, INode ::class .asTypeName().copy(nullable = true ))
281
+ .addModifiers(KModifier .OVERRIDE )
282
+ .mutable(true )
283
+ .delegate(""" ${RawReferenceAccessor ::class .qualifiedName} (${ITypedNode ::unwrap.name} (), "${feature.originalName} ")""" )
272
284
.build())
273
285
}
274
286
}
@@ -302,7 +314,10 @@ class MetaModelGenerator(val outputDir: Path) {
302
314
.build())
303
315
}
304
316
is ReferenceLinkData -> {
305
- addProperty(PropertySpec .builder(feature.validName, data.type.parseConceptRef(concept.language).nodeWrapperInterfaceType().copy(nullable = true ))
317
+ addProperty(PropertySpec .builder(feature.validName, data.type.parseConceptRef(concept.language).nodeWrapperInterfaceType().copy(nullable = data.optional))
318
+ .mutable(true )
319
+ .build())
320
+ addProperty(PropertySpec .builder(" _raw_" + feature.validName, INode ::class .asTypeName().copy(nullable = true ))
306
321
.mutable(true )
307
322
.build())
308
323
}
0 commit comments