Skip to content

Commit c5e5e65

Browse files
BouillieOlivier Leonard
authored andcommitted
[scala-akka-http-server] Fix a generation problem on operations with empty responses (OpenAPITools#5868)
* [scala-akka-http-server] When expecting an empty response, a response with an empty text/plain content is not produced anymore * Updated scala-akka-http-server samples Co-authored-by: Olivier Leonard <[email protected]>
1 parent d9da36b commit c5e5e65

File tree

5 files changed

+8
-2
lines changed

5 files changed

+8
-2
lines changed

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaAkkaHttpServerCodegen.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -409,6 +409,7 @@ public static void marshallingPostProcessor(Map<String, Object> objs) {
409409
entityMarshallerTypes.add(marshaller);
410410
operationSpecificMarshallers.add(marshaller);
411411
}
412+
response.vendorExtensions.put("x-empty-response", response.baseType == null && response.message == null);
412413
response.vendorExtensions.put("x-is-default", response.code.equals("0"));
413414
}
414415
op.vendorExtensions.put("x-specific-marshallers", operationSpecificMarshallers);

modules/openapi-generator/src/main/resources/scala-akka-http-server/api.mustache

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package {{package}}
22

33
import akka.http.scaladsl.server.Directives._
44
import akka.http.scaladsl.server.Route
5+
import akka.http.scaladsl.model.StatusCodes
56
{{^pathMatcherPatterns.isEmpty}}import akka.http.scaladsl.server.{PathMatcher, PathMatcher1}
67
{{/pathMatcherPatterns.isEmpty}}
78
{{#hasMarshalling}}import akka.http.scaladsl.marshalling.ToEntityMarshaller
@@ -63,8 +64,9 @@ object {{classname}}Patterns {
6364
trait {{classname}}Service {
6465
6566
{{#operation}}
66-
{{#responses}} def {{operationId}}{{#vendorExtensions.x-is-default}}Default{{/vendorExtensions.x-is-default}}{{^vendorExtensions.x-is-default}}{{code}}{{/vendorExtensions.x-is-default}}{{#baseType}}({{#vendorExtensions.x-is-default}}statusCode: Int, {{/vendorExtensions.x-is-default}}response{{baseType}}{{containerType}}: {{dataType}}){{^isPrimitiveType}}(implicit toEntityMarshaller{{baseType}}{{containerType}}: ToEntityMarshaller[{{dataType}}]){{/isPrimitiveType}}{{/baseType}}{{^baseType}}{{#vendorExtensions.x-is-default}}(statusCode: Int){{/vendorExtensions.x-is-default}}{{/baseType}}: Route =
67-
complete(({{#vendorExtensions.x-is-default}}statusCode{{/vendorExtensions.x-is-default}}{{^vendorExtensions.x-is-default}}{{code}}{{/vendorExtensions.x-is-default}}, {{#baseType}}response{{baseType}}{{containerType}}{{/baseType}}{{^baseType}}"{{message}}"{{/baseType}}))
67+
{{#responses}} def {{operationId}}{{#vendorExtensions.x-is-default}}Default{{/vendorExtensions.x-is-default}}{{^vendorExtensions.x-is-default}}{{code}}{{/vendorExtensions.x-is-default}}{{#baseType}}({{#vendorExtensions.x-is-default}}statusCode: Int, {{/vendorExtensions.x-is-default}}response{{baseType}}{{containerType}}: {{dataType}}){{^isPrimitiveType}}(implicit toEntityMarshaller{{baseType}}{{containerType}}: ToEntityMarshaller[{{dataType}}]){{/isPrimitiveType}}{{/baseType}}{{^baseType}}{{#vendorExtensions.x-is-default}}(statusCode: Int){{/vendorExtensions.x-is-default}}{{/baseType}}: Route ={{#vendorExtensions.x-empty-response}}
68+
complete({{#vendorExtensions.x-is-default}}statusCode{{/vendorExtensions.x-is-default}}{{^vendorExtensions.x-is-default}}StatusCodes.getForKey({{code}}){{/vendorExtensions.x-is-default}}){{/vendorExtensions.x-empty-response}}{{^vendorExtensions.x-empty-response}}
69+
complete(({{#vendorExtensions.x-is-default}}statusCode{{/vendorExtensions.x-is-default}}{{^vendorExtensions.x-is-default}}{{code}}{{/vendorExtensions.x-is-default}}, {{#baseType}}response{{baseType}}{{containerType}}{{/baseType}}{{^baseType}}"{{message}}"{{/baseType}})){{/vendorExtensions.x-empty-response}}
6870
{{/responses}}
6971
/**
7072
{{#responses}} * {{#code}}Code: {{.}}{{/code}}{{#message}}, Message: {{.}}{{/message}}{{#dataType}}, DataType: {{.}}{{/dataType}}

samples/server/petstore/scala-akka-http-server/src/main/scala/org/openapitools/server/api/PetApi.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package org.openapitools.server.api
22

33
import akka.http.scaladsl.server.Directives._
44
import akka.http.scaladsl.server.Route
5+
import akka.http.scaladsl.model.StatusCodes
56
import akka.http.scaladsl.marshalling.ToEntityMarshaller
67
import akka.http.scaladsl.unmarshalling.FromEntityUnmarshaller
78
import akka.http.scaladsl.unmarshalling.FromStringUnmarshaller

samples/server/petstore/scala-akka-http-server/src/main/scala/org/openapitools/server/api/StoreApi.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package org.openapitools.server.api
22

33
import akka.http.scaladsl.server.Directives._
44
import akka.http.scaladsl.server.Route
5+
import akka.http.scaladsl.model.StatusCodes
56
import akka.http.scaladsl.marshalling.ToEntityMarshaller
67
import akka.http.scaladsl.unmarshalling.FromEntityUnmarshaller
78
import akka.http.scaladsl.unmarshalling.FromStringUnmarshaller

samples/server/petstore/scala-akka-http-server/src/main/scala/org/openapitools/server/api/UserApi.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package org.openapitools.server.api
22

33
import akka.http.scaladsl.server.Directives._
44
import akka.http.scaladsl.server.Route
5+
import akka.http.scaladsl.model.StatusCodes
56
import akka.http.scaladsl.marshalling.ToEntityMarshaller
67
import akka.http.scaladsl.unmarshalling.FromEntityUnmarshaller
78
import akka.http.scaladsl.unmarshalling.FromStringUnmarshaller

0 commit comments

Comments
 (0)