Skip to content

Java generator: parameter defaultValue not escaped in @param Javadoc, breaks compilation for values containing "*/" #24852

Description

@Kunal8954

Description

When a parameter's OpenAPI schema has a default value containing the
sequence */ (e.g. an Accept header defaulting to */*), the generated
Java client's @param Javadoc line embeds that value raw and unescaped,
which prematurely closes the enclosing /** ... */ comment block and
produces a Java file that fails to compile.

openapi-generator version

7.25.0 (also reproduces on other recent versions - the relevant template
code is unchanged on master as of this writing)

Java (client) generator

Steps to reproduce

  1. Minimal OpenAPI 3.1 spec with a header parameter defaulting to */*:

```yaml
openapi: 3.1.0
info:
title: repro
version: "1.0"
paths:
/ping:
get:
operationId: ping
parameters:
- name: Accept
in: header
required: false
schema:
type: string
default: "/"
examples: ["application/json", "text/plain", "/"]
responses:
"200":
description: ok
```

  1. Generate:
    ```
    docker run --rm -v $(pwd):/spec -v /tmp/out:/output
    openapitools/openapi-generator-cli:v7.25.0 generate
    --input-spec /spec/repro.yaml --generator-name java --output /output
    ```

  2. Compile the generated client (e.g. mvn compile).

Actual behavior

Compilation fails. The generated @param line reads:
```

  • @PARAM accept (optional, default to /)
    ```
    The */ inside that text closes the Javadoc block early, so every line
    after it in the same comment becomes invalid Java source.

Expected behavior

The generated client should compile. defaultValue (and any other
free-text value interpolated into a Javadoc comment) should go through
comment-safe escaping, the same way consumes/produces content types
are handled via escapeText() in addConsumesInfo (see #10598, which
is the same underlying class of bug in the other direction).

Related

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions