Skip to content

Commit ad8ef15

Browse files
committed
Make compatible with other JVM Locales
1 parent 1b1803e commit ad8ef15

File tree

3 files changed

+24
-6
lines changed

3 files changed

+24
-6
lines changed

src/main/kotlin/graphql/kickstart/tools/resolver/FieldResolverScanner.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,11 @@ internal class FieldResolverScanner(val options: SchemaParserOptions) {
8686
return methods.find {
8787
it.name == name && verifyMethodArguments(it, argumentCount, search)
8888
} ?: methods.find {
89-
(isBoolean(field.type) && it.name == "is${name.capitalize()}") && verifyMethodArguments(it, argumentCount, search)
89+
(isBoolean(field.type) && it.name == "is${name.replaceFirstChar(Char::titlecase)}") && verifyMethodArguments(it, argumentCount, search)
9090
} ?: methods.find {
91-
it.name == "get${name.capitalize()}" && verifyMethodArguments(it, argumentCount, search)
91+
it.name == "get${name.replaceFirstChar(Char::titlecase)}" && verifyMethodArguments(it, argumentCount, search)
9292
} ?: methods.find {
93-
it.name == "getField${name.capitalize()}" && verifyMethodArguments(it, argumentCount, search)
93+
it.name == "getField${name.replaceFirstChar(Char::titlecase)}" && verifyMethodArguments(it, argumentCount, search)
9494
} ?: methods.find {
9595
it.name == "get${name.snakeToCamelCase()}" && verifyMethodArguments(it, argumentCount, search)
9696
}
@@ -179,9 +179,9 @@ internal class FieldResolverScanner(val options: SchemaParserOptions) {
179179

180180
signatures.add("${baseType.name}.${field.name}($argString)")
181181
if (isBoolean) {
182-
signatures.add("${baseType.name}.is${field.name.capitalize()}($argString)")
182+
signatures.add("${baseType.name}.is${field.name.replaceFirstChar(Char::titlecase)}($argString)")
183183
}
184-
signatures.add("${baseType.name}.get${field.name.capitalize()}($argString)")
184+
signatures.add("${baseType.name}.get${field.name.replaceFirstChar(Char::titlecase)}($argString)")
185185
if (scannedProperties) {
186186
signatures.add("${baseType.name}.${field.name}")
187187
}

src/main/kotlin/graphql/kickstart/tools/util/Utils.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,5 +79,5 @@ private fun isBooleanGetter(method: Method) = (method.name.startsWith("is")
7979
&& (method.returnType == java.lang.Boolean::class.java)
8080
|| method.returnType == Boolean::class.java)
8181

82-
internal fun String.snakeToCamelCase(): String = split("_").joinToString(separator = "") { it.capitalize() }
82+
internal fun String.snakeToCamelCase(): String = split("_").joinToString(separator = "") { it.replaceFirstChar(Char::titlecase) }
8383

src/test/kotlin/graphql/kickstart/tools/FieldResolverScannerTest.kt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,20 @@ class FieldResolverScannerTest {
8181
assertEquals((meta as MethodFieldResolver).method.returnType, HullType::class.java)
8282
}
8383

84+
@Test
85+
fun `scanner finds field resolver method using capitalize field_name in different locale`() {
86+
val default = Locale.getDefault()
87+
Locale.setDefault(Locale.forLanguageTag("tr-TR"))
88+
89+
val resolverInfo = RootResolverInfo(listOf(CapitalizeQuery()), options)
90+
val fieldResolver = scanner.findFieldResolver(FieldDefinition("id", TypeName("HullType")), resolverInfo)
91+
92+
assert(fieldResolver is MethodFieldResolver)
93+
assertEquals((fieldResolver as MethodFieldResolver).method.returnType, HullType::class.java)
94+
95+
Locale.setDefault(default)
96+
}
97+
8498
class RootQuery1 : GraphQLQueryResolver {
8599
fun field1() {}
86100
}
@@ -97,6 +111,10 @@ class FieldResolverScannerTest {
97111
fun getHullType(): HullType = HullType()
98112
}
99113

114+
class CapitalizeQuery : GraphQLQueryResolver {
115+
fun getId(): HullType = HullType()
116+
}
117+
100118
class HullType
101119

102120
open class ParentPropertyQuery {

0 commit comments

Comments
 (0)