@@ -115,22 +115,33 @@ class MetaModelGenerator(val outputDir: Path, val nameConfig: NameConfig = NameC
115
115
}
116
116
117
117
private fun generateEnumFile (enum : ProcessedEnum ) {
118
- val builder = TypeSpec .enumBuilder(enum.name)
118
+ val constructorSpec = FunSpec .constructorBuilder()
119
+ .addParameter(" memberId" , String ::class )
120
+ .addParameter(" presentation" , String ::class .asTypeName().copy(nullable = true ))
121
+ .build()
119
122
120
- builder.primaryConstructor(
121
- FunSpec .constructorBuilder()
122
- .addParameter(" presentation" , String ::class .asTypeName().copy(nullable = true ))
123
- .build()
124
- )
123
+ val enumBuilder = TypeSpec .enumBuilder(enum.name)
124
+ .primaryConstructor(constructorSpec)
125
+ .addProperty(
126
+ PropertySpec .builder(" memberId" , String ::class )
127
+ .initializer(" memberId" )
128
+ .build()
129
+ )
130
+ .addProperty(
131
+ PropertySpec .builder(" presentation" , String ::class .asTypeName().copy(nullable = true ))
132
+ .initializer(" presentation" )
133
+ .build()
134
+ )
125
135
126
136
val getLiteralFunBuilder = FunSpec .builder(" getLiteralByMemberId" )
127
137
.addParameter(" memberId" , String ::class )
128
138
val getLiteralCodeBuilder = CodeBlock .builder().beginControlFlow(" return when (memberId) {" )
129
139
130
140
for (member in enum.getAllMembers()) {
131
- builder .addEnumConstant(
141
+ enumBuilder .addEnumConstant(
132
142
member.name,
133
143
TypeSpec .anonymousClassBuilder()
144
+ .addSuperclassConstructorParameter(" %S" , member.memberId)
134
145
.addSuperclassConstructorParameter(
135
146
if (member.presentation == null ) " null" else " %S" ,
136
147
member.presentation ? : " " )
@@ -156,7 +167,7 @@ class MetaModelGenerator(val outputDir: Path, val nameConfig: NameConfig = NameC
156
167
)
157
168
.build()
158
169
159
- val generatedEnum = builder .addType(companion ).build()
170
+ val generatedEnum = enumBuilder .addType(companion ).build()
160
171
161
172
FileSpec .builder(enum.language.name, enum.name)
162
173
.addFileComment(headerComment)
@@ -345,7 +356,9 @@ class MetaModelGenerator(val outputDir: Path, val nameConfig: NameConfig = NameC
345
356
if (feature.type is EnumPropertyType ) {
346
357
if (serializer == MandatoryEnumSerializer ::class .asTypeName()) {
347
358
propBuilder.initializer(
348
- """ newProperty(%S, %S, %T { if (it != null) %T.getLiteralByMemberId(it) else %T.defaultValue() }, ${feature.optional} )""" ,
359
+ """ newProperty(%S, %S, %T({ it.memberId },
360
+ |{ if (it != null) %T.getLiteralByMemberId(it) else %T.defaultValue() }),
361
+ |${feature.optional} )""" .trimMargin(),
349
362
feature.originalName,
350
363
feature.uid,
351
364
serializer,
@@ -354,7 +367,8 @@ class MetaModelGenerator(val outputDir: Path, val nameConfig: NameConfig = NameC
354
367
)
355
368
} else {
356
369
propBuilder.initializer(
357
- """ newProperty(%S, %S, %T { %T.getLiteralByMemberId(it) }, ${feature.optional} )""" ,
370
+ """ newProperty(%S, %S, %T( { it.memberId }, { %T.getLiteralByMemberId(it) }),
371
+ |${feature.optional} )""" .trimMargin(),
358
372
feature.originalName,
359
373
feature.uid,
360
374
serializer,
0 commit comments