{"record":{"id":"c3a62e76b69e8370","repo":"OpenAPITools/openapi-generator","slug":"s-is-an-invalid-enum-property-naming-option-plea-c3a62e","errorCode":null,"errorMessage":"%s is an invalid enum property naming option. Please choose from:","messagePattern":"(.+?) is an invalid enum property naming option\\. Please choose from:","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java","lineNumber":2852,"sourceCode":"    @Override\n    public boolean isTypeErasedGenerics() {\n        return true;\n    }\n\n    /**\n     * Sets the naming convention for Java enum properties\n     *\n     * @param enumPropertyNamingType The string representation of the naming convention, as defined by {@link ENUM_PROPERTY_NAMING_TYPE}\n     */\n    public void setEnumPropertyNaming(final String enumPropertyNamingType) {\n        try {\n            this.enumPropertyNaming = ENUM_PROPERTY_NAMING_TYPE.valueOf(enumPropertyNamingType);\n        } catch (IllegalArgumentException ex) {\n            StringBuilder sb = new StringBuilder(enumPropertyNamingType + \" is an invalid enum property naming option. Please choose from:\");\n            for (ENUM_PROPERTY_NAMING_TYPE t : ENUM_PROPERTY_NAMING_TYPE.values()) {\n                sb.append(\"\\n  \").append(t.name());\n            }\n            throw new RuntimeException(sb.toString());\n        }\n    }\n\n    @Override\n    protected ImmutableMap.Builder<String, Mustache.Lambda> addMustacheLambdas() {\n        this.jSpecifyNullableLambda = new JSpecifyNullableLambda();\n        // Add jSpecify nullable annotation in the correct location before or inside a declaration\n        // use cases:\n        //\n        // private {{#lambda.jSpecifyDatatype}}{{{dataType}}}{{/lambda.jSpecifyDatatype}} {{param}}\n        // ->\n        // private @Nullable Time param\n        // private java.time.@Nullable Time\n        // private Time param\n        //\n        // {{#lambda.jSpecifyDatatype}}{{{dataType}}}{{/lambda.jSpecifyDatatype}} {{param}}\n        // ->\n        // @Nullable Time param","sourceCodeStart":2834,"sourceCodeEnd":2870,"githubUrl":"https://github.com/OpenAPITools/openapi-generator/blob/fcec517be3cf5b7964296bcba25fbc97541484e7/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java#L2834-L2870","documentation":"AbstractJavaCodegen.setEnumPropertyNaming parses the enumPropertyNaming option into the generator-local ENUM_PROPERTY_NAMING_TYPE enum, which for the Java generators is MACRO_CASE, legacy, original — not the cross-language set used by C# or Kotlin. An unrecognized string throws RuntimeException with the valid names appended.","triggerScenarios":"Passing -p enumPropertyNaming=camelCase (valid for C#/Kotlin but not Java), snake_case, or a case-mismatched 'macro_case' to a Java generator. valueOf throws IllegalArgumentException and the wrapper RuntimeException aborts option processing.","commonSituations":"Sharing one options file across generators of different languages; assuming the enumPropertyNaming values are universal across openapi-generator; casing slips like macro_case.","solutions":["For Java generators use exactly one of MACRO_CASE, legacy, original.","Split per-language option sets instead of one shared -p block when different generators accept different naming values.","Fix casing: MACRO_CASE is uppercase with underscores, legacy is lowercase."],"exampleFix":"# before:\nopenapi-generator-cli generate -g java -i api.yaml -p enumPropertyNaming=camelCase\n# after:\nopenapi-generator-cli generate -g java -i api.yaml -p enumPropertyNaming=MACRO_CASE","handlingStrategy":"type-guard","validationCode":"// Validate before passing the option to a Java generator\nif (!isJavaEnumPropertyNaming(opts.enumPropertyNaming)) {\n    throw new Error('Java enumPropertyNaming must be one of MACRO_CASE, legacy, original');\n}","typeGuard":"const JAVA_ENUM_PROPERTY_NAMING = ['MACRO_CASE', 'legacy', 'original'] as const;\nexport type JavaEnumPropertyNaming = typeof JAVA_ENUM_PROPERTY_NAMING[number];\nexport function isJavaEnumPropertyNaming(v: string): v is JavaEnumPropertyNaming {\n    return (JAVA_ENUM_PROPERTY_NAMING as readonly string[]).includes(v);\n}","tryCatchPattern":null,"preventionTips":["Java generators use their own value set (MACRO_CASE, legacy, original) — not camelCase/PascalCase/snake_case.","Keep per-language codegen configs separate so naming options never leak across generators.","Match casing exactly; the lookup is a case-sensitive valueOf."],"tags":["openapi","java","enum","naming","configuration"],"backgroundTag":"invalid-enum-property-naming","analyzedSha":"fcec517be3cf5b7964296bcba25fbc97541484e7","analyzedAt":"2026-08-22T11:13:11.613Z","schemaVersion":2},"datasetVersion":"2026-08-22T14:17:55.899Z"}