{"record":{"id":"2dcec54f80d61101","repo":"quarkusio/quarkus","slug":"unknown-naming-strategy-provided-strategy-subs","errorCode":null,"errorMessage":"Unknown naming strategy provided:  ${strategy.substringAfter('.')}","messagePattern":"Unknown naming strategy provided:  (.+?)","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"extensions/resteasy-reactive/rest-kotlin-serialization-common/runtime/src/main/kotlin/io/quarkus/resteasy/reactive/kotlin/serialization/common/runtime/JsonProducer.kt","lineNumber":103,"sourceCode":"                        \"No no-arg constructor found on $strategy\"\n                    )\n            return constructor.newInstance() as JsonNamingStrategy\n        } catch (e: ReflectiveOperationException) {\n            throw IllegalArgumentException(\n                \"Error loading naming strategy:  ${strategy.substringAfter('.')}\",\n                e,\n            )\n        }\n    }\n\n    @ExperimentalSerializationApi\n    private fun extractBuiltIn(strategy: String): JsonNamingStrategy {\n        val kClass = Builtins::class\n        val property =\n            kClass.memberProperties.find { property ->\n                property.name == strategy.substringAfter('.')\n            }\n                ?: throw IllegalArgumentException(\n                    \"Unknown naming strategy provided:  ${strategy.substringAfter('.')}\"\n                )\n\n        return property.get(JsonNamingStrategy) as JsonNamingStrategy\n    }\n\n    private fun sortCustomizersInDescendingPriorityOrder(\n        customizers: Iterable<JsonBuilderCustomizer>\n    ): List<JsonBuilderCustomizer> {\n        val sortedCustomizers: MutableList<JsonBuilderCustomizer> = ArrayList()\n        for (customizer in customizers) {\n            sortedCustomizers.add(customizer)\n        }\n        sortedCustomizers.sort()\n        return sortedCustomizers\n    }\n}\n","sourceCodeStart":85,"sourceCodeEnd":121,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/resteasy-reactive/rest-kotlin-serialization-common/runtime/src/main/kotlin/io/quarkus/resteasy/reactive/kotlin/serialization/common/runtime/JsonProducer.kt#L85-L121","documentation":"Thrown by JsonProducer.extractBuiltIn when the configured naming-strategy value looks like a built-in (dotted) reference but no matching property exists on JsonNamingStrategy.Builtins. The strategy string's suffix after the last '.' is matched against Builtins member properties; an unmatched suffix means the strategy name is misspelled or unsupported.","triggerScenarios":"quarkus.rest.kotlin-serialization.naming-strategy set to something like kotlinx.serialization.json.JsonNamingStrategy.SnakeCase (capitalized) or any name that is not exactly one of Builtins' members (snake_case, kebab-case, pascal_case, lower_case, etc.).","commonSituations":"Camel-case vs snake-case confusion (snakeCase vs snake_case); copying a strategy name from a Jackson docs page; typos.","solutions":["Use the exact Builtins property name, e.g. kotlinx.serialization.json.JsonNamingStrategy.snake_case.","List available names from JsonNamingStrategy.Builtins in the kotlinx.serialization docs and correct the value.","To define a custom strategy, implement JsonNamingStrategy and configure a custom class instead of a Builtins name."],"exampleFix":"// before\nquarkus.rest.kotlin-serialization.naming-strategy=kotlinx.serialization.json.JsonNamingStrategy.SnakeCase\n// after\nquarkus.rest.kotlin-serialization.naming-strategy=kotlinx.serialization.json.JsonNamingStrategy.snake_case","handlingStrategy":"validation","validationCode":"val builtins = JsonNamingStrategy.Builtins::class.memberProperties.map { it.name }\nval name = strategy.substringAfter('.')\nrequire(name in builtins) { \"$name not one of $builtins\" }","typeGuard":null,"tryCatchPattern":"try { /* start app with strategy */ } catch (e: IllegalArgumentException) { logger.error(\"Bad naming strategy: ${e.message}\"); throw e }","preventionTips":["Copy names exactly: snake_case, kebab-case, etc.","Check kotlinx.serialization docs for Builtins members","Never mix Jackson strategy names with kotlinx.serialization"],"tags":["kotlin","config","resteasy-reactive"],"backgroundTag":"invalid-config-value","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}