[kotlin-server][ktor2] fix isKtor, update samples (#20327)

* fix isKtor, update samples

* fi dockerfile

* fix dataclass

* add new files

* fix template

* regenerate samples
This commit is contained in:
William Cheng 2024-12-14 16:11:57 +08:00 committed by GitHub
parent f766f445da
commit b16144094d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 83 additions and 9 deletions

View File

@ -288,13 +288,13 @@ public class KotlinServerCodegen extends AbstractKotlinCodegen implements BeanVa
supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")); supportingFiles.add(new SupportingFile("README.mustache", "", "README.md"));
if (isKtor()) { if (isKtor2Or3()) {
supportingFiles.add(new SupportingFile("Dockerfile.mustache", "", "Dockerfile")); supportingFiles.add(new SupportingFile("Dockerfile.mustache", "", "Dockerfile"));
} }
String gradleBuildFile = "build.gradle"; String gradleBuildFile = "build.gradle";
if (isJavalin() || isKtor()) { if (isJavalin() || isKtor2Or3()) {
gradleBuildFile = "build.gradle.kts"; gradleBuildFile = "build.gradle.kts";
} }
@ -302,7 +302,7 @@ public class KotlinServerCodegen extends AbstractKotlinCodegen implements BeanVa
supportingFiles.add(new SupportingFile("settings.gradle.mustache", "", "settings.gradle")); supportingFiles.add(new SupportingFile("settings.gradle.mustache", "", "settings.gradle"));
supportingFiles.add(new SupportingFile("gradle.properties", "", "gradle.properties")); supportingFiles.add(new SupportingFile("gradle.properties", "", "gradle.properties"));
if (isKtor()) { if (isKtor2Or3()) {
additionalProperties.put(Constants.IS_KTOR, true); additionalProperties.put(Constants.IS_KTOR, true);
supportingFiles.add(new SupportingFile("AppMain.kt.mustache", packageFolder, "AppMain.kt")); supportingFiles.add(new SupportingFile("AppMain.kt.mustache", packageFolder, "AppMain.kt"));
@ -445,7 +445,20 @@ public class KotlinServerCodegen extends AbstractKotlinCodegen implements BeanVa
return Constants.JAVALIN5.equals(library) || Constants.JAVALIN6.equals(library); return Constants.JAVALIN5.equals(library) || Constants.JAVALIN6.equals(library);
} }
private boolean isKtor() { private boolean isKtor2Or3() {
return Constants.KTOR.equals(library) || Constants.KTOR2.equals(library); return Constants.KTOR.equals(library) || Constants.KTOR2.equals(library);
} }
/**
* Returns true if latest version of ktor is used.
*
* @return true if latest veresion of ktor is used.
*/
private boolean isKtor() {
return Constants.KTOR.equals(library);
}
private boolean isKtor2() {
return Constants.KTOR2.equals(library);
}
} }

View File

@ -1,5 +1,5 @@
{{#hasAuthMethods}} {{#hasAuthMethods}}
{{>libraries/ktor/_principal}} {{>libraries/ktor2/_principal}}
{{#examples}} {{#examples}}
{{#-first}} {{#-first}}
{{#lambda.indented}}{{>_response}}{{/lambda.indented}} {{#lambda.indented}}{{>_response}}{{/lambda.indented}}
@ -12,10 +12,10 @@ call.respond(HttpStatusCode.NotImplemented)
{{^hasAuthMethods}} {{^hasAuthMethods}}
{{#examples}} {{#examples}}
{{#-first}} {{#-first}}
{{>libraries/ktor/_response}} {{>libraries/ktor2/_response}}
{{/-first}} {{/-first}}
{{/examples}} {{/examples}}
{{^examples}} {{^examples}}
call.respond(HttpStatusCode.NotImplemented) call.respond(HttpStatusCode.NotImplemented)
{{/examples}} {{/examples}}
{{/hasAuthMethods}} {{/hasAuthMethods}}

View File

@ -35,13 +35,13 @@ fun Route.{{classname}}() {
{{^featureResources}} {{^featureResources}}
route("{{path}}") { route("{{path}}") {
{{#lambda.lowercase}}{{httpMethod}}{{/lambda.lowercase}} { {{#lambda.lowercase}}{{httpMethod}}{{/lambda.lowercase}} {
{{#lambda.indented_12}}{{>libraries/ktor/_api_body}}{{/lambda.indented_12}} {{#lambda.indented_12}}{{>libraries/ktor2/_api_body}}{{/lambda.indented_12}}
} }
} }
{{/featureResources}} {{/featureResources}}
{{#featureResources}} {{#featureResources}}
{{#lambda.lowercase}}{{httpMethod}}{{/lambda.lowercase}}<Paths.{{operationId}}> { {{#lambda.lowercase}}{{httpMethod}}{{/lambda.lowercase}}<Paths.{{operationId}}> {
{{#lambda.indented_8}}{{>libraries/ktor/_api_body}}{{/lambda.indented_8}} {{#lambda.indented_8}}{{>libraries/ktor2/_api_body}}{{/lambda.indented_8}}
} }
{{/featureResources}} {{/featureResources}}
{{#hasAuthMethods}} {{#hasAuthMethods}}

View File

@ -0,0 +1,52 @@
{{#parcelizeModels}}
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
{{/parcelizeModels}}
{{#serializableModel}}
import java.io.Serializable
{{/serializableModel}}
/**
* {{{description}}}
{{#vars}}
* @param {{{name}}} {{{description}}}
{{/vars}}
*/
{{#parcelizeModels}}
@Parcelize
{{/parcelizeModels}}
{{#hasVars}}data {{/hasVars}}class {{classname}}(
{{#requiredVars}}
{{>data_class_req_var}}{{^-last}},
{{/-last}}{{/requiredVars}}{{#hasRequired}}{{#hasOptional}},
{{/hasOptional}}{{/hasRequired}}{{#optionalVars}}{{>data_class_opt_var}}{{^-last}},
{{/-last}}{{/optionalVars}}
) {{^serializableModel}}{{#parcelizeModels}} : Parcelable{{/parcelizeModels}}{{/serializableModel}}{{^parcelizeModels}}{{#serializableModel}}: Serializable {{/serializableModel}}{{/parcelizeModels}}{{#parcelizeModels}}{{#serializableModel}} : Parcelable, Serializable {{/serializableModel}}{{/parcelizeModels}}
{{#vendorExtensions.x-has-data-class-body}}
{
{{/vendorExtensions.x-has-data-class-body}}
{{#serializableModel}}
companion object {
private const val serialVersionUID: Long = 123
}
{{/serializableModel}}
{{#hasEnums}}
{{#vars}}
{{#isEnum}}
/**
* {{{description}}}
* Values: {{#allowableValues}}{{#enumVars}}{{&name}}{{^-last}},{{/-last}}{{/enumVars}}{{/allowableValues}}
*/
enum class {{{nameInPascalCase}}}(val value: {{{dataType}}}){
{{#allowableValues}}
{{#enumVars}}
{{&name}}({{{value}}}){{^-last}},{{/-last}}{{#-last}};{{/-last}}
{{/enumVars}}
{{/allowableValues}}
}
{{/isEnum}}
{{/vars}}
{{/hasEnums}}
{{#vendorExtensions.x-has-data-class-body}}
}
{{/vendorExtensions.x-has-data-class-body}}

View File

@ -0,0 +1,4 @@
{{#description}}
/* {{{.}}} */
{{/description}}
{{>modelMutable}} {{{name}}}: {{#isEnum}}{{{classname}}}.{{{nameInPascalCase}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}? = {{{defaultValue}}}{{^defaultValue}}null{{/defaultValue}}

View File

@ -0,0 +1,5 @@
{{#description}}
/* {{{.}}} */
{{/description}}
{{! Note that required properties may be nullable according to the OpenAPI specification. }}
{{>modelMutable}} {{{name}}}: {{#isEnum}}{{{classname}}}.{{{nameInPascalCase}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{#isNullable}}?{{/isNullable}}{{#defaultValue}} = {{^isNumber}}{{{defaultValue}}}{{/isNumber}}{{#isNumber}}{{{dataType}}}("{{{defaultValue}}}"){{/isNumber}}{{/defaultValue}}