OpenAPITools/openapi-generator · error · RuntimeException

{serializationLibrary} is an invalid enum property naming op

Error message

{serializationLibrary} is an invalid enum property naming option. Please choose from:
  {availableValues}

What it means

setSerializationLibrary maps the 'serializationLibrary' additional property of the Micronaut Java generators onto the enum {jackson, micronaut_serde_jackson} via valueOf(). An unknown or case-mismatched value raises IllegalArgumentException, rethrown as a RuntimeException that lists the two valid names. The message text ('invalid enum property naming option') is copy-pasted from modelPropertyNaming code and misleading — this error is about the serialization library. Default is jackson.

Source

Thrown at modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautAbstractCodegen.java:719

                .put("replaceDotsWithUnderscore", new ReplaceDotsWithUnderscoreLambda());
    }

    private static class ReplaceDotsWithUnderscoreLambda implements Mustache.Lambda {
        @Override
        public void execute(final Template.Fragment fragment, final Writer writer) throws IOException {
            writer.write(fragment.execute().replace('.', '_'));
        }
    }

    public void setSerializationLibrary(final String serializationLibrary) {
        try {
            this.serializationLibrary = JavaMicronautAbstractCodegen.SERIALIZATION_LIBRARY_TYPE.valueOf(serializationLibrary).name();
        } catch (IllegalArgumentException ex) {
            StringBuilder sb = new StringBuilder(serializationLibrary + " is an invalid enum property naming option. Please choose from:");
            for (JavaMicronautAbstractCodegen.SERIALIZATION_LIBRARY_TYPE availableSerializationLibrary : JavaMicronautAbstractCodegen.SERIALIZATION_LIBRARY_TYPE.values()) {
                sb.append("\n  ").append(availableSerializationLibrary.name());
            }
            throw new RuntimeException(sb.toString());
        }
    }

    @Override
    public void postProcess() {
        if (!isQuietMode()) {
            System.out.println("################################################################################");
            System.out.println("# Thanks for using OpenAPI Generator.                                          #");
            System.out.println("# Please consider donating to help us maintain this project \uD83D\uDE4F                 #");
            System.out.println("# https://opencollective.com/openapi_generator/donate                          #");
            System.out.println("#                                                                              #");
            System.out.println("# WARNING! This generator is outdated. Please use the official generator for   #");
            System.out.println("# Micronaut: https://github.com/micronaut-projects/micronaut-openapi with the  #");
            System.out.println("# help of the plugin for Gradle                                                #");
            System.out.println("# (https://github.com/micronaut-projects/micronaut-gradle-plugin) and Maven    #");
            System.out.println("# (https://github.com/micronaut-projects/micronaut-maven-plugin).              #");
            System.out.println("#                                                                              #");
            System.out.println("# Supported generators for micronaut client / server side, java and kotlin     #");

View on GitHub (pinned to fcec517be3)

Solutions

  1. Use `serializationLibrary=jackson` (the default) or `serializationLibrary=micronaut_serde_jackson` (underscore form, meaning micronaut-serialization with Jackson annotations).
  2. Remove the option to keep the jackson default.
  3. If you copied gson/moshi from another generator's config, delete it here — the Micronaut templates ship no gson/moshi adapters.

Example fix

# before
openapi-generator-cli generate -g java-micronaut -i api.yaml -p serializationLibrary=micronaut-serde-jackson
# after
openapi-generator-cli generate -g java-micronaut -i api.yaml -p serializationLibrary=micronaut_serde_jackson
Defensive patterns

Strategy: validation

Validate before calling

# shell: only two valid names for Micronaut serialization
sl="${SERIALIZATION_LIBRARY:-jackson}"
case "$sl" in
  jackson|micronaut_serde_jackson) ;;
  *) echo "serializationLibrary must be jackson|micronaut_serde_jackson, got: $sl" >&2; exit 2 ;;
esac

Type guard

enum MicronautSerialization { JACKSON, MICRONAUT_SERDE_JACKSON }

Optional<MicronautSerialization> asMicronautSerialization(String v) {
    try {
        return Optional.of(MicronautSerialization.valueOf(v));
    } catch (IllegalArgumentException | NullPointerException e) {
        return Optional.empty();
    }
}

Try / catch

try {
    new DefaultGenerator().opts(clientOptInput).generate();
} catch (RuntimeException e) {
    // message lists the valid enum names even though the wording mentions 'property naming'
    throw new IllegalStateException("Invalid Micronaut serializationLibrary: " + e.getMessage(), e);
}

Prevention

When it happens

Trigger: `-g java-micronaut-server -p serializationLibrary=gson` or `moshi` (valid in other generators but not here); `micronaut-serde-jackson` written with hyphens instead of underscores; `Jackson` capitalized; programmatic setSerializationLibrary("serde").

Common situations: Reusing an options block from the kotlin or java generators where gson/moshi are valid; hyphen-vs-underscore confusion with the enum constant micronaut_serde_jackson; assuming any Jackson-class library name is accepted.

Related errors


AI-assisted analysis of OpenAPITools/openapi-generator@fcec517be3 (2026-08-22). Data as JSON: /api/errors/42f488283cfcc99b. Report an issue: GitHub.