in graphql-dgs-codegen-core/src/main/kotlin/com/netflix/graphql/dgs/codegen/generators/java/TypeUtils.kt [81:116]
override fun visitListType(
node: ListType,
context: TraverserContext<Node<Node<*>>>,
): TraversalControl {
val typeName = context.getCurrentAccumulate<JavaTypeName>()
val boxed = boxType(typeName)
var canUseWildcardType = false
if (useWildcardType) {
if (typeName is ClassName) {
if (document.definitions
.filterIsInstance<ObjectTypeDefinition>()
.any { e -> "I${e.name}" == typeName.simpleName() } ||
(
config.generateInterfaces &&
document.definitions.filterIsInstance<InterfaceTypeDefinition>().any { e ->
"${e.name}" ==
typeName.simpleName()
}
)
) {
canUseWildcardType = true
}
}
}
val parameterizedTypeName =
if (canUseWildcardType) {
val wildcardTypeName: WildcardTypeName = WildcardTypeName.subtypeOf(boxed)
ParameterizedTypeName.get(ClassName.get(List::class.java), wildcardTypeName)
} else {
ParameterizedTypeName.get(ClassName.get(List::class.java), boxed)
}
context.setAccumulate(parameterizedTypeName)
return TraversalControl.CONTINUE
}