Uploaded image for project: 'Camel'
  1. Camel
  2. CAMEL-15676

openapi-restdsl-generator - redundant content-types with multiple responses

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 3.6.0
    • Component/s: tooling
    • Labels:
      None
    • Estimated Complexity:
      Novice

      Description

      openapi-restdsl-generator and accordingly the camel-restdsl-openapi-plugin for maven generate problematic code/xml if there are multiple responses with the same content-type defined for a given path and operation.

      Example:

      ...
      "responses": {
                          "200": {
                              "content": {
                                  "application/json": {
                                      ...
                                  }
                              },
                              "description": "Updated pet."
                          },
                          "201": {
                              "content": {
                                  "application/json": {
                                      ...
                                  }
                              },
                              "description": "Created pet."
                          }
                      }
      ...
      

      will result in:

      <rest>
              <put consumes="application/json" produces="application/json,application/json" uri="/pet">
                  <param name="body" required="true" type="body"/>
                  <to uri="direct:rest1"/>      
              </put> 
          </rest> 
      

      The problematic part is the comma-separated list as the value of the produces-attribute, where application/json is listed twice. The Camel route will then, per default, return "application/json,application/json" as the content-type.

      This invalid content-type causes some problems in third-party tools and frameworks, for example the Citrus testing framework. Although a simple work-around for the example above is to explicitly set the content-type header in the Camel route, I think the current behavior could be easily improved by modifying org.apache.camel.generator.openapi.OperationVisitor to use a set instead of a list for emitting the operationLevelProduces.

      This would not fix cases, where there are multiple responses with different content-types, such as "application/json,text/xml". But I assume that they are a little bit less common nowadays (at least for us).

      I will follow-up with a pull-request.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                davsclaus Claus Ibsen
                Reporter:
                mwuersch Michael Würsch
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: