Skip to content

Rust-server: implement ValidateComposited traits for complex types and add integer enum support#23045

Merged
wing328 merged 1 commit intoOpenAPITools:masterfrom
dsteeley:rust-bugs
Feb 24, 2026
Merged

Rust-server: implement ValidateComposited traits for complex types and add integer enum support#23045
wing328 merged 1 commit intoOpenAPITools:masterfrom
dsteeley:rust-bugs

Conversation

@dsteeley
Copy link
Copy Markdown
Contributor

@dsteeley dsteeley commented Feb 24, 2026

The client example generator in processParam used an empty string fallback when no example was specified in the OpenAPI spec. For boolean and numeric primitive types this produced invalid Rust, either empty arguments or bare commas, this caused compilation failures in the generated client examples.

These defaults appear only in generated client example code (examples/client/main.rs) and are commented. Parameters of other types without examples continue to disable the operation via the existing x-no-client-example mechanism.

PR checklist

  • Read the contribution guidelines.
  • Pull Request title clearly describes the work in the pull request and Pull Request description provides details about how to validate the work. Missing information here may result in delayed response from the community.
  • Run the following to build the project and update samples:
    ./mvnw clean package || exit
    ./bin/generate-samples.sh ./bin/configs/*.yaml || exit
    ./bin/utils/export_docs_generators.sh || exit
    
    (For Windows users, please run the script in WSL)
    Commit all changed files.
    This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master.
    These must match the expectations made by your contribution.
    You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example ./bin/generate-samples.sh bin/configs/java*.
    IMPORTANT: Do NOT purge/delete any folders/files (e.g. tests) when regenerating the samples as manually written tests may be removed.
  • File the PR against the correct branch: master (upcoming 7.x.0 minor release - breaking changes with fallbacks), 8.0.x (breaking changes without fallbacks)
  • If your PR solves a reported issue, reference it using GitHub's linking syntax (e.g., having "fixes #123" present in the PR description)
  • If your PR is targeting a particular programming language, @mention the technical committee members, so they are more likely to review the pull request.

Summary by cubic

Adds serde_valid composite validation traits to rust-server models, improves client example generation to avoid invalid Rust, and adds integer enum support. Client examples now skip operations when required query params lack examples, and query param examples are only used when provided in the spec.

  • New Features

    • Implemented ValidateCompositedMinLength and ValidateCompositedMaxLength for complex types (behind the validate feature).
    • Added support for integer enums.
  • Bug Fixes

    • Disabled client examples when required query parameters have no examples and filtered those ops from the CLI list.
    • Stopped auto-generating query parameter examples; only use examples from the spec.
    • Ensured query parameters are processed for example generation.

Written for commit 9cac9c8. Summary will update on new commits.

Copy link
Copy Markdown
Contributor

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2 issues found across 30 files

Prompt for AI agents (all issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="samples/server/petstore/rust-server/output/openapi-v3/examples/client/main.rs">

<violation number="1" location="samples/server/petstore/rust-server/output/openapi-v3/examples/client/main.rs:83">
P2: `QueryExampleGet` is still listed as an accepted CLI operation, but its match arm is commented out, so choosing it will fall through to `panic!("Invalid operation provided")`. Remove it from the accepted list or re-enable the handler to avoid runtime panics for a valid option.</violation>
</file>

<file name="samples/server/petstore/rust-server/output/petstore-with-fake-endpoints-models-for-testing/examples/client/main.rs">

<violation number="1" location="samples/server/petstore/rust-server/output/petstore-with-fake-endpoints-models-for-testing/examples/client/main.rs:296">
P2: CLI accepts operations (e.g., LoginUser/DeleteUser) that no longer have match arms, so valid inputs now hit the default panic at runtime.</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

@wing328 wing328 merged commit 7970d4b into OpenAPITools:master Feb 24, 2026
18 checks passed
@wing328 wing328 added this to the 7.21.0 milestone Feb 24, 2026
davidricodias pushed a commit to davidricodias/openapi-generator that referenced this pull request Mar 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants