Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve generated javadoc #285

Open
jsenko opened this issue Jul 5, 2024 · 0 comments
Open

Improve generated javadoc #285

jsenko opened this issue Jul 5, 2024 · 0 comments
Labels
enhancement New feature or request

Comments

@jsenko
Copy link
Member

jsenko commented Jul 5, 2024

Given the following operation:

"/admin/export": {
  "get": {
    "description": "Exports registry data as a ZIP archive.",
    "operationId": "exportData",
    "parameters": [
      {
        "description": "Indicates if the operation is done for a browser.  If true, the response will be a JSON payload with a property called `href`.  This `href` will be a single-use, naked download link suitable for use by a web browser to download the content.",
        "in": "query",
        "name": "forBrowser",
        "schema": {
          "type": "boolean"
        }
      }
    ],
    "responses": {
      "200": {
        "content": {
          "application/zip": {
            "schema": {
              "$ref": "#/components/schemas/FileContent"
            }
          },
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/DownloadRef"
            }
          }
        },
        "description": "Response when the export is successful."
      },
      "500": {
        "$ref": "#/components/responses/ServerError"
      }
    },
    ...
    "summary": "Export registry data",
    ...
  },
  "summary": "Provides a way to export registry data."
}

the generated javadoc is simply based on operation description:

/**
 * <p>
 * Exports registry data as a ZIP archive.
 * </p>
 * 
 */
@Path("/export")
@GET
@Produces({"application/json", "application/zip"})
Response exportData(@QueryParam("forBrowser") Boolean forBrowser);

It would be cool if the javadoc contained information from other nested fields, e.g.:

/**
 * Export registry data
 * <p>
 * Exports registry data as a ZIP archive.
 * <p>
 * Responses:
 * <ul>
 *   <li>HTTP 200: Response when the export is successful.
 *     <ul>
 *       <li>application/json: {@link io.apicurio.registry.rest.v2.beans.DownloadRef}</li>
 *       <li>application/zip: string (binary)</li>
 *     </ul>
 *   <li>HTTP 500: Common response for all operations that can fail with an unexpected server error.
 *     <ul>
 *       <li>application/json: {@link io.apicurio.registry.rest.v2.beans.Error}</li>
 *     </ul>
 *   </li>
 * </ul>
 *
 * @param forBrowser Indicates if the operation is done for a browser. If true, the response will be a JSON payload
 *                   with a property called `href`. This `href` will be a single-use, naked download link
 *                   suitable for use by a web browser to download the content.
*/
@Path("/export")
@GET
@Produces({"application/json", "application/zip"})
Response exportData(@QueryParam("forBrowser") Boolean forBrowser);
@jsenko jsenko added the enhancement New feature or request label Jul 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant