{"record":{"id":"c1376dac7515eb26","repo":"alibaba/spring-ai-alibaba","slug":"unknown-language-language-check-project-metad","errorCode":null,"errorMessage":"Unknown language '${language}' check project metadata","messagePattern":"Unknown language '(.+?)' check project metadata","errorType":"validation","errorClass":"InvalidProjectRequestException","httpStatus":null,"severity":"error","filePath":"spring-ai-alibaba-admin/spring-ai-alibaba-admin-server-start/src/main/java/com/alibaba/cloud/ai/studio/admin/builder/generator/service/generator/GraphProjectReqToDescConverter.java","lineNumber":152,"sourceCode":"\n\tprivate void validateType(String type, InitializrMetadata metadata) {\n\t\tif (type != null) {\n\t\t\tType typeFromMetadata = metadata.getTypes().get(type);\n\t\t\tif (typeFromMetadata == null) {\n\t\t\t\tthrow new InvalidProjectRequestException(\"Unknown type '\" + type + \"' check project metadata\");\n\t\t\t}\n\t\t\tif (!typeFromMetadata.getTags().containsKey(\"build\")) {\n\t\t\t\tthrow new InvalidProjectRequestException(\n\t\t\t\t\t\t\"Invalid type '\" + type + \"' (missing build tag) check project metadata\");\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void validateLanguage(String language, InitializrMetadata metadata) {\n\t\tif (language != null) {\n\t\t\tDefaultMetadataElement languageFromMetadata = metadata.getLanguages().get(language);\n\t\t\tif (languageFromMetadata == null) {\n\t\t\t\tthrow new InvalidProjectRequestException(\"Unknown language '\" + language + \"' check project metadata\");\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void validatePackaging(String packaging, InitializrMetadata metadata) {\n\t\tif (packaging != null) {\n\t\t\tDefaultMetadataElement packagingFromMetadata = metadata.getPackagings().get(packaging);\n\t\t\tif (packagingFromMetadata == null) {\n\t\t\t\tthrow new InvalidProjectRequestException(\n\t\t\t\t\t\t\"Unknown packaging '\" + packaging + \"' check project metadata\");\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void validateDependencies(ProjectRequest request, InitializrMetadata metadata) {\n\t\tList<String> dependencies = request.getDependencies();\n\t\tdependencies.forEach((dep) -> {\n\t\t\tDependency dependency = metadata.getDependencies().get(dep);","sourceCodeStart":134,"sourceCodeEnd":170,"githubUrl":"https://github.com/alibaba/spring-ai-alibaba/blob/f82da0b50f35744c13968191be2b1cd2452ef550/spring-ai-alibaba-admin/spring-ai-alibaba-admin-server-start/src/main/java/com/alibaba/cloud/ai/studio/admin/builder/generator/service/generator/GraphProjectReqToDescConverter.java#L134-L170","documentation":"validateLanguage() checks the requested language id (e.g. java, kotlin, groovy) against the languages registered in the Initializr metadata. If the id is unknown, an InvalidProjectRequestException('Unknown language ... check project metadata') is thrown. Only language ids present in metadata.getLanguages() are accepted.","triggerScenarios":"Calling validate/convert with ProjectRequest language set to an id not found via metadata.getLanguages().get(language) — e.g. language 'scala' or a typo like 'jva'.","commonSituations":"Typos in the language parameter, requesting a language the admin generator metadata does not register, stale clients sending removed language ids.","solutions":["Use a registered language id such as 'java' or 'kotlin' (list valid ids from the metadata endpoint)","Register the additional language in initializr.metadata languages configuration","Fix the typo in the request"],"exampleFix":"// before\nrequest.setLanguage(\"jva\");\n// after\nrequest.setLanguage(\"java\");","handlingStrategy":"validation","validationCode":"if (language != null && !Set.of(\"java\",\"kotlin\",\"groovy\").contains(language)) {\n    throw new IllegalArgumentException(\"language '\" + language + \"' not registered\");\n}","typeGuard":null,"tryCatchPattern":"try {\n    converter.validate(request);\n} catch (InvalidProjectRequestException e) {\n    return ResponseEntity.badRequest().body(e.getMessage());\n}","preventionTips":["Feed language selectors from the metadata endpoint","Fix typos with shared constants instead of string literals","Register extra languages in initializr metadata if needed"],"tags":["initializr","validation","project-generation"],"backgroundTag":"invalid-enum-value","analyzedSha":"f82da0b50f35744c13968191be2b1cd2452ef550","analyzedAt":"2026-09-09T15:32:42.421Z","contentChangedAt":"2026-09-09T15:32:42.421Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}