From 7eb2be9c996ef730da03fe43d9235c55261abc50 Mon Sep 17 00:00:00 2001 From: fj-roman Date: Tue, 7 May 2019 15:37:32 +0200 Subject: [PATCH] [Kotlin] add apiSuffix configuration (#2690) * add apiSuffix configuration * Add default value for Api suffix * remove overriding method toApiName * refactor the global option apiSuffix to kotlin specific feature * add missing Option for apiSuffix * extend readme.md for apiSuffix configuration * update doc * add testcase --- docs/generators/kotlin-server.md | 1 + docs/generators/kotlin-spring.md | 1 + docs/generators/kotlin.md | 1 + .../openapitools/codegen/CodegenConstants.java | 3 +++ .../codegen/languages/AbstractJavaCodegen.java | 8 -------- .../languages/AbstractKotlinCodegen.java | 18 ++++++++++++++++++ .../kotlin/AbstractKotlinCodegenTest.java | 13 +++++++++++++ 7 files changed, 37 insertions(+), 8 deletions(-) diff --git a/docs/generators/kotlin-server.md b/docs/generators/kotlin-server.md index 07be315a0dc..e9f60d115b3 100644 --- a/docs/generators/kotlin-server.md +++ b/docs/generators/kotlin-server.md @@ -9,6 +9,7 @@ sidebar_label: kotlin-server | ------ | ----------- | ------ | ------- | |sourceFolder|source folder for generated code| |src/main/kotlin| |packageName|Generated artifact package name.| |org.openapitools| +|apiSuffix|suffix for api classes| |Api| |groupId|Generated artifact package's organization (i.e. maven groupId).| |org.openapitools| |artifactId|Generated artifact id (name of jar).| |null| |artifactVersion|Generated artifact's package version.| |1.0.0| diff --git a/docs/generators/kotlin-spring.md b/docs/generators/kotlin-spring.md index 89ec5f81e79..1e7f3bede7f 100644 --- a/docs/generators/kotlin-spring.md +++ b/docs/generators/kotlin-spring.md @@ -9,6 +9,7 @@ sidebar_label: kotlin-spring | ------ | ----------- | ------ | ------- | |sourceFolder|source folder for generated code| |src/main/kotlin| |packageName|Generated artifact package name.| |org.openapitools| +|apiSuffix|suffix for api classes| |Api| |groupId|Generated artifact package's organization (i.e. maven groupId).| |org.openapitools| |artifactId|Generated artifact id (name of jar).| |null| |artifactVersion|Generated artifact's package version.| |1.0.0| diff --git a/docs/generators/kotlin.md b/docs/generators/kotlin.md index 55ae9f22bce..d6cbf2f5a69 100644 --- a/docs/generators/kotlin.md +++ b/docs/generators/kotlin.md @@ -9,6 +9,7 @@ sidebar_label: kotlin | ------ | ----------- | ------ | ------- | |sourceFolder|source folder for generated code| |src/main/kotlin| |packageName|Generated artifact package name.| |org.openapitools| +|apiSuffix|suffix for api classes| |Api| |groupId|Generated artifact package's organization (i.e. maven groupId).| |org.openapitools| |artifactId|Generated artifact id (name of jar).| |null| |artifactVersion|Generated artifact's package version.| |1.0.0| diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java index ee6ba591811..75fcb1cba68 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConstants.java @@ -37,6 +37,9 @@ public class CodegenConstants { public static final String API_PACKAGE = "apiPackage"; public static final String API_PACKAGE_DESC = "package for generated api classes"; + public static final String API_SUFFIX = "apiSuffix"; + public static final String API_SUFFIX_DESC = "suffix for api classes"; + public static final String MODEL_PACKAGE = "modelPackage"; public static final String MODEL_PACKAGE_DESC = "package for generated models"; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java index 4c940157bf3..27eedbaa833 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java @@ -584,14 +584,6 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code return toModelName(name) + "Test"; } - @Override - public String toApiName(String name) { - if (name.length() == 0) { - return "DefaultApi"; - } - return camelize(name) + "Api"; - } - @Override public String toApiFilename(String name) { return toApiName(name); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java index 8c442b14969..0a26de4049d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java @@ -41,6 +41,7 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co protected String artifactVersion = "1.0.0"; protected String groupId = "org.openapitools"; protected String packageName = "org.openapitools"; + protected String apiSuffix = "Api"; protected String sourceFolder = "src/main/kotlin"; @@ -195,6 +196,7 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co cliOptions.clear(); addOption(CodegenConstants.SOURCE_FOLDER, CodegenConstants.SOURCE_FOLDER_DESC, sourceFolder); addOption(CodegenConstants.PACKAGE_NAME, "Generated artifact package name.", packageName); + addOption(CodegenConstants.API_SUFFIX, CodegenConstants.API_SUFFIX_DESC, apiSuffix); addOption(CodegenConstants.GROUP_ID, "Generated artifact package's organization (i.e. maven groupId).", groupId); addOption(CodegenConstants.ARTIFACT_ID, "Generated artifact id (name of jar).", artifactId); addOption(CodegenConstants.ARTIFACT_VERSION, "Generated artifact's package version.", artifactVersion); @@ -337,6 +339,10 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co additionalProperties.put(CodegenConstants.PACKAGE_NAME, packageName); } + if (additionalProperties.containsKey(CodegenConstants.API_SUFFIX)) { + this.setApiSuffix((String) additionalProperties.get(CodegenConstants.API_SUFFIX)); + } + if (additionalProperties.containsKey(CodegenConstants.ARTIFACT_ID)) { this.setArtifactId((String) additionalProperties.get(CodegenConstants.ARTIFACT_ID)); } else { @@ -396,6 +402,10 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co this.packageName = packageName; } + public void setApiSuffix(String apiSuffix) { + this.apiSuffix = apiSuffix; + } + public void setSourceFolder(String sourceFolder) { this.sourceFolder = sourceFolder; } @@ -463,6 +473,14 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co return super.toInstantiationType(p); } + @Override + public String toApiName(String name) { + if (name.length() == 0) { + return "DefaultApi"; + } + return (this.apiSuffix.isEmpty() ? camelize(name) : camelize(name) + this.apiSuffix); + } + /** * Return the fully-qualified "Model" name for import * diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/AbstractKotlinCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/AbstractKotlinCodegenTest.java index 20513e53466..1946ecc9500 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/AbstractKotlinCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/AbstractKotlinCodegenTest.java @@ -123,4 +123,17 @@ public class AbstractKotlinCodegenTest { assertEquals(codegen.toVarName("USER123NAME"), "USER123NAME"); } + @Test + public void convertApiNameWithEmptySuffix() { + assertEquals(codegen.toApiName("Fake"), "FakeApi"); + assertEquals(codegen.toApiName(""), "DefaultApi"); + } + + @Test + public void convertApiNameWithSuffix() { + codegen.setApiSuffix("Test"); + assertEquals(codegen.toApiName("Fake"), "FakeTest"); + assertEquals(codegen.toApiName(""), "DefaultApi"); + } + } \ No newline at end of file