Skip to content

Commit 0f283a0

Browse files
authored
Added typeMapping from Upload to MultipartFile. This ensures that the Upload scalar can be used with no additional setup when added to a schema, as is detailed in the documentation. (#529)
* Add typeMapping from Upload scalar to MultipartFile --------- Co-authored-by: Grace <[email protected]>
1 parent c7c8333 commit 0f283a0

File tree

4 files changed

+60
-5
lines changed

4 files changed

+60
-5
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ class TypeUtils(private val packageName: String, private val config: CodeGenConf
4646
"RelayPageInfo" to ClassName.get(PageInfo::class.java),
4747
"PageInfo" to ClassName.get(PageInfo::class.java),
4848
"PresignedUrlResponse" to ClassName.get("com.netflix.graphql.types.core.resolvers", "PresignedUrlResponse"),
49-
"Header" to ClassName.get("com.netflix.graphql.types.core.resolvers", "PresignedUrlResponse", "Header")
49+
"Header" to ClassName.get("com.netflix.graphql.types.core.resolvers", "PresignedUrlResponse", "Header"),
50+
"Upload" to ClassName.get("org.springframework.web.multipart", "MultipartFile")
5051
)
5152

5253
fun qualifyName(name: String): String {

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ class KotlinTypeUtils(private val packageName: String, private val config: CodeG
4646
"RelayPageInfo" to PageInfo::class.asTypeName(),
4747
"PageInfo" to PageInfo::class.asTypeName(),
4848
"PresignedUrlResponse" to "com.netflix.graphql.types.core.resolvers.PresignedUrlResponse".toKtTypeName(),
49-
"Header" to "com.netflix.graphql.types.core.resolvers.PresignedUrlResponse.Header".toKtTypeName()
49+
"Header" to "com.netflix.graphql.types.core.resolvers.PresignedUrlResponse.Header".toKtTypeName(),
50+
"Upload" to "org.springframework.web.multipart.MultipartFile".toKtTypeName()
5051
)
5152

5253
fun qualifyName(name: String): String {

graphql-dgs-codegen-core/src/test/kotlin/com/netflix/graphql/dgs/codegen/CodeGenTest.kt

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4101,4 +4101,54 @@ It takes a title and such.
41014101
assertThat(dataTypes[0].typeSpec.fieldSpecs[1].type.toString()).contains(basePackageName)
41024102
assertThat(dataTypes[0].typeSpec.fieldSpecs[2].type.toString()).isEqualTo("java.time.LocalDate")
41034103
}
4104+
4105+
@Test
4106+
fun `The Upload scalar typeMapping works by default`() {
4107+
val schema = """
4108+
scalar Upload
4109+
type Person {
4110+
name: String
4111+
age: Int
4112+
uploadFile: Upload
4113+
}
4114+
""".trimIndent()
4115+
4116+
val (dataTypes) = CodeGen(
4117+
CodeGenConfig(
4118+
schemas = setOf(schema),
4119+
packageName = basePackageName
4120+
)
4121+
).generate()
4122+
4123+
assertThat(dataTypes.size).isEqualTo(1)
4124+
assertThat(dataTypes[0].typeSpec.fieldSpecs[2].type.toString()).isEqualTo("org.springframework.web.multipart.MultipartFile")
4125+
}
4126+
4127+
@Test
4128+
fun `The default Upload scalar can be overridden`() {
4129+
val schema = """
4130+
scalar Upload
4131+
type Person {
4132+
name: String
4133+
age: Int
4134+
uploadFile: Upload
4135+
}
4136+
""".trimIndent()
4137+
4138+
val (dataTypes, javaInterfaces) = CodeGen(
4139+
CodeGenConfig(
4140+
schemas = setOf(schema),
4141+
packageName = basePackageName,
4142+
typeMapping = mapOf(
4143+
"Upload" to "java.lang.Integer"
4144+
)
4145+
)
4146+
).generate()
4147+
4148+
// Check that the Person type is generated
4149+
assertThat(dataTypes.size).isEqualTo(1)
4150+
4151+
// Check that the third field of the Person type is an Integer
4152+
assertThat(dataTypes[0].typeSpec.fieldSpecs[2].type.toString()).isEqualTo("java.lang.Integer")
4153+
}
41044154
}

graphql-dgs-codegen-gradle/src/test/kotlin/com/netflix/graphql/dgs/CodegenGradlePluginTest.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -193,8 +193,11 @@ class CodegenGradlePluginTest {
193193
}
194194

195195
companion object {
196-
const val EXPECTED_PATH = "src/test/resources/test-project/build/graphql/generated/sources/dgs-codegen/com/netflix/testproject/graphql/types/"
197-
const val EXPECTED_DEFAULT_PATH = "src/test/resources/test-project/build/generated/sources/dgs-codegen/com/netflix/testproject/graphql/types/"
198-
const val EXPECTED_PATH_EMPTY_SCHEMA = "src/test/resources/test-project-no-schema-files/build/graphql/generated/sources/dgs-codegen/com/netflix/testproject/graphql/types/"
196+
const val EXPECTED_PATH =
197+
"src/test/resources/test-project/build/graphql/generated/sources/dgs-codegen/com/netflix/testproject/graphql/types/"
198+
const val EXPECTED_DEFAULT_PATH =
199+
"src/test/resources/test-project/build/generated/sources/dgs-codegen/com/netflix/testproject/graphql/types/"
200+
const val EXPECTED_PATH_EMPTY_SCHEMA =
201+
"src/test/resources/test-project-no-schema-files/build/graphql/generated/sources/dgs-codegen/com/netflix/testproject/graphql/types/"
199202
}
200203
}

0 commit comments

Comments
 (0)