Skip to content

Commit f91caf0

Browse files
authored
Merge pull request #565 from graphql-java-kickstart/make-compatible-with-other-locales
Make compatible with other JVM Locales
2 parents 1b1803e + 3f361fc commit f91caf0

File tree

3 files changed

+25
-6
lines changed

3 files changed

+25
-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: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import graphql.relay.Connection
1111
import graphql.relay.DefaultConnection
1212
import graphql.relay.DefaultPageInfo
1313
import org.junit.Test
14+
import java.util.*
1415

1516
class FieldResolverScannerTest {
1617

@@ -81,6 +82,20 @@ class FieldResolverScannerTest {
8182
assertEquals((meta as MethodFieldResolver).method.returnType, HullType::class.java)
8283
}
8384

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

115+
class CapitalizeQuery : GraphQLQueryResolver {
116+
fun getId(): HullType = HullType()
117+
}
118+
100119
class HullType
101120

102121
open class ParentPropertyQuery {

0 commit comments

Comments
 (0)