{"record":{"id":"c1b44ed3215d9e5e","repo":"quarkusio/quarkus","slug":"unsupported-config-type-configtype","errorCode":null,"errorMessage":"Unsupported config type: + configType","messagePattern":"Unsupported config type: \\+ configType","errorType":"exception","errorClass":"CodestartException","httpStatus":null,"severity":"error","filePath":"independent-projects/tools/codestarts/src/main/java/io/quarkus/devtools/codestarts/core/strategy/SmartConfigMergeCodestartFileStrategyHandler.java","lineNumber":61,"sourceCode":"        for (TargetFile codestartFile : codestartFiles) {\n            final String content = codestartFile.getContent();\n            if (!content.trim().isEmpty()) {\n                final Map<String, Object> o = YAML_MAPPER.readerFor(Map.class).readValue(content);\n                config.putAll(NestedMaps.deepMerge(config, o));\n            }\n        }\n        final String resolvedRelativePath = resolveConfigPath(relativePath, data);\n        final Path targetPath = targetDirectory.resolve(resolvedRelativePath);\n        createDirectories(targetPath);\n        if (Objects.equals(configType, \"config-properties\")) {\n            writePropertiesConfig(targetPath, config);\n            return;\n        }\n        if (Objects.equals(configType, \"config-yaml\")) {\n            writeYamlConfig(targetPath, config);\n            return;\n        }\n        throw new CodestartException(\"Unsupported config type: \" + configType);\n    }\n\n    private void writeYamlConfig(Path targetPath, Map<String, Object> config) throws IOException {\n        checkTargetDoesNotExist(targetPath);\n        YAML_MAPPER.writerFor(Map.class).writeValue(targetPath.toFile(), config);\n    }\n\n    private void writePropertiesConfig(Path targetPath, Map<String, Object> config) throws IOException {\n        final StringBuilder builder = new StringBuilder();\n        // Enforce properties are in consistent order.\n        final TreeMap<String, String> flat = new TreeMap<>();\n        flatten(\"\", flat, config);\n        for (Map.Entry<String, String> entry : flat.entrySet()) {\n            final String key = entry.getKey().replaceAll(\"\\\\.~$\", \"\");\n            builder.append(key).append(\"=\").append(entry.getValue()).append(\"\\n\");\n        }\n        final Path propertiesTargetPath = targetPath.getParent()\n                .resolve(targetPath.getFileName().toString().replace(\".yml\", \".properties\"));","sourceCodeStart":43,"sourceCodeEnd":79,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/tools/codestarts/src/main/java/io/quarkus/devtools/codestarts/core/strategy/SmartConfigMergeCodestartFileStrategyHandler.java#L43-L79","documentation":"SmartConfigMergeCodestartFileStrategyHandler throws CodestartException when the config file being smart-merged has a configType it cannot render. It supports a small set (e.g. properties and 'config-yaml'); any other config type reaches the terminal throw. This is a library capability limit, not a user file conflict.","triggerScenarios":"Applying the smart-config-merge strategy to a config file whose detected/declared configType is not one of the supported types (not properties, not 'config-yaml') — e.g. json, toml, or a custom type string.","commonSituations":"A codestart ships application.json or config in an unsupported format while using smart-merge; a custom configType string added in a codestart definition that the handler does not know.","solutions":["Convert the config file to a supported type (properties or config-yaml) in the codestart","Use a different output strategy (override/copy) for that file instead of smart-config-merge","Upgrade Quarkus — newer versions may support additional config types"],"exampleFix":"// before\ncodestart file: src/main/resources/application.json (smart-config-merge)\n\n// after\ncodestart file: src/main/resources/application.yaml (config-yaml, smart-config-merge)","handlingStrategy":"validation","validationCode":"Set<String> SUPPORTED = Set.of(\"properties\", \"config-yaml\");\nif (!SUPPORTED.contains(configType))\n    throw new IllegalStateException(\"smart-config-merge unsupported type: \" + configType);","typeGuard":null,"tryCatchPattern":"try {\n    handler.process(targetDir, relativePath, codestartFiles, data);\n} catch (CodestartException e) {\n    if (e.getMessage().startsWith(\"Unsupported config type\")) {\n        // convert file to properties/yaml or switch to a copy/override strategy\n    } else throw e;\n}","preventionTips":["Ship codestart config as application.properties or config yaml when using smart-config-merge","Check the handler's supported configType set before adding new config formats","Use plain copy/override for exotic formats like json or toml"],"tags":["codestarts","config","unsupported-format"],"backgroundTag":"unsupported-config-type","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"}