in graphql-dgs-codegen-core/src/main/kotlin/com/netflix/graphql/dgs/codegen/generators/java/UnionTypeGenerator.kt [40:71]
fun generate(
definition: UnionTypeDefinition,
extensions: List<UnionTypeExtensionDefinition>,
): CodeGenResult {
if (definition.shouldSkip(config)) {
return CodeGenResult.EMPTY
}
val javaType =
TypeSpec
.interfaceBuilder(definition.name)
.addOptionalGeneratedAnnotation(config)
.addModifiers(Modifier.PUBLIC)
val memberTypes =
definition.memberTypes
.asSequence()
.plus(extensions.asSequence().flatMap { it.memberTypes })
.filterIsInstance<TypeName>()
.map { member ->
typeUtils.findJavaInterfaceName(member.name, packageName)
}.filterIsInstance<ClassName>()
.toList()
if (memberTypes.isNotEmpty()) {
javaType.addAnnotation(jsonTypeInfoAnnotation())
javaType.addAnnotation(jsonSubTypeAnnotation(memberTypes))
}
val javaFile = JavaFile.builder(packageName, javaType.build()).build()
return CodeGenResult(javaInterfaces = listOf(javaFile))
}