forked from loafle/openapi-generator-original
[kotlin-server] add support for jakarta ee namespace (#15593)
This commit is contained in:
@@ -44,6 +44,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|
||||
|sourceFolder|source folder for generated code| |src/main/kotlin|
|
||||
|useBeanValidation|Use BeanValidation API annotations. This option is currently supported only when using jaxrs-spec library.| |false|
|
||||
|useCoroutines|Whether to use the Coroutines. This option is currently supported only when using jaxrs-spec library.| |false|
|
||||
|useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false|
|
||||
|
||||
## IMPORT MAPPING
|
||||
|
||||
|
||||
@@ -133,6 +133,7 @@ public class KotlinServerCodegen extends AbstractKotlinCodegen implements BeanVa
|
||||
cliOptions.add(CliOption.newBoolean(USE_BEANVALIDATION, "Use BeanValidation API annotations. This option is currently supported only when using jaxrs-spec library.", useBeanValidation));
|
||||
cliOptions.add(CliOption.newBoolean(USE_COROUTINES, "Whether to use the Coroutines. This option is currently supported only when using jaxrs-spec library.", useCoroutines));
|
||||
cliOptions.add(CliOption.newBoolean(RETURN_RESPONSE, "Whether generate API interface should return javax.ws.rs.core.Response instead of a deserialized entity. Only useful if interfaceOnly is true. This option is currently supported only when using jaxrs-spec library.").defaultValue(String.valueOf(returnResponse)));
|
||||
cliOptions.add(CliOption.newBoolean(USE_JAKARTA_EE, "whether to use Jakarta EE namespace instead of javax", useJakartaEe));
|
||||
}
|
||||
|
||||
public Boolean getAutoHeadFeatureEnabled() {
|
||||
|
||||
@@ -3,16 +3,16 @@ package {{package}};
|
||||
{{#imports}}import {{import}}
|
||||
{{/imports}}
|
||||
|
||||
import javax.ws.rs.*
|
||||
import javax.ws.rs.core.Response
|
||||
import {{javaxPackage}}.ws.rs.*
|
||||
import {{javaxPackage}}.ws.rs.core.Response
|
||||
|
||||
{{#useSwaggerAnnotations}}
|
||||
import io.swagger.annotations.*
|
||||
{{/useSwaggerAnnotations}}
|
||||
|
||||
import java.io.InputStream
|
||||
{{#useBeanValidation}}import javax.validation.constraints.*
|
||||
import javax.validation.Valid{{/useBeanValidation}}
|
||||
{{#useBeanValidation}}import {{javaxPackage}}.validation.constraints.*
|
||||
import {{javaxPackage}}.validation.Valid{{/useBeanValidation}}
|
||||
|
||||
{{#useSwaggerAnnotations}}
|
||||
@Api(description = "the {{{baseName}}} API"){{/useSwaggerAnnotations}}{{#hasConsumes}}
|
||||
|
||||
@@ -8,9 +8,15 @@ wrapper {
|
||||
|
||||
buildscript {
|
||||
ext.kotlin_version = "1.4.32"
|
||||
ext.jakarta_ws_rs_version = "2.1.6"
|
||||
ext.swagger_annotations_version = "1.5.3"
|
||||
{{#useJakartaEe}}
|
||||
ext.jakarta_annotations_version = "2.1.1"
|
||||
ext.jakarta_ws_rs_version = "3.1.0"
|
||||
{{/useJakartaEe}}
|
||||
{{^useJakartaEe}}
|
||||
ext.jakarta_annotations_version = "1.3.5"
|
||||
ext.jakarta_ws_rs_version = "2.1.6"
|
||||
{{/useJakartaEe}}
|
||||
ext.jackson_version = "2.9.9"
|
||||
{{#useBeanValidation}}
|
||||
ext.beanvalidation_version = "2.0.2"
|
||||
|
||||
@@ -1 +1 @@
|
||||
@javax.annotation.Generated(value = arrayOf("{{generatorClass}}"){{^hideGenerationTimestamp}}, date = "{{generatedDate}}"{{/hideGenerationTimestamp}})
|
||||
@{{javaxPackage}}.annotation.Generated(value = arrayOf("{{generatorClass}}"){{^hideGenerationTimestamp}}, date = "{{generatedDate}}"{{/hideGenerationTimestamp}})
|
||||
@@ -4,8 +4,8 @@ package {{modelPackage}}
|
||||
{{#imports}}import {{import}}
|
||||
{{/imports}}
|
||||
{{#useBeanValidation}}
|
||||
import javax.validation.constraints.*
|
||||
import javax.validation.Valid
|
||||
import {{javaxPackage}}.validation.constraints.*
|
||||
import {{javaxPackage}}.validation.Valid
|
||||
{{/useBeanValidation}}
|
||||
{{#models}}
|
||||
{{#model}}
|
||||
|
||||
@@ -320,4 +320,18 @@ public class AbstractKotlinCodegenTest {
|
||||
.fromModel("MapSchema", mapSchema);
|
||||
Assert.assertTrue(mapSchemaModel.isMap);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handleUseJakartaEeTrue() {
|
||||
codegen.additionalProperties().put("useJakartaEe", true);
|
||||
codegen.processOpts();
|
||||
assertEquals(codegen.additionalProperties().get("javaxPackage"), "jakarta");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handleUseJakartaEeFalse() {
|
||||
codegen.additionalProperties().put("useJakartaEe", false);
|
||||
codegen.processOpts();
|
||||
assertEquals(codegen.additionalProperties().get("javaxPackage"), "javax");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,167 @@
|
||||
package org.openapitools.codegen.kotlin;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.openapitools.codegen.ClientOptInput;
|
||||
import org.openapitools.codegen.DefaultGenerator;
|
||||
import org.openapitools.codegen.TestUtils;
|
||||
import org.openapitools.codegen.languages.KotlinServerCodegen;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
|
||||
import static org.openapitools.codegen.CodegenConstants.LIBRARY;
|
||||
import static org.openapitools.codegen.languages.AbstractKotlinCodegen.USE_JAKARTA_EE;
|
||||
import static org.openapitools.codegen.languages.KotlinServerCodegen.Constants.JAXRS_SPEC;
|
||||
import static org.openapitools.codegen.TestUtils.assertFileContains;
|
||||
import static org.openapitools.codegen.TestUtils.assertFileNotContains;
|
||||
import static org.openapitools.codegen.languages.features.BeanValidationFeatures.USE_BEANVALIDATION;
|
||||
|
||||
public class KotlinServerCodegenTest {
|
||||
|
||||
@Test
|
||||
public void javaxImports() throws IOException {
|
||||
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
|
||||
output.deleteOnExit();
|
||||
|
||||
KotlinServerCodegen codegen = new KotlinServerCodegen();
|
||||
codegen.setOutputDir(output.getAbsolutePath());
|
||||
codegen.additionalProperties().put(LIBRARY, JAXRS_SPEC);
|
||||
|
||||
new DefaultGenerator().opts(new ClientOptInput()
|
||||
.openAPI(TestUtils.parseSpec("src/test/resources/3_0/petstore.yaml"))
|
||||
.config(codegen))
|
||||
.generate();
|
||||
|
||||
String outputPath = output.getAbsolutePath() + "/src/main/kotlin/org/openapitools/server";
|
||||
Path petApi = Paths.get(outputPath + "/apis/PetApi.kt");
|
||||
assertFileNotContains(
|
||||
petApi,
|
||||
"import jakarta.ws.rs.*",
|
||||
"import jakarta.ws.rs.core.Response",
|
||||
"@jakarta.annotation.Generated(value = arrayOf(\"org.openapitools.codegen.languages.KotlinServerCodegen\"))"
|
||||
);
|
||||
assertFileContains(
|
||||
petApi,
|
||||
"import javax.ws.rs.*",
|
||||
"import javax.ws.rs.core.Response",
|
||||
"@javax.annotation.Generated(value = arrayOf(\"org.openapitools.codegen.languages.KotlinServerCodegen\"))"
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void jakartaEeImports() throws IOException {
|
||||
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
|
||||
output.deleteOnExit();
|
||||
|
||||
KotlinServerCodegen codegen = new KotlinServerCodegen();
|
||||
codegen.setOutputDir(output.getAbsolutePath());
|
||||
codegen.additionalProperties().put(USE_JAKARTA_EE, true);
|
||||
codegen.additionalProperties().put(LIBRARY, JAXRS_SPEC);
|
||||
|
||||
new DefaultGenerator().opts(new ClientOptInput()
|
||||
.openAPI(TestUtils.parseSpec("src/test/resources/3_0/petstore.yaml"))
|
||||
.config(codegen))
|
||||
.generate();
|
||||
|
||||
String outputPath = output.getAbsolutePath() + "/src/main/kotlin/org/openapitools/server";
|
||||
Path petApi = Paths.get(outputPath + "/apis/PetApi.kt");
|
||||
assertFileContains(
|
||||
petApi,
|
||||
"import jakarta.ws.rs.*",
|
||||
"import jakarta.ws.rs.core.Response",
|
||||
"@jakarta.annotation.Generated(value = arrayOf(\"org.openapitools.codegen.languages.KotlinServerCodegen\"))"
|
||||
);
|
||||
assertFileNotContains(
|
||||
petApi,
|
||||
"import javax.ws.rs.*",
|
||||
"import javax.ws.rs.core.Response",
|
||||
"@javax.annotation.Generated(value = arrayOf(\"org.openapitools.codegen.languages.KotlinServerCodegen\"))"
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void beanValidationJavaxImports() throws IOException {
|
||||
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
|
||||
output.deleteOnExit();
|
||||
|
||||
KotlinServerCodegen codegen = new KotlinServerCodegen();
|
||||
codegen.setOutputDir(output.getAbsolutePath());
|
||||
codegen.additionalProperties().put(LIBRARY, JAXRS_SPEC);
|
||||
codegen.additionalProperties().put(USE_BEANVALIDATION, true);
|
||||
|
||||
new DefaultGenerator().opts(new ClientOptInput()
|
||||
.openAPI(TestUtils.parseSpec("src/test/resources/3_0/petstore.yaml"))
|
||||
.config(codegen))
|
||||
.generate();
|
||||
|
||||
String outputPath = output.getAbsolutePath() + "/src/main/kotlin/org/openapitools/server";
|
||||
Path petApi = Paths.get(outputPath + "/apis/PetApi.kt");
|
||||
assertFileNotContains(
|
||||
petApi,
|
||||
"import jakarta.validation.Valid",
|
||||
"import jakarta.validation.Valid"
|
||||
);
|
||||
assertFileContains(
|
||||
petApi,
|
||||
"import javax.validation.constraints.*",
|
||||
"import javax.validation.Valid"
|
||||
);
|
||||
|
||||
Path petModel = Paths.get(outputPath + "/models/Pet.kt");
|
||||
assertFileNotContains(
|
||||
petApi,
|
||||
"import jakarta.validation.Valid",
|
||||
"import jakarta.validation.Valid"
|
||||
);
|
||||
assertFileContains(
|
||||
petApi,
|
||||
"import javax.validation.constraints.*",
|
||||
"import javax.validation.Valid"
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void beanValidationJakartaEeImports() throws IOException {
|
||||
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
|
||||
output.deleteOnExit();
|
||||
|
||||
KotlinServerCodegen codegen = new KotlinServerCodegen();
|
||||
codegen.setOutputDir(output.getAbsolutePath());
|
||||
codegen.additionalProperties().put(USE_JAKARTA_EE, true);
|
||||
codegen.additionalProperties().put(LIBRARY, JAXRS_SPEC);
|
||||
codegen.additionalProperties().put(USE_BEANVALIDATION, true);
|
||||
|
||||
new DefaultGenerator().opts(new ClientOptInput()
|
||||
.openAPI(TestUtils.parseSpec("src/test/resources/3_0/petstore.yaml"))
|
||||
.config(codegen))
|
||||
.generate();
|
||||
|
||||
String outputPath = output.getAbsolutePath() + "/src/main/kotlin/org/openapitools/server";
|
||||
Path petApi = Paths.get(outputPath + "/apis/PetApi.kt");
|
||||
assertFileContains(
|
||||
petApi,
|
||||
"import jakarta.validation.Valid",
|
||||
"import jakarta.validation.Valid"
|
||||
);
|
||||
assertFileNotContains(
|
||||
petApi,
|
||||
"import javax.validation.constraints.*",
|
||||
"import javax.validation.Valid"
|
||||
);
|
||||
|
||||
Path petModel = Paths.get(outputPath + "/models/Pet.kt");
|
||||
assertFileContains(
|
||||
petModel,
|
||||
"import jakarta.validation.Valid",
|
||||
"import jakarta.validation.Valid"
|
||||
);
|
||||
assertFileNotContains(
|
||||
petModel,
|
||||
"import javax.validation.constraints.*",
|
||||
"import javax.validation.Valid"
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -8,9 +8,9 @@ wrapper {
|
||||
|
||||
buildscript {
|
||||
ext.kotlin_version = "1.4.32"
|
||||
ext.jakarta_ws_rs_version = "2.1.6"
|
||||
ext.swagger_annotations_version = "1.5.3"
|
||||
ext.jakarta_annotations_version = "1.3.5"
|
||||
ext.jakarta_ws_rs_version = "2.1.6"
|
||||
ext.jackson_version = "2.9.9"
|
||||
repositories {
|
||||
maven { url "https://repo1.maven.org/maven2" }
|
||||
|
||||
Reference in New Issue
Block a user