fun generate()

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))
    }