in graphql-dgs-codegen-core/src/main/kotlin/com/netflix/graphql/dgs/codegen/generators/java/EnumTypeGenerator.kt [42:87]
fun generate(
definition: EnumTypeDefinition,
extensions: List<EnumTypeDefinition>,
): CodeGenResult {
if (definition.shouldSkip(config)) {
return CodeGenResult.EMPTY
}
logger.info("Generating enum type {}", definition.name)
val javaType =
TypeSpec
.enumBuilder(definition.name)
.addModifiers(Modifier.PUBLIC)
.addOptionalGeneratedAnnotation(config)
if (definition.description != null) {
javaType.addJavadoc("\$L", definition.description.content)
}
val mergedEnumDefinitions = definition.enumValueDefinitions + extensions.flatMap { it.enumValueDefinitions }
mergedEnumDefinitions.forEach {
val typeSpec = TypeSpec.anonymousClassBuilder("")
if (it.description != null && it.description.content.isNotBlank()) {
typeSpec.addJavadoc("\$L", it.description.content)
}
if (it.directives.isNotEmpty()) {
val (annotations, comments) = applyDirectivesJava(it.directives, config)
if (!comments.isNullOrBlank()) {
typeSpec.addJavadoc("\$L", comments)
}
for (entry in annotations) {
when (SiteTarget.valueOf(entry.key)) {
SiteTarget.FIELD -> typeSpec.addAnnotations(annotations[SiteTarget.FIELD.name])
else -> typeSpec.addAnnotations(annotations[entry.key])
}
}
}
javaType.addEnumConstant(javaReservedKeywordSanitizer.sanitize(it.name), typeSpec.build())
}
val javaFile = JavaFile.builder(getPackageName(), javaType.build()).build()
return CodeGenResult(javaEnumTypes = listOf(javaFile))
}