Skip to content

Commit 92690ea

Browse files
committed
Add tests + fixes
1 parent e91aa1b commit 92690ea

6 files changed

Lines changed: 103 additions & 3 deletions

File tree

modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/apiInterface.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,4 @@
4141
{{^vendorExtensions.x-java-is-response-void}}@org.eclipse.microprofile.openapi.annotations.media.Content(schema = @org.eclipse.microprofile.openapi.annotations.media.Schema(implementation = {{{baseType}}}.class{{#vendorExtensions.x-microprofile-open-api-return-schema-container}}, type = {{{.}}} {{/vendorExtensions.x-microprofile-open-api-return-schema-container}}{{#vendorExtensions.x-microprofile-open-api-return-unique-items}}, uniqueItems = true {{/vendorExtensions.x-microprofile-open-api-return-unique-items}})){{/vendorExtensions.x-java-is-response-void}}
4242
}){{^-last}},{{/-last}}{{/responses}}
4343
}){{/hasProduces}}{{/useMicroProfileOpenAPIAnnotations}}
44-
{{#supportAsync}}{{>returnAsyncTypeInterface}}{{/supportAsync}}{{^supportAsync}}{{#returnJBossResponse}}RestResponse<{{{returnType}}}>{{/returnJBossResponse}}{{^returnJBossResponse}}{{#returnResponse}}Response{{/returnResponse}}{{^returnResponse}}{{>returnTypeInterface}}{{/returnResponse}}{{/returnJBossResponse}}{{/supportAsync}} {{nickname}}({{#allParams}}{{>queryParams}}{{>pathParams}}{{>cookieParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{^-last}},{{/-last}}{{/allParams}});
44+
{{#supportAsync}}{{>returnAsyncTypeInterface}}{{/supportAsync}}{{^supportAsync}}{{#returnJBossResponse}}{{>returnResponseTypeInterface}}{{/returnJBossResponse}}{{^returnJBossResponse}}{{#returnResponse}}Response{{/returnResponse}}{{^returnResponse}}{{>returnTypeInterface}}{{/returnResponse}}{{/returnJBossResponse}}{{/supportAsync}} {{nickname}}({{#allParams}}{{>queryParams}}{{>pathParams}}{{>cookieParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{^-last}},{{/-last}}{{/allParams}});

modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/apiMethod.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,6 @@
4040
{{^vendorExtensions.x-java-is-response-void}}@org.eclipse.microprofile.openapi.annotations.media.Content(schema = @org.eclipse.microprofile.openapi.annotations.media.Schema(implementation = {{{baseType}}}.class{{#vendorExtensions.x-microprofile-open-api-return-schema-container}}, type = {{{.}}} {{/vendorExtensions.x-microprofile-open-api-return-schema-container}}{{#vendorExtensions.x-microprofile-open-api-return-unique-items}}, uniqueItems = true {{/vendorExtensions.x-microprofile-open-api-return-unique-items}})){{/vendorExtensions.x-java-is-response-void}}
4141
}){{^-last}},{{/-last}}{{/responses}}
4242
}){{/hasProduces}}{{/useMicroProfileOpenAPIAnnotations}}
43-
public {{#supportAsync}}{{#useMutiny}}Uni{{/useMutiny}}{{^useMutiny}}CompletionStage{{/useMutiny}}<{{/supportAsync}}{{#returnJBossResponse}}RestResponse<{{{returnType}}}>{{/returnJBossResponse}}{{^returnJBossResponse}}Response{{/returnJBossResponse}}{{#supportAsync}}>{{/supportAsync}} {{nickname}}({{#allParams}}{{>queryParams}}{{>pathParams}}{{>cookieParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{^-last}},{{/-last}}{{/allParams}}) {
43+
public {{#supportAsync}}{{#useMutiny}}Uni{{/useMutiny}}{{^useMutiny}}CompletionStage{{/useMutiny}}<{{/supportAsync}}{{#returnJBossResponse}}{{{returnType}}}{{/returnJBossResponse}}{{^returnJBossResponse}}Response{{/returnJBossResponse}}{{#supportAsync}}>{{/supportAsync}} {{nickname}}({{#allParams}}{{>queryParams}}{{>pathParams}}{{>cookieParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{^-last}},{{/-last}}{{/allParams}}) {
4444
return {{#supportAsync}}{{#useMutiny}}Uni.createFrom().item({{/useMutiny}}{{^useMutiny}}CompletableFuture.supplyAsync(() -> {{/useMutiny}}{{/supportAsync}}Response.ok().entity("magic!").build(){{#supportAsync}}){{/supportAsync}};
4545
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{{#useMutiny}}Uni{{/useMutiny}}{{^useMutiny}}CompletionStage{{/useMutiny}}<{{#returnResponse}}Response{{/returnResponse}}{{^returnResponse}}{{#returnContainer}}{{#isMap}}Map<String, {{{returnBaseType}}}>{{/isMap}}{{#isArray}}{{{returnContainer}}}<{{{returnBaseType}}}>{{/isArray}}{{/returnContainer}}{{^returnContainer}}{{{returnBaseType}}}{{/returnContainer}}{{/returnResponse}}>
1+
{{#useMutiny}}Uni{{/useMutiny}}{{^useMutiny}}CompletionStage{{/useMutiny}}<{{>returnResponseTypeInterface}}>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{{#returnJBossResponse}}RestResponse<{{>returnType}}>{{/returnJBossResponse}}{{^returnJBossResponse}}{{#returnResponse}}Response{{/returnResponse}}{{^returnResponse}}{{>returnType}}{{/returnResponse}}{{/returnJBossResponse}}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{{#returnContainer}}{{#isMap}}Map<String, {{{returnBaseType}}}>{{/isMap}}{{#isArray}}{{{returnContainer}}}<{{{returnBaseType}}}>{{/isArray}}{{/returnContainer}}{{^returnContainer}}{{{returnBaseType}}}{{/returnContainer}}

modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJAXRSSpecServerCodegenTest.java

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -524,6 +524,37 @@ public void generateApiWithAsyncSupportAndInterfaceOnlyAndResponse() throws Exce
524524
"\nCompletionStage<Response> pingGet();\n");
525525
}
526526

527+
@Test
528+
public void generateApiWithAsyncSupportAndInterfaceOnlyAndJBossResponse() throws Exception {
529+
final File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
530+
output.deleteOnExit();
531+
532+
final OpenAPI openAPI = new OpenAPIParser()
533+
.readLocation("src/test/resources/3_0/petstore.yaml", null, new ParseOptions()).getOpenAPI();
534+
535+
codegen.setOutputDir(output.getAbsolutePath());
536+
codegen.setLibrary(QUARKUS_LIBRARY);
537+
codegen.additionalProperties().put(SUPPORT_ASYNC, true); //Given support async is enabled
538+
codegen.additionalProperties().put(INTERFACE_ONLY, true); //And only interfaces are generated
539+
codegen.additionalProperties().put(RETURN_JBOSS_RESPONSE, true); //And return type is Response
540+
541+
final ClientOptInput input = new ClientOptInput()
542+
.openAPI(openAPI)
543+
.config(codegen); //Using JavaJAXRSSpecServerCodegen
544+
545+
final DefaultGenerator generator = new DefaultGenerator();
546+
final List<File> files = generator.opts(input).generate(); //When generating files
547+
548+
//Then the java files are compilable
549+
validateJavaSourceFiles(files);
550+
551+
//And the generated interface contains CompletionStage<Response>
552+
TestUtils.ensureContainsFile(files, output, "src/gen/java/org/openapitools/api/PetApi.java");
553+
assertFileContains(output.toPath().resolve("src/gen/java/org/openapitools/api/PetApi.java"),
554+
"\nimport java.util.concurrent.CompletionStage;\n",
555+
"CompletionStage<RestResponse<Pet>> addPet", "CompletionStage<RestResponse<Void>> deletePet");
556+
}
557+
527558

528559
@Test
529560
public void generatePetstoreAPIWithAsyncSupport() throws Exception {
@@ -975,6 +1006,73 @@ public void generateSpecInterfaceWithMicroprofileOpenApiAnnotations() throws Exc
9751006
" title = \"user\", version=\"1.0.0\", description=\"Operations about user\",");
9761007
}
9771008

1009+
@Test
1010+
public void generateSpecInterfaceWithJBossResponse() throws Exception {
1011+
final File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
1012+
output.deleteOnExit();
1013+
1014+
final OpenAPI openAPI = new OpenAPIParser()
1015+
.readLocation("src/test/resources/3_0/petstore.yaml", null, new ParseOptions()).getOpenAPI();
1016+
1017+
codegen.setOutputDir(output.getAbsolutePath());
1018+
codegen.additionalProperties().put(INTERFACE_ONLY, true); //And only interfaces are generated
1019+
codegen.additionalProperties().put(USE_TAGS, true); //And use tags to generate everything in several API files
1020+
codegen.additionalProperties().put(RETURN_JBOSS_RESPONSE, true); // Use JBoss Response type
1021+
codegen.additionalProperties().put(USE_JAKARTA_EE, true); // Use Jakarta
1022+
codegen.setLibrary(QUARKUS_LIBRARY); // Set Quarkus
1023+
1024+
final ClientOptInput input = new ClientOptInput()
1025+
.openAPI(openAPI)
1026+
.config(codegen); //using JavaJAXRSSpecServerCodegen
1027+
1028+
final DefaultGenerator generator = new DefaultGenerator();
1029+
final List<File> files = generator.opts(input).generate(); //When generating files
1030+
1031+
//Then the java files are compilable
1032+
validateJavaSourceFiles(files);
1033+
1034+
//And the generated interfaces contains RestResponse
1035+
TestUtils.ensureContainsFile(files, output, "src/gen/java/org/openapitools/api/PetApi.java");
1036+
assertFileContains(output.toPath().resolve("src/gen/java/org/openapitools/api/PetApi.java"),
1037+
"\nimport org.jboss.resteasy.reactive.RestResponse;\n", "RestResponse<Pet> addPet",
1038+
"RestResponse<Void> deletePet", "RestResponse<List<Pet>> findPetsByStatus",
1039+
"RestResponse<Void> updatePetWithForm", "RestResponse<ModelApiResponse> uploadFile");
1040+
}
1041+
1042+
@Test
1043+
public void generateSpecInterfaceWithMutinyAndJBossResponse() throws Exception {
1044+
final File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
1045+
output.deleteOnExit();
1046+
1047+
final OpenAPI openAPI = new OpenAPIParser()
1048+
.readLocation("src/test/resources/3_0/petstore.yaml", null, new ParseOptions()).getOpenAPI();
1049+
1050+
codegen.setOutputDir(output.getAbsolutePath());
1051+
codegen.additionalProperties().put(INTERFACE_ONLY, true); //And only interfaces are generated
1052+
codegen.additionalProperties().put(USE_TAGS, true); //And use tags to generate everything in several API files
1053+
codegen.additionalProperties().put(RETURN_JBOSS_RESPONSE, true); // Use JBoss Response type
1054+
codegen.additionalProperties().put(SUPPORT_ASYNC, true);
1055+
codegen.additionalProperties().put(USE_MUTINY, true); // Use Mutiny
1056+
codegen.setLibrary(QUARKUS_LIBRARY); // Set Quarkus
1057+
1058+
final ClientOptInput input = new ClientOptInput()
1059+
.openAPI(openAPI)
1060+
.config(codegen); //using JavaJAXRSSpecServerCodegen
1061+
1062+
final DefaultGenerator generator = new DefaultGenerator();
1063+
final List<File> files = generator.opts(input).generate(); //When generating files
1064+
1065+
//Then the java files are compilable
1066+
validateJavaSourceFiles(files);
1067+
1068+
//And the generated interfaces contains RestResponse
1069+
TestUtils.ensureContainsFile(files, output, "src/gen/java/org/openapitools/api/PetApi.java");
1070+
assertFileContains(output.toPath().resolve("src/gen/java/org/openapitools/api/PetApi.java"),
1071+
"\nimport org.jboss.resteasy.reactive.RestResponse;\n", "Uni<RestResponse<Pet>> addPet",
1072+
"Uni<RestResponse<Void>> deletePet", "Uni<RestResponse<List<Pet>>> findPetsByStatus",
1073+
"Uni<RestResponse<ModelApiResponse>> uploadFile");
1074+
}
1075+
9781076
@Test
9791077
public void generateSpecNonInterfaceWithMicroprofileOpenApiAnnotations() throws Exception {
9801078
final File output = Files.createTempDirectory("test").toFile().getCanonicalFile();

0 commit comments

Comments
 (0)