Skip to content

Commit 0deb5a4

Browse files
feat(#389): allow templating for generated Java / Kotlin class names
Adds an optional `nameTemplate` input parameter to the plugin, allowing customization of the generated Java / Kotlin class names. The following template variables are supported: - name - the original name of the class - schemaType - the GraphQL schema type (Type, Input, Interface, Enum) The default value for this new property is null. In this case the output will be identical to the current one. Examples: Given an original class name `Person` and schema type `Type`: - null -> Person - "{name}GraphQL{schemaType}" -> PersonGraphQLType - "{name}GraphQL" -> PersonGraphQL - "{name}{schemaType}" -> PersonType
1 parent 78f6c92 commit 0deb5a4

28 files changed

+591
-58
lines changed

graphql-dgs-codegen-core/src/main/kotlin/com/netflix/graphql/dgs/codegen/CodeGen.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -523,7 +523,8 @@ class CodeGenConfig(
523523
var implementSerializable: Boolean = false,
524524
var addGeneratedAnnotation: Boolean = false,
525525
var disableDatesInGeneratedAnnotation: Boolean = false,
526-
var addDeprecatedAnnotation: Boolean = false
526+
var addDeprecatedAnnotation: Boolean = false,
527+
var nameTemplate: String? = null
527528
) {
528529
val packageNameClient: String = "$packageName.$subPackageNameClient"
529530

graphql-dgs-codegen-core/src/main/kotlin/com/netflix/graphql/dgs/codegen/generators/java/DataTypeGenerator.kt

+7-3
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,13 @@
1818

1919
package com.netflix.graphql.dgs.codegen.generators.java
2020

21-
import com.netflix.graphql.dgs.codegen.*
21+
import com.netflix.graphql.dgs.codegen.CodeGenConfig
22+
import com.netflix.graphql.dgs.codegen.CodeGenResult
23+
import com.netflix.graphql.dgs.codegen.filterSkipped
24+
import com.netflix.graphql.dgs.codegen.generators.shared.CodeGeneratorUtils.templatedClassName
2225
import com.netflix.graphql.dgs.codegen.generators.shared.SiteTarget
2326
import com.netflix.graphql.dgs.codegen.generators.shared.applyDirectivesJava
27+
import com.netflix.graphql.dgs.codegen.shouldSkip
2428
import com.squareup.javapoet.ClassName
2529
import com.squareup.javapoet.CodeBlock
2630
import com.squareup.javapoet.FieldSpec
@@ -71,7 +75,7 @@ class DataTypeGenerator(config: CodeGenConfig, document: Document) : BaseDataTyp
7175

7276
logger.info("Generating data type {}", definition.name)
7377

74-
val name = definition.name
78+
val name = definition.templatedClassName(config.nameTemplate)
7579
val unionTypes = document.getDefinitionsOfType(UnionTypeDefinition::class.java).asSequence().filter { union ->
7680
union.memberTypes.asSequence().map { it as TypeName }.any { it.name == name }
7781
}.map { it.name }.toList()
@@ -168,7 +172,7 @@ class InputTypeGenerator(config: CodeGenConfig, document: Document) : BaseDataTy
168172

169173
logger.info("Generating input type {}", definition.name)
170174

171-
val name = definition.name
175+
val name = definition.templatedClassName(config.nameTemplate)
172176
val fieldDefinitions = definition.inputValueDefinitions.asSequence().map {
173177
val type = typeUtils.findReturnType(it.type)
174178
val defaultValue = it.defaultValue?.let { defVal ->

graphql-dgs-codegen-core/src/main/kotlin/com/netflix/graphql/dgs/codegen/generators/java/EnumTypeGenerator.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ package com.netflix.graphql.dgs.codegen.generators.java
2020

2121
import com.netflix.graphql.dgs.codegen.CodeGenConfig
2222
import com.netflix.graphql.dgs.codegen.CodeGenResult
23+
import com.netflix.graphql.dgs.codegen.generators.shared.CodeGeneratorUtils.templatedClassName
2324
import com.netflix.graphql.dgs.codegen.generators.shared.SiteTarget
2425
import com.netflix.graphql.dgs.codegen.generators.shared.applyDirectivesJava
2526
import com.netflix.graphql.dgs.codegen.shouldSkip
@@ -44,7 +45,7 @@ class EnumTypeGenerator(private val config: CodeGenConfig) {
4445

4546
val javaType =
4647
TypeSpec
47-
.enumBuilder(definition.name)
48+
.enumBuilder(definition.templatedClassName(config.nameTemplate))
4849
.addModifiers(Modifier.PUBLIC)
4950
.addOptionalGeneratedAnnotation(config)
5051

graphql-dgs-codegen-core/src/main/kotlin/com/netflix/graphql/dgs/codegen/generators/java/InterfaceGenerator.kt

+13-6
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,18 @@ import com.netflix.graphql.dgs.codegen.CodeGenConfig
2222
import com.netflix.graphql.dgs.codegen.CodeGenResult
2323
import com.netflix.graphql.dgs.codegen.filterSkipped
2424
import com.netflix.graphql.dgs.codegen.generators.shared.CodeGeneratorUtils.capitalized
25+
import com.netflix.graphql.dgs.codegen.generators.shared.CodeGeneratorUtils.templatedClassName
2526
import com.netflix.graphql.dgs.codegen.shouldSkip
2627
import com.squareup.javapoet.ClassName
2728
import com.squareup.javapoet.JavaFile
2829
import com.squareup.javapoet.MethodSpec
2930
import com.squareup.javapoet.TypeSpec
30-
import graphql.language.*
31+
import graphql.language.Document
32+
import graphql.language.FieldDefinition
33+
import graphql.language.InterfaceTypeDefinition
34+
import graphql.language.InterfaceTypeExtensionDefinition
35+
import graphql.language.ObjectTypeDefinition
36+
import graphql.language.TypeName
3137
import org.slf4j.Logger
3238
import org.slf4j.LoggerFactory
3339
import javax.lang.model.element.Modifier
@@ -51,7 +57,7 @@ class InterfaceGenerator(private val config: CodeGenConfig, private val document
5157
}
5258

5359
logger.info("Generating type {}", definition.name)
54-
val javaType = TypeSpec.interfaceBuilder(definition.name)
60+
val javaType = TypeSpec.interfaceBuilder(definition.templatedClassName(config.nameTemplate))
5561
.addOptionalGeneratedAnnotation(config)
5662
.addModifiers(Modifier.PUBLIC)
5763

@@ -91,11 +97,12 @@ class InterfaceGenerator(private val config: CodeGenConfig, private val document
9197

9298
val implementations = document.getDefinitionsOfType(ObjectTypeDefinition::class.java).asSequence()
9399
.filter { node -> node.implements.any { it.isEqualTo(TypeName(definition.name)) } }
94-
.map { node ->
95-
typeUtils.findJavaInterfaceName(node.name, packageName)
100+
.associate {
101+
it.name to typeUtils
102+
.findJavaInterfaceName(it.templatedClassName(config.nameTemplate), packageName) as? ClassName
96103
}
97-
.filterIsInstance<ClassName>()
98-
.toList()
104+
.mapNotNull { (name, className) -> className?.let { name to it } }
105+
.toMap()
99106

100107
// Add JsonSubType annotations only if there are no generated concrete types that implement the interface
101108
if (implementations.isNotEmpty() && config.generateDataTypes) {

graphql-dgs-codegen-core/src/main/kotlin/com/netflix/graphql/dgs/codegen/generators/java/JavaPoetUtils.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -95,16 +95,16 @@ fun disableJsonTypeInfoAnnotation(): AnnotationSpec {
9595
* })
9696
* ```
9797
*/
98-
fun jsonSubTypeAnnotation(subTypes: Collection<ClassName>): AnnotationSpec {
98+
fun jsonSubTypeAnnotation(subTypes: Map<String, ClassName>): AnnotationSpec {
9999
val annotationSpec = AnnotationSpec.builder(JsonSubTypes::class.java)
100100

101101
for (type in subTypes) {
102102
annotationSpec.addMember(
103103
"value",
104104
"\$L",
105105
AnnotationSpec.builder(JsonSubTypes.Type::class.java)
106-
.addMember("value", "\$T.class", type)
107-
.addMember("name", "\$S", type.simpleName())
106+
.addMember("value", "\$T.class", type.value)
107+
.addMember("name", "\$S", type.key)
108108
.build()
109109
)
110110
}

graphql-dgs-codegen-core/src/main/kotlin/com/netflix/graphql/dgs/codegen/generators/java/UnionTypeGenerator.kt

+6-4
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ package com.netflix.graphql.dgs.codegen.generators.java
2020

2121
import com.netflix.graphql.dgs.codegen.CodeGenConfig
2222
import com.netflix.graphql.dgs.codegen.CodeGenResult
23+
import com.netflix.graphql.dgs.codegen.generators.shared.CodeGeneratorUtils.templatedClassName
2324
import com.netflix.graphql.dgs.codegen.shouldSkip
2425
import com.squareup.javapoet.ClassName
2526
import com.squareup.javapoet.JavaFile
@@ -46,11 +47,12 @@ class UnionTypeGenerator(private val config: CodeGenConfig, private val document
4647

4748
val memberTypes = definition.memberTypes.asSequence().plus(extensions.asSequence().flatMap { it.memberTypes })
4849
.filterIsInstance<TypeName>()
49-
.map { member ->
50-
typeUtils.findJavaInterfaceName(member.name, packageName)
50+
.associate {
51+
it.name to typeUtils
52+
.findJavaInterfaceName(it.templatedClassName(config.nameTemplate), packageName) as? ClassName
5153
}
52-
.filterIsInstance<ClassName>()
53-
.toList()
54+
.mapNotNull { (name, className) -> className?.let { name to it } }
55+
.toMap()
5456

5557
if (memberTypes.isNotEmpty()) {
5658
javaType.addAnnotation(jsonTypeInfoAnnotation())

graphql-dgs-codegen-core/src/main/kotlin/com/netflix/graphql/dgs/codegen/generators/kotlin/KotlinDataTypeGenerator.kt

+3-2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import com.netflix.graphql.dgs.codegen.CodeGenConfig
2222
import com.netflix.graphql.dgs.codegen.CodeGenResult
2323
import com.netflix.graphql.dgs.codegen.filterSkipped
2424
import com.netflix.graphql.dgs.codegen.generators.java.InputTypeGenerator
25+
import com.netflix.graphql.dgs.codegen.generators.shared.CodeGeneratorUtils.templatedClassName
2526
import com.netflix.graphql.dgs.codegen.generators.shared.applyDirectivesKotlin
2627
import com.netflix.graphql.dgs.codegen.generators.shared.generateKotlinCode
2728
import com.netflix.graphql.dgs.codegen.shouldSkip
@@ -84,7 +85,7 @@ class KotlinDataTypeGenerator(config: CodeGenConfig, document: Document) :
8485
)
8586
}
8687
val interfaces = definition.implements + extensions.flatMap { it.implements }
87-
return generate(definition.name, fields, interfaces, document, definition.description, definition.directives)
88+
return generate(definition.templatedClassName(config.nameTemplate), fields, interfaces, document, definition.description, definition.directives)
8889
}
8990
}
9091

@@ -139,7 +140,7 @@ class KotlinInputTypeGenerator(config: CodeGenConfig, document: Document) :
139140
}
140141
)
141142
val interfaces = emptyList<Type<*>>()
142-
return generate(definition.name, fields, interfaces, document, definition.description, definition.directives)
143+
return generate(definition.templatedClassName(config.nameTemplate), fields, interfaces, document, definition.description, definition.directives)
143144
}
144145
}
145146

graphql-dgs-codegen-core/src/main/kotlin/com/netflix/graphql/dgs/codegen/generators/kotlin/KotlinEnumTypeGenerator.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import com.netflix.graphql.dgs.codegen.CodeGenConfig
2222
import com.netflix.graphql.dgs.codegen.CodeGenResult
2323
import com.netflix.graphql.dgs.codegen.generators.java.EnumTypeGenerator
2424
import com.netflix.graphql.dgs.codegen.generators.java.ReservedKeywordSanitizer
25+
import com.netflix.graphql.dgs.codegen.generators.shared.CodeGeneratorUtils.templatedClassName
2526
import com.netflix.graphql.dgs.codegen.generators.shared.applyDirectivesKotlin
2627
import com.netflix.graphql.dgs.codegen.shouldSkip
2728
import com.squareup.kotlinpoet.FileSpec
@@ -41,7 +42,7 @@ class KotlinEnumTypeGenerator(private val config: CodeGenConfig) {
4142

4243
logger.info("Generating enum type ${definition.name}")
4344

44-
val kotlinType = TypeSpec.classBuilder(definition.name)
45+
val kotlinType = TypeSpec.classBuilder(definition.templatedClassName(config.nameTemplate))
4546
.addOptionalGeneratedAnnotation(config)
4647
.addModifiers(KModifier.ENUM)
4748

graphql-dgs-codegen-core/src/main/kotlin/com/netflix/graphql/dgs/codegen/generators/kotlin/KotlinInterfaceTypeGenerator.kt

+11-6
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ package com.netflix.graphql.dgs.codegen.generators.kotlin
2020

2121
import com.netflix.graphql.dgs.codegen.CodeGenConfig
2222
import com.netflix.graphql.dgs.codegen.CodeGenResult
23+
import com.netflix.graphql.dgs.codegen.generators.shared.CodeGeneratorUtils.templatedClassName
2324
import com.netflix.graphql.dgs.codegen.shouldSkip
2425
import com.squareup.kotlinpoet.*
2526
import graphql.language.*
@@ -46,7 +47,7 @@ class KotlinInterfaceTypeGenerator(private val config: CodeGenConfig, private va
4647

4748
logger.info("Generating type {}", definition.name)
4849

49-
val interfaceBuilder = TypeSpec.interfaceBuilder(definition.name)
50+
val interfaceBuilder = TypeSpec.interfaceBuilder(definition.templatedClassName(config.nameTemplate))
5051
.addOptionalGeneratedAnnotation(config)
5152
if (definition.description != null) {
5253
interfaceBuilder.addKdoc("%L", definition.description.sanitizeKdoc())
@@ -85,11 +86,15 @@ class KotlinInterfaceTypeGenerator(private val config: CodeGenConfig, private va
8586
interfaceBuilder.addProperty(propertySpec.build())
8687
}
8788

88-
val implementations = document.getDefinitionsOfType(ObjectTypeDefinition::class.java).asSequence()
89-
.filter { node -> node.implements.any { it.isEqualTo(TypeName(definition.name)) } }
90-
.map { node -> typeUtils.findKtInterfaceName(node.name, packageName) }
91-
.filterIsInstance<ClassName>()
92-
.toList()
89+
val implementations: Map<String, ClassName> =
90+
document.getDefinitionsOfType(ObjectTypeDefinition::class.java).asSequence()
91+
.filter { node -> node.implements.any { it.isEqualTo(TypeName(definition.name)) } }
92+
.associate {
93+
it.name to typeUtils
94+
.findKtInterfaceName(it.templatedClassName(config.nameTemplate), packageName) as? ClassName
95+
}
96+
.mapNotNull { (name, className) -> className?.let { name to it } }
97+
.toMap()
9398

9499
if (implementations.isNotEmpty()) {
95100
interfaceBuilder.addAnnotation(jsonTypeInfoAnnotation())

graphql-dgs-codegen-core/src/main/kotlin/com/netflix/graphql/dgs/codegen/generators/kotlin/KotlinPoetUtils.kt

+4-4
Original file line numberDiff line numberDiff line change
@@ -97,15 +97,15 @@ fun disableJsonTypeInfoAnnotation(): AnnotationSpec {
9797
* ])
9898
* ```
9999
*/
100-
fun jsonSubTypesAnnotation(subTypes: Collection<ClassName>): AnnotationSpec {
101-
val subTypeAnnotations = subTypes.map { type ->
100+
fun jsonSubTypesAnnotation(subTypes: Map<String, ClassName>): AnnotationSpec {
101+
val subTypeAnnotations = subTypes.map { (name, type) ->
102102
AnnotationSpec.builder(JsonSubTypes.Type::class)
103103
.addMember("value = %T::class", type)
104-
.addMember("name = %S", type.simpleName)
104+
.addMember("name = %S", name)
105105
.build()
106106
}
107107

108-
val formatString = subTypes.joinToString(
108+
val formatString = subTypes.entries.joinToString(
109109
separator = ",\n",
110110
prefix = "value = [\n",
111111
postfix = "\n]"

graphql-dgs-codegen-core/src/main/kotlin/com/netflix/graphql/dgs/codegen/generators/kotlin/KotlinUnionTypeGenerator.kt

+7-3
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ package com.netflix.graphql.dgs.codegen.generators.kotlin
2020

2121
import com.netflix.graphql.dgs.codegen.CodeGenConfig
2222
import com.netflix.graphql.dgs.codegen.CodeGenResult
23+
import com.netflix.graphql.dgs.codegen.generators.shared.CodeGeneratorUtils.templatedClassName
2324
import com.netflix.graphql.dgs.codegen.shouldSkip
2425
import com.squareup.kotlinpoet.ClassName
2526
import com.squareup.kotlinpoet.FileSpec
@@ -44,9 +45,12 @@ class KotlinUnionTypeGenerator(private val config: CodeGenConfig, document: Docu
4445

4546
val memberTypes = definition.memberTypes.plus(extensions.flatMap { it.memberTypes }).asSequence()
4647
.filterIsInstance<TypeName>()
47-
.map { member -> typeUtils.findKtInterfaceName(member.name, packageName) }
48-
.filterIsInstance<ClassName>()
49-
.toList()
48+
.associate {
49+
it.name to typeUtils
50+
.findKtInterfaceName(it.templatedClassName(config.nameTemplate), packageName) as? ClassName
51+
}
52+
.mapNotNull { (name, className) -> className?.let { name to it } }
53+
.toMap()
5054

5155
if (memberTypes.isNotEmpty()) {
5256
interfaceBuilder.addAnnotation(jsonTypeInfoAnnotation())

graphql-dgs-codegen-core/src/main/kotlin/com/netflix/graphql/dgs/codegen/generators/kotlin2/GenerateKotlin2DataTypes.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import com.netflix.graphql.dgs.codegen.generators.kotlin.sanitizeKdoc
3333
import com.netflix.graphql.dgs.codegen.generators.kotlin.suppressInapplicableJvmNameAnnotation
3434
import com.netflix.graphql.dgs.codegen.generators.kotlin.toKtTypeName
3535
import com.netflix.graphql.dgs.codegen.generators.shared.CodeGeneratorUtils.capitalized
36+
import com.netflix.graphql.dgs.codegen.generators.shared.CodeGeneratorUtils.templatedClassName
3637
import com.netflix.graphql.dgs.codegen.generators.shared.SchemaExtensionsUtils.findTypeExtensions
3738
import com.netflix.graphql.dgs.codegen.generators.shared.excludeSchemaTypeExtension
3839
import com.netflix.graphql.dgs.codegen.shouldSkip
@@ -165,7 +166,7 @@ fun generateKotlin2DataTypes(
165166
.build()
166167

167168
// create the data class
168-
val typeSpec = TypeSpec.classBuilder(typeDefinition.name)
169+
val typeSpec = TypeSpec.classBuilder(typeDefinition.templatedClassName(config.nameTemplate))
169170
.addOptionalGeneratedAnnotation(config)
170171
// add docs if available
171172
.apply {

graphql-dgs-codegen-core/src/main/kotlin/com/netflix/graphql/dgs/codegen/generators/kotlin2/GenerateKotlin2EnumTypes.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import com.netflix.graphql.dgs.codegen.CodeGenConfig
2222
import com.netflix.graphql.dgs.codegen.generators.kotlin.addEnumConstants
2323
import com.netflix.graphql.dgs.codegen.generators.kotlin.addOptionalGeneratedAnnotation
2424
import com.netflix.graphql.dgs.codegen.generators.kotlin.sanitizeKdoc
25+
import com.netflix.graphql.dgs.codegen.generators.shared.CodeGeneratorUtils.templatedClassName
2526
import com.netflix.graphql.dgs.codegen.generators.shared.SchemaExtensionsUtils.findEnumExtensions
2627
import com.netflix.graphql.dgs.codegen.generators.shared.applyDirectivesKotlin
2728
import com.netflix.graphql.dgs.codegen.generators.shared.excludeSchemaTypeExtension
@@ -59,7 +60,7 @@ fun generateKotlin2EnumTypes(
5960
.build()
6061

6162
// create the enum class
62-
val enumSpec = TypeSpec.classBuilder(enumDefinition.name)
63+
val enumSpec = TypeSpec.classBuilder(enumDefinition.templatedClassName(config.nameTemplate))
6364
.addOptionalGeneratedAnnotation(config)
6465
.addModifiers(KModifier.ENUM)
6566
// add docs if available

graphql-dgs-codegen-core/src/main/kotlin/com/netflix/graphql/dgs/codegen/generators/kotlin2/GenerateKotlin2InputTypes.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import com.netflix.graphql.dgs.codegen.generators.kotlin.KotlinTypeUtils
2626
import com.netflix.graphql.dgs.codegen.generators.kotlin.ReservedKeywordFilter
2727
import com.netflix.graphql.dgs.codegen.generators.kotlin.addOptionalGeneratedAnnotation
2828
import com.netflix.graphql.dgs.codegen.generators.kotlin.sanitizeKdoc
29+
import com.netflix.graphql.dgs.codegen.generators.shared.CodeGeneratorUtils.templatedClassName
2930
import com.netflix.graphql.dgs.codegen.generators.shared.SchemaExtensionsUtils.findInputExtensions
3031
import com.netflix.graphql.dgs.codegen.generators.shared.excludeSchemaTypeExtension
3132
import com.netflix.graphql.dgs.codegen.generators.shared.generateKotlinCode
@@ -71,7 +72,7 @@ fun generateKotlin2InputTypes(
7172
val typeName = ClassName(config.packageNameTypes, inputDefinition.name)
7273

7374
// create the input class
74-
val typeSpec = TypeSpec.classBuilder(typeName)
75+
val typeSpec = TypeSpec.classBuilder(inputDefinition.templatedClassName(config.nameTemplate))
7576
.addOptionalGeneratedAnnotation(config)
7677
// add docs if available
7778
.apply {

graphql-dgs-codegen-core/src/main/kotlin/com/netflix/graphql/dgs/codegen/generators/kotlin2/GenerateKotlin2Interfaces.kt

+4-3
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import com.netflix.graphql.dgs.codegen.generators.kotlin.jsonTypeInfoAnnotation
2626
import com.netflix.graphql.dgs.codegen.generators.kotlin.jvmNameAnnotation
2727
import com.netflix.graphql.dgs.codegen.generators.kotlin.sanitizeKdoc
2828
import com.netflix.graphql.dgs.codegen.generators.kotlin.suppressInapplicableJvmNameAnnotation
29+
import com.netflix.graphql.dgs.codegen.generators.shared.CodeGeneratorUtils.templatedClassName
2930
import com.netflix.graphql.dgs.codegen.generators.shared.SchemaExtensionsUtils.findInterfaceExtensions
3031
import com.netflix.graphql.dgs.codegen.generators.shared.SchemaExtensionsUtils.findUnionExtensions
3132
import com.netflix.graphql.dgs.codegen.generators.shared.excludeSchemaTypeExtension
@@ -64,7 +65,7 @@ fun generateKotlin2Interfaces(
6465
val implementations = document
6566
.getDefinitionsOfType(ObjectTypeDefinition::class.java)
6667
.filter { node -> node.implements.any { it.isEqualTo(TypeName(interfaceDefinition.name)) } }
67-
.map { node -> ClassName(config.packageNameTypes, node.name) }
68+
.associate { it.name to ClassName(config.packageNameTypes, it.templatedClassName(config.nameTemplate)) }
6869

6970
// get all interfaces that this interface implements
7071
val implementedInterfaces = typeLookup.implementedInterfaces(interfaceDefinition)
@@ -82,7 +83,7 @@ fun generateKotlin2Interfaces(
8283
val overrideFields = typeLookup.overrideFields(implementedInterfaces)
8384

8485
// create the interface
85-
val interfaceSpec = TypeSpec.interfaceBuilder(interfaceDefinition.name)
86+
val interfaceSpec = TypeSpec.interfaceBuilder(interfaceDefinition.templatedClassName(config.nameTemplate))
8687
.addOptionalGeneratedAnnotation(config)
8788
.addModifiers(KModifier.SEALED)
8889
// add docs if available
@@ -144,7 +145,7 @@ fun generateKotlin2Interfaces(
144145
val implementations = unionDefinition.memberTypes
145146
.plus(extensionTypes.flatMap { it.memberTypes })
146147
.filterIsInstance<NamedNode<*>>()
147-
.map { node -> ClassName(config.packageNameTypes, node.name) }
148+
.associate { it.name to ClassName(config.packageNameTypes, it.templatedClassName(config.nameTemplate)) }
148149

149150
// create the interface
150151
val interfaceSpec = TypeSpec.interfaceBuilder(unionDefinition.name)

0 commit comments

Comments
 (0)