Skip to content

Fix MiskKotlin OpenApiGenerator types #21389

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

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,8 @@ public KotlinMiskServerCodegen() {
artifactId = "openapi-kotlin-misk-server";
artifactVersion = apiVersion;

typeMapping.put("File", "Response<ByteString>");

updateOption(CodegenConstants.API_PACKAGE, apiPackage);
updateOption(CodegenConstants.MODEL_PACKAGE, modelPackage);
additionalProperties.put(ROOT_PACKAGE, rootPackage);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ import {{javaxPackage}}.validation.constraints.NotNull
import {{javaxPackage}}.validation.constraints.Pattern
import {{javaxPackage}}.validation.constraints.Size
{{/useBeanValidation}}
{{#actionImports}}
import {{{.}}}
{{/actionImports}}
import misk.web.Delete
import misk.web.Description
import misk.web.Get
Expand All @@ -25,11 +28,13 @@ import misk.web.QueryParam
import misk.web.RequestBody
import misk.web.RequestContentType
import misk.web.RequestHeader
import misk.web.Response
import misk.web.ResponseContentType
import misk.web.actions.WebAction
import misk.web.interceptors.LogRequestResponse
import misk.web.mediatype.MediaTypes
{{#imports}}import {{import}}
{{#imports}}
import {{import}}
{{/imports}}

/**
Expand All @@ -38,18 +43,20 @@ import misk.web.mediatype.MediaTypes
{{#operations}}
@Singleton
class {{classname}}Action @Inject constructor(
) : WebAction {
) : {{actionParentClass}} {
{{#operation}}

@{{httpMethod}}("{{actionPathPrefix}}{{path}}")
@{{httpMethod}}("{{{actionPathPrefix}}}{{path}}")
@Description("{{{summary}}}"){{#hasConsumes}}
@RequestContentType({{#consumes}}{{{mediaType}}}{{^-last}}, {{/-last}}{{/consumes}}){{/hasConsumes}}{{#hasProduces}}
@ResponseContentType({{#produces}}{{{mediaType}}}{{^-last}}, {{/-last}}{{/produces}}){{/hasProduces}}
@LogRequestResponse(bodySampling = 1.0, errorBodySampling = 1.0)
{{{actionRequestContentType}}}({{#consumes}}{{{actionRequestContentTypePrefix}}}.{{{mediaType}}}{{^-last}}, {{/-last}}{{/consumes}}){{/hasConsumes}}{{#hasProduces}}
@ResponseContentType({{#produces}}MediaTypes.{{{mediaType}}}{{^-last}}, {{/-last}}{{/produces}}){{/hasProduces}}
{{#actionAnnotations}}
{{{.}}}
{{/actionAnnotations}}
fun {{operationId}}({{#allParams}}
{{>queryParams}}{{>pathParams}}{{>headerParams}}{{>cookieParams}}{{>bodyParams}}{{>formParams}}{{^-last}}, {{/-last}}{{/allParams}}){{#returnType}}: {{{returnType}}}{{/returnType}} {
TODO()
}
{{/operation}}
}
{{/operations}}
{{/operations}}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ import misk.web.PathParam
import misk.web.QueryParam
import misk.web.RequestBody
import misk.web.RequestHeader
{{#imports}}import {{import}}
{{#imports}}
import {{import}}
{{/imports}}

/**
Expand All @@ -36,4 +37,4 @@ class {{classname}}Impl @Inject constructor(
}
{{/operation}}
}
{{/operations}}
{{/operations}}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ import misk.web.PathParam
import misk.web.QueryParam
import misk.web.RequestBody
import misk.web.RequestHeader
{{#imports}}import {{import}}
{{#imports}}
import {{import}}
{{/imports}}

{{#operations}}
Expand All @@ -27,4 +28,4 @@ interface {{classname}} {
{{>queryParams}}{{>pathParams}}{{>headerParams}}{{>cookieParams}}{{>bodyParams}}{{>formParams}}{{^-last}}, {{/-last}}{{/allParams}}){{#returnType}}: {{{returnType}}}{{/returnType}} {
{{/operation}}
}
{{/operations}}
{{/operations}}
Original file line number Diff line number Diff line change
@@ -1,36 +1,40 @@
package {{package}}

import {{{testingModule}}}
import {{javaxPackage}}.inject.Inject
import misk.testing.MiskTest
import misk.testing.MiskTestModule
import org.junit.jupiter.api.Test

import misk.web.HttpCall
import misk.web.PathParam
import misk.web.QueryParam
import misk.web.RequestBody
import misk.web.RequestHeader

{{#imports}}import {{import}}
{{#imports}}
import {{import}}
{{/imports}}

@MiskTest(startService = true)
internal class {{classname}}Test {

@Suppress("unused")
@MiskTestModule
private val module = {{{testingModuleName}}}()

@Inject private lateinit var {{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}: {{classname}}Action
{{#operations}}
{{#operation}}

{{#operations}}
{{#operation}}
/**
* To test {{classname}}Action.{{operationId}}
*/
@Test
fun `should handle {{operationId}}`() {
{{#allParams}}
{{#allParams}}
val {{{paramName}}} = TODO()
{{/allParams}}
{{/allParams}}
val response{{#returnType}}: {{{returnType}}}{{/returnType}} = {{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}.{{operationId}}({{#allParams}}{{{paramName}}}{{^-last}}, {{/-last}}{{/allParams}})
}

{{/operation}}
{{/operations}}
}
{{/operation}}
{{/operations}}
}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{{^isFile}}{{{dataType}}}{{^required}}{{^defaultValue}}?{{/defaultValue}}{{/required}}{{/isFile}}{{#isFile}}{{#isArray}}Array<{{/isArray}}{{#isArray}}>{{/isArray}}{{^isArray}}{{^required}}{{/required}}{{/isArray}}{{/isFile}}
{{^isFile}}{{{dataType}}}{{^required}}{{^defaultValue}}?{{/defaultValue}}{{/required}}{{/isFile}}{{#isFile}}{{#isArray}}List<{{/isArray}}{{#isArray}}>{{/isArray}}{{^isArray}}{{^required}}{{/required}}{{/isArray}}{{/isFile}}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import misk.web.QueryParam
import misk.web.RequestBody
import misk.web.RequestContentType
import misk.web.RequestHeader
import misk.web.Response
import misk.web.ResponseContentType
import misk.web.actions.WebAction
import misk.web.interceptors.LogRequestResponse
Expand All @@ -43,7 +44,8 @@ class PetApiAction @Inject constructor(
@ResponseContentType(MediaTypes.APPLICATION_XML, MediaTypes.APPLICATION_JSON)
@LogRequestResponse(bodySampling = 1.0, errorBodySampling = 1.0)
fun addPet(
@Valid @RequestBody pet: Pet): Pet {
@Valid @RequestBody pet: Pet
): Pet {
TODO()
}

Expand All @@ -52,7 +54,8 @@ class PetApiAction @Inject constructor(
@LogRequestResponse(bodySampling = 1.0, errorBodySampling = 1.0)
fun deletePet(
@PathParam("petId") petId: kotlin.Long,
@RequestHeader(value = "api_key") apiKey: kotlin.String?) {
@RequestHeader(value = "api_key") apiKey: kotlin.String?
): Response<Unit> {
TODO()
}

Expand All @@ -61,7 +64,8 @@ class PetApiAction @Inject constructor(
@ResponseContentType(MediaTypes.APPLICATION_XML, MediaTypes.APPLICATION_JSON)
@LogRequestResponse(bodySampling = 1.0, errorBodySampling = 1.0)
fun findPetsByStatus(
@QueryParam(value = "status") status: kotlin.Array<kotlin.String>): kotlin.Array<Pet> {
@QueryParam(value = "status") status: kotlin.Array<kotlin.String>
): kotlin.Array<Pet> {
TODO()
}

Expand All @@ -70,7 +74,8 @@ class PetApiAction @Inject constructor(
@ResponseContentType(MediaTypes.APPLICATION_XML, MediaTypes.APPLICATION_JSON)
@LogRequestResponse(bodySampling = 1.0, errorBodySampling = 1.0)
fun findPetsByTags(
@QueryParam(value = "tags") tags: kotlin.Array<kotlin.String>): kotlin.Array<Pet> {
@QueryParam(value = "tags") tags: kotlin.Array<kotlin.String>
): kotlin.Array<Pet> {
TODO()
}

Expand All @@ -79,7 +84,8 @@ class PetApiAction @Inject constructor(
@ResponseContentType(MediaTypes.APPLICATION_XML, MediaTypes.APPLICATION_JSON)
@LogRequestResponse(bodySampling = 1.0, errorBodySampling = 1.0)
fun getPetById(
@PathParam("petId") petId: kotlin.Long): Pet {
@PathParam("petId") petId: kotlin.Long
): Pet {
TODO()
}

Expand All @@ -89,7 +95,8 @@ class PetApiAction @Inject constructor(
@ResponseContentType(MediaTypes.APPLICATION_XML, MediaTypes.APPLICATION_JSON)
@LogRequestResponse(bodySampling = 1.0, errorBodySampling = 1.0)
fun updatePet(
@Valid @RequestBody pet: Pet): Pet {
@Valid @RequestBody pet: Pet
): Pet {
TODO()
}

Expand All @@ -100,7 +107,8 @@ class PetApiAction @Inject constructor(
fun updatePetWithForm(
@PathParam("petId") petId: kotlin.Long,
@QueryParam(value = "name") name: kotlin.String? ,
@QueryParam(value = "status") status: kotlin.String? ) {
@QueryParam(value = "status") status: kotlin.String?
): Response<Unit> {
TODO()
}

Expand All @@ -112,7 +120,8 @@ class PetApiAction @Inject constructor(
fun uploadFile(
@PathParam("petId") petId: kotlin.Long,
@QueryParam(value = "additionalMetadata") additionalMetadata: kotlin.String? ,
@Valid file: HttpCall): ModelApiResponse {
@Valid file: HttpCall
): ModelApiResponse {
TODO()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import misk.web.QueryParam
import misk.web.RequestBody
import misk.web.RequestContentType
import misk.web.RequestHeader
import misk.web.Response
import misk.web.ResponseContentType
import misk.web.actions.WebAction
import misk.web.interceptors.LogRequestResponse
Expand All @@ -40,15 +41,17 @@ class StoreApiAction @Inject constructor(
@Description("Delete purchase order by ID")
@LogRequestResponse(bodySampling = 1.0, errorBodySampling = 1.0)
fun deleteOrder(
@PathParam("orderId") orderId: kotlin.String) {
@PathParam("orderId") orderId: kotlin.String
): Response<Unit> {
TODO()
}

@Get("samplePrefix/store/inventory")
@Description("Returns pet inventories by status")
@ResponseContentType(MediaTypes.APPLICATION_JSON)
@LogRequestResponse(bodySampling = 1.0, errorBodySampling = 1.0)
fun getInventory(): kotlin.collections.Map<kotlin.String, kotlin.Int> {
fun getInventory(
): kotlin.collections.Map<kotlin.String, kotlin.Int> {
TODO()
}

Expand All @@ -57,7 +60,8 @@ class StoreApiAction @Inject constructor(
@ResponseContentType(MediaTypes.APPLICATION_XML, MediaTypes.APPLICATION_JSON)
@LogRequestResponse(bodySampling = 1.0, errorBodySampling = 1.0)
fun getOrderById(
@Min(1L) @Max(5L) @PathParam("orderId") orderId: kotlin.Long): Order {
@Min(1L) @Max(5L) @PathParam("orderId") orderId: kotlin.Long
): Order {
TODO()
}

Expand All @@ -67,7 +71,8 @@ class StoreApiAction @Inject constructor(
@ResponseContentType(MediaTypes.APPLICATION_XML, MediaTypes.APPLICATION_JSON)
@LogRequestResponse(bodySampling = 1.0, errorBodySampling = 1.0)
fun placeOrder(
@Valid @RequestBody order: Order): Order {
@Valid @RequestBody order: Order
): Order {
TODO()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import misk.web.QueryParam
import misk.web.RequestBody
import misk.web.RequestContentType
import misk.web.RequestHeader
import misk.web.Response
import misk.web.ResponseContentType
import misk.web.actions.WebAction
import misk.web.interceptors.LogRequestResponse
Expand All @@ -41,7 +42,8 @@ class UserApiAction @Inject constructor(
@RequestContentType(MediaTypes.APPLICATION_JSON)
@LogRequestResponse(bodySampling = 1.0, errorBodySampling = 1.0)
fun createUser(
@Valid @RequestBody user: User) {
@Valid @RequestBody user: User
): Response<Unit> {
TODO()
}

Expand All @@ -50,7 +52,8 @@ class UserApiAction @Inject constructor(
@RequestContentType(MediaTypes.APPLICATION_JSON)
@LogRequestResponse(bodySampling = 1.0, errorBodySampling = 1.0)
fun createUsersWithArrayInput(
@Valid @RequestBody user: kotlin.Array<User>) {
@Valid @RequestBody user: kotlin.Array<User>
): Response<Unit> {
TODO()
}

Expand All @@ -59,15 +62,17 @@ class UserApiAction @Inject constructor(
@RequestContentType(MediaTypes.APPLICATION_JSON)
@LogRequestResponse(bodySampling = 1.0, errorBodySampling = 1.0)
fun createUsersWithListInput(
@Valid @RequestBody user: kotlin.Array<User>) {
@Valid @RequestBody user: kotlin.Array<User>
): Response<Unit> {
TODO()
}

@Delete("samplePrefix/user/{username}")
@Description("Delete user")
@LogRequestResponse(bodySampling = 1.0, errorBodySampling = 1.0)
fun deleteUser(
@PathParam("username") username: kotlin.String) {
@PathParam("username") username: kotlin.String
): Response<Unit> {
TODO()
}

Expand All @@ -76,7 +81,8 @@ class UserApiAction @Inject constructor(
@ResponseContentType(MediaTypes.APPLICATION_XML, MediaTypes.APPLICATION_JSON)
@LogRequestResponse(bodySampling = 1.0, errorBodySampling = 1.0)
fun getUserByName(
@PathParam("username") username: kotlin.String): User {
@PathParam("username") username: kotlin.String
): User {
TODO()
}

Expand All @@ -86,14 +92,16 @@ class UserApiAction @Inject constructor(
@LogRequestResponse(bodySampling = 1.0, errorBodySampling = 1.0)
fun loginUser(
@QueryParam(value = "username") username: kotlin.String,
@QueryParam(value = "password") password: kotlin.String): kotlin.String {
@QueryParam(value = "password") password: kotlin.String
): kotlin.String {
TODO()
}

@Get("samplePrefix/user/logout")
@Description("Logs out current logged in user session")
@LogRequestResponse(bodySampling = 1.0, errorBodySampling = 1.0)
fun logoutUser() {
fun logoutUser(
): Response<Unit> {
TODO()
}

Expand All @@ -103,7 +111,8 @@ class UserApiAction @Inject constructor(
@LogRequestResponse(bodySampling = 1.0, errorBodySampling = 1.0)
fun updateUser(
@PathParam("username") username: kotlin.String,
@Valid @RequestBody user: User) {
@Valid @RequestBody user: User
): Response<Unit> {
TODO()
}
}
Loading