diff --git a/docs/generators/java-micronaut-client.md b/docs/generators/java-micronaut-client.md index 76970cb240a5..1ff0274e0d28 100644 --- a/docs/generators/java-micronaut-client.md +++ b/docs/generators/java-micronaut-client.md @@ -59,6 +59,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false| +|reactive|Make the responses use Reactor Mono as wrapper| |true| |requiredPropertiesInConstructor|Allow only to create models with all the required properties provided in constructor| |true| |scmConnection|SCM connection in generated pom.xml| |scm:git:git@github.com:openapitools/openapi-generator.git| |scmDeveloperConnection|SCM developer connection in generated pom.xml| |scm:git:git@github.com:openapitools/openapi-generator.git| @@ -73,6 +74,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |title|Client service name| |null| |useBeanValidation|Use BeanValidation API annotations| |true| |withXml|whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)| |false| +|wrapInHttpResponse|Wrap the response in HttpResponse object| |false| ## SUPPORTED VENDOR EXTENSIONS diff --git a/docs/generators/java-micronaut-server.md b/docs/generators/java-micronaut-server.md index af82c812c33d..0227ac9b9fd9 100644 --- a/docs/generators/java-micronaut-server.md +++ b/docs/generators/java-micronaut-server.md @@ -60,6 +60,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |parentGroupId|parent groupId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |parentVersion|parent version in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null| |prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false| +|reactive|Make the responses use Reactor Mono as wrapper| |true| |requiredPropertiesInConstructor|Allow only to create models with all the required properties provided in constructor| |true| |scmConnection|SCM connection in generated pom.xml| |scm:git:git@github.com:openapitools/openapi-generator.git| |scmDeveloperConnection|SCM developer connection in generated pom.xml| |scm:git:git@github.com:openapitools/openapi-generator.git| @@ -75,6 +76,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl |useAuth|Whether to import authorization and to annotate controller methods accordingly| |true| |useBeanValidation|Use BeanValidation API annotations| |true| |withXml|whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)| |false| +|wrapInHttpResponse|Wrap the response in HttpResponse object| |false| ## SUPPORTED VENDOR EXTENSIONS diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautAbstractCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautAbstractCodegen.java index f58e79c22666..edf9cd580c49 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautAbstractCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautAbstractCodegen.java @@ -31,13 +31,17 @@ public abstract class JavaMicronautAbstractCodegen extends AbstractJavaCodegen i public static final String OPT_DATE_LIBRARY_JAVA8_LOCAL_DATETIME = "java8-localdatetime"; public static final String OPT_DATE_FORMAT = "dateFormat"; public static final String OPT_DATETIME_FORMAT = "datetimeFormat"; + public static final String OPT_REACTIVE = "reactive"; + public static final String OPT_WRAP_IN_HTTP_RESPONSE = "wrapInHttpResponse"; protected String title; protected boolean useBeanValidation; protected String buildTool; protected String testTool; protected boolean requiredPropertiesInConstructor = true; - protected String micronautVersion = "3.3.1"; + protected String micronautVersion; + protected boolean reactive; + protected boolean wrapInHttpResponse; public static final String CONTENT_TYPE_APPLICATION_FORM_URLENCODED = "application/x-www-form-urlencoded"; public static final String CONTENT_TYPE_APPLICATION_JSON = "application/json"; @@ -55,7 +59,6 @@ public JavaMicronautAbstractCodegen() { buildTool = OPT_BUILD_ALL; testTool = OPT_TEST_JUNIT; outputFolder = "generated-code/java-micronaut-client"; - templateDir = "java-micronaut/client"; apiPackage = "org.openapitools.api"; modelPackage = "org.openapitools.model"; invokerPackage = "org.openapitools"; @@ -64,6 +67,9 @@ public JavaMicronautAbstractCodegen() { apiDocPath = "docs/apis"; modelDocPath = "docs/models"; dateLibrary = OPT_DATE_LIBRARY_JAVA8; + micronautVersion = "3.3.1"; + reactive = true; + wrapInHttpResponse = false; // Set implemented features for user information modifyFeatureSet(features -> features @@ -96,9 +102,11 @@ public JavaMicronautAbstractCodegen() { cliOptions.add(new CliOption(OPT_MICRONAUT_VERSION, "Micronaut version, only >=3.0.0 versions are supported").defaultValue(micronautVersion)); cliOptions.add(CliOption.newBoolean(USE_BEANVALIDATION, "Use BeanValidation API annotations", useBeanValidation)); cliOptions.add(CliOption.newBoolean(OPT_REQUIRED_PROPERTIES_IN_CONSTRUCTOR, "Allow only to create models with all the required properties provided in constructor", requiredPropertiesInConstructor)); + cliOptions.add(CliOption.newBoolean(OPT_REACTIVE, "Make the responses use Reactor Mono as wrapper", reactive)); + cliOptions.add(CliOption.newBoolean(OPT_WRAP_IN_HTTP_RESPONSE, "Wrap the response in HttpResponse object", wrapInHttpResponse)); CliOption buildToolOption = new CliOption(OPT_BUILD, "Specify for which build tool to generate files").defaultValue(buildTool); - Map buildToolOptionMap = new HashMap(); + Map buildToolOptionMap = new HashMap<>(); buildToolOptionMap.put(OPT_BUILD_GRADLE, "Gradle configuration is generated for the project"); buildToolOptionMap.put(OPT_BUILD_MAVEN, "Maven configuration is generated for the project"); buildToolOptionMap.put(OPT_BUILD_ALL, "Both Gradle and Maven configurations are generated"); @@ -106,7 +114,7 @@ public JavaMicronautAbstractCodegen() { cliOptions.add(buildToolOption); CliOption testToolOption = new CliOption(OPT_TEST, "Specify which test tool to generate files for").defaultValue(testTool); - Map testToolOptionMap = new HashMap(); + Map testToolOptionMap = new HashMap<>(); testToolOptionMap.put(OPT_TEST_JUNIT, "Use JUnit as test tool"); testToolOptionMap.put(OPT_TEST_SPOCK, "Use Spock as test tool"); testToolOption.setEnum(testToolOptionMap); @@ -163,6 +171,16 @@ public void processOpts() { } writePropertyBack(OPT_REQUIRED_PROPERTIES_IN_CONSTRUCTOR, requiredPropertiesInConstructor); + if (additionalProperties.containsKey(OPT_REACTIVE)) { + this.reactive = convertPropertyToBoolean(OPT_REACTIVE); + } + writePropertyBack(OPT_REACTIVE, reactive); + + if (additionalProperties.containsKey(OPT_WRAP_IN_HTTP_RESPONSE)) { + this.wrapInHttpResponse = convertPropertyToBoolean(OPT_WRAP_IN_HTTP_RESPONSE); + } + writePropertyBack(OPT_WRAP_IN_HTTP_RESPONSE, wrapInHttpResponse); + // Get enum properties if (additionalProperties.containsKey(OPT_BUILD)) { switch ((String) additionalProperties.get(OPT_BUILD)) { @@ -345,14 +363,14 @@ public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List) m.allowableValues.get("values"); } example = getExampleValue(m.defaultValue, null, m.classname, true, - allowableValues, null, null, m.requiredVars, false); + allowableValues, null, null, m.requiredVars, false, false); groovyExample = getExampleValue(m.defaultValue, null, m.classname, true, - allowableValues, null, null, m.requiredVars, true); + allowableValues, null, null, m.requiredVars, true, false); } else { example = getExampleValue(null, null, op.returnType, false, null, - op.returnBaseType, null, null, false); + op.returnBaseType, null, null, false, false); groovyExample = getExampleValue(null, null, op.returnType, false, null, - op.returnBaseType, null, null, true); + op.returnBaseType, null, null, true, false); } op.vendorExtensions.put("example", example); op.vendorExtensions.put("groovyExample", groovyExample); @@ -421,7 +439,7 @@ protected String getParameterExampleValue(CodegenParameter p, boolean groovy) { return getExampleValue(p.defaultValue, p.example, p.dataType, p.isModel, allowableValues, p.items == null ? null : p.items.dataType, p.items == null ? null : p.items.defaultValue, - p.requiredVars, groovy); + p.requiredVars, groovy, false); } protected String getPropertyExampleValue(CodegenProperty p, boolean groovy) { @@ -430,12 +448,12 @@ protected String getPropertyExampleValue(CodegenProperty p, boolean groovy) { return getExampleValue(p.defaultValue, p.example, p.dataType, p.isModel, allowableValues, p.items == null ? null : p.items.dataType, p.items == null ? null : p.items.defaultValue, - null, groovy); + null, groovy, true); } public String getExampleValue( String defaultValue, String example, String dataType, Boolean isModel, List allowableValues, - String itemsType, String itemsExample, List requiredVars, boolean groovy + String itemsType, String itemsExample, List requiredVars, boolean groovy, boolean isProperty ) { example = defaultValue != null ? defaultValue : example; String containerType = dataType == null ? null : dataType.split("<")[0]; @@ -472,6 +490,9 @@ public String getExampleValue( if (value == null || !allowableValues.contains(value)) { value = allowableValues.get(0); } + if (isProperty) { + dataType = importMapping.getOrDefault(dataType, modelPackage + '.' + dataType); + } example = dataType + ".fromValue(\"" + value + "\")"; } else if ((isModel != null && isModel) || (isModel == null && !languageSpecificPrimitives.contains(dataType))) { if (requiredVars == null) { @@ -479,6 +500,9 @@ public String getExampleValue( } else { if (requiredPropertiesInConstructor) { StringBuilder builder = new StringBuilder(); + if (isProperty) { + dataType = importMapping.getOrDefault(dataType, modelPackage + '.' + dataType); + } builder.append("new ").append(dataType).append("("); for (int i = 0; i < requiredVars.size(); ++i) { if (i != 0) { diff --git a/modules/openapi-generator/src/main/resources/java-micronaut/client/api.mustache b/modules/openapi-generator/src/main/resources/java-micronaut/client/api.mustache index 4884925ee568..317d6afb92d2 100644 --- a/modules/openapi-generator/src/main/resources/java-micronaut/client/api.mustache +++ b/modules/openapi-generator/src/main/resources/java-micronaut/client/api.mustache @@ -8,7 +8,12 @@ import io.micronaut.http.client.annotation.Client; import {{invokerPackage}}.auth.Authorization; {{/configureAuth}} import io.micronaut.core.convert.format.Format; +{{#reactive}} import reactor.core.publisher.Mono; +{{/reactive}} +{{#wrapInHttpResponse}} +import io.micronaut.http.HttpResponse; +{{/wrapInHttpResponse}} {{#imports}}import {{import}}; {{/imports}} import javax.annotation.Generated; @@ -63,9 +68,9 @@ public interface {{classname}} { {{/authMethods}} {{/configureAuth}} {{!the method definition}} - {{#returnType}}Mono<{{{returnType}}}>{{/returnType}}{{^returnType}}Mono{{/returnType}} {{nickname}}({{^allParams}});{{/allParams}}{{#allParams}} + {{>common/operationReturnType}} {{nickname}}({{#allParams}} {{>client/params/queryParams}}{{>client/params/pathParams}}{{>client/params/headerParams}}{{>client/params/bodyParams}}{{>client/params/formParams}}{{>client/params/cookieParams}}{{^-last}}, {{/-last}}{{#-last}} - );{{/-last}}{{/allParams}} + {{/-last}}{{/allParams}}); {{/operation}} {{/operations}} } diff --git a/modules/openapi-generator/src/main/resources/java-micronaut/client/test/api_test.groovy.mustache b/modules/openapi-generator/src/main/resources/java-micronaut/client/test/api_test.groovy.mustache index a660a5bb112c..5f5b61b87a8d 100644 --- a/modules/openapi-generator/src/main/resources/java-micronaut/client/test/api_test.groovy.mustache +++ b/modules/openapi-generator/src/main/resources/java-micronaut/client/test/api_test.groovy.mustache @@ -5,12 +5,17 @@ package {{package}} import io.micronaut.test.extensions.spock.annotation.MicronautTest import spock.lang.Specification import jakarta.inject.Inject -import reactor.core.publisher.Mono +import spock.lang.Ignore +{{#wrapInHttpResponse}} +import io.micronaut.http.HttpResponse +{{/wrapInHttpResponse}} {{^fullJavaUtil}} +import java.util.Arrays import java.util.ArrayList import java.util.HashMap import java.util.List import java.util.Map +import java.util.HashSet {{/fullJavaUtil}} @@ -31,15 +36,23 @@ class {{classname}}Spec extends Specification { * {{notes}} {{/notes}} */ + @Ignore("Not Implemented") void '{{operationId}}() test'() { given: {{#allParams}} - {{{dataType}}} {{paramName}} = null + {{{dataType}}} {{paramName}} = {{{vendorExtensions.groovyExample}}} {{/allParams}} - // {{#returnType}}{{{returnType}}} response = {{/returnType}}api.{{operationId}}({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}).block() - // {{#returnType}}Mono<{{{returnType}}}>{{/returnType}}{{^returnType}}Mono{{/returnType}} asyncResponse = api.{{operationId}}({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}) - expect: + when: + {{#wrapInHttpResponse}} + HttpResponse<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}> response = api.{{operationId}}({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}){{#reactive}}.block(){{/reactive}}{{#returnType}} + {{{returnType}}} body = response.body(){{/returnType}} + {{/wrapInHttpResponse}} + {{^wrapInHttpResponse}} + {{#returnType}}{{{returnType}}} body = {{/returnType}}api.{{operationId}}({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}){{#reactive}}.block(){{/reactive}} + {{/wrapInHttpResponse}} + + then: true // TODO: test validations } diff --git a/modules/openapi-generator/src/main/resources/java-micronaut/client/test/api_test.mustache b/modules/openapi-generator/src/main/resources/java-micronaut/client/test/api_test.mustache index fc737b42696f..7dc77203b80a 100644 --- a/modules/openapi-generator/src/main/resources/java-micronaut/client/test/api_test.mustache +++ b/modules/openapi-generator/src/main/resources/java-micronaut/client/test/api_test.mustache @@ -5,14 +5,18 @@ package {{package}}; import io.micronaut.test.extensions.junit5.annotation.MicronautTest; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; import jakarta.inject.Inject; -import reactor.core.publisher.Mono; - +{{#wrapInHttpResponse}} +import io.micronaut.http.HttpResponse; +{{/wrapInHttpResponse}} {{^fullJavaUtil}} +import java.util.Arrays; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.HashSet; {{/fullJavaUtil}} @@ -34,13 +38,24 @@ public class {{classname}}Test { {{/notes}} */ @Test + @Disabled("Not Implemented") public void {{operationId}}Test() { + // given {{#allParams}} - {{{dataType}}} {{paramName}} = null; + {{{dataType}}} {{paramName}} = {{{example}}}; {{/allParams}} - // {{#returnType}}{{{returnType}}} response = {{/returnType}}api.{{operationId}}({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}).block(); - // {{#returnType}}Mono<{{{returnType}}}>{{/returnType}}{{^returnType}}Mono{{/returnType}} asyncResponse = api.{{operationId}}({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}); - // TODO: test validations + + // when + {{#wrapInHttpResponse}} + HttpResponse<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}> response = api.{{operationId}}({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}){{#reactive}}.block(){{/reactive}};{{#returnType}} + {{{returnType}}} body = response.body();{{/returnType}} + {{/wrapInHttpResponse}} + {{^wrapInHttpResponse}} + {{#returnType}}{{{returnType}}} body = {{/returnType}}api.{{operationId}}({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}){{#reactive}}.block(){{/reactive}}; + {{/wrapInHttpResponse}} + + // then + // TODO implement the {{operationId}}Test() } {{/operation}}{{/operations}} diff --git a/modules/openapi-generator/src/main/resources/java-micronaut/common/configuration/application.yml.mustache b/modules/openapi-generator/src/main/resources/java-micronaut/common/configuration/application.yml.mustache index 4e7d6e844980..f031ba413c52 100644 --- a/modules/openapi-generator/src/main/resources/java-micronaut/common/configuration/application.yml.mustache +++ b/modules/openapi-generator/src/main/resources/java-micronaut/common/configuration/application.yml.mustache @@ -1,7 +1,6 @@ {{!CLIENT CONFIGURATION}} {{#client}} base-path: "{{{basePath}}}/" -context-path: "{{{contextPath}}}/" micronaut: application: @@ -56,13 +55,13 @@ micronaut: {{/client}} {{!SERVER CONFIGURATION}} {{#server}} -context-path: "{{{contextPath}}}/" micronaut: application: name: {{artifactId}} server: - port: 8080 + port: 8080{{#contextPath}} + context-path: "{{{contextPath}}}"{{/contextPath}} security: # authentication: bearer | cookie | session | idtoken {{/server}} diff --git a/modules/openapi-generator/src/main/resources/java-micronaut/common/configuration/gradle/build.gradle.mustache b/modules/openapi-generator/src/main/resources/java-micronaut/common/configuration/gradle/build.gradle.mustache index 11ae6117087e..2db990f1216c 100644 --- a/modules/openapi-generator/src/main/resources/java-micronaut/common/configuration/gradle/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/java-micronaut/common/configuration/gradle/build.gradle.mustache @@ -40,7 +40,9 @@ dependencies { implementation("io.micronaut.security:micronaut-security") implementation("io.micronaut.security:micronaut-security-oauth2") {{/useAuth}} + {{#reactive}} implementation("io.micronaut.reactor:micronaut-reactor") + {{/reactive}} implementation("io.swagger:swagger-annotations:1.5.9") runtimeOnly("ch.qos.logback:logback-classic") } diff --git a/modules/openapi-generator/src/main/resources/java-micronaut/common/configuration/pom.xml.mustache b/modules/openapi-generator/src/main/resources/java-micronaut/common/configuration/pom.xml.mustache index e51e6ead1527..774748eaaa2f 100644 --- a/modules/openapi-generator/src/main/resources/java-micronaut/common/configuration/pom.xml.mustache +++ b/modules/openapi-generator/src/main/resources/java-micronaut/common/configuration/pom.xml.mustache @@ -98,11 +98,13 @@ micronaut-runtime compile + {{#reactive}} io.micronaut.reactor micronaut-reactor compile + {{/reactive}} {{#useAuth}} io.micronaut.security diff --git a/modules/openapi-generator/src/main/resources/java-micronaut/common/operationReturnType.mustache b/modules/openapi-generator/src/main/resources/java-micronaut/common/operationReturnType.mustache new file mode 100644 index 000000000000..6a4b4a175d6d --- /dev/null +++ b/modules/openapi-generator/src/main/resources/java-micronaut/common/operationReturnType.mustache @@ -0,0 +1,12 @@ +{{!begin reactive +}}{{#reactive}}Mono<{{/reactive}}{{! +begin wrapInHttpResponse +}}{{#wrapInHttpResponse}}HttpResponse<{{/wrapInHttpResponse}}{{! +return type +}}{{#returnType}}{{{returnType}}}{{/returnType}}{{! +no return type +}}{{^returnType}}{{#reactive}}Void{{/reactive}}{{^reactive}}{{#wrapInHttpResponse}}Void{{/wrapInHttpResponse}}{{/reactive}}{{^reactive}}{{^wrapInHttpResponse}}void{{/wrapInHttpResponse}}{{/reactive}}{{/returnType}}{{! +end wrapInHttpResponse +}}{{#wrapInHttpResponse}}>{{/wrapInHttpResponse}}{{! +end reactive +}}{{#reactive}}>{{/reactive}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/java-micronaut/server/controller.mustache b/modules/openapi-generator/src/main/resources/java-micronaut/server/controller.mustache index c7329dde14f0..771e57b915dd 100644 --- a/modules/openapi-generator/src/main/resources/java-micronaut/server/controller.mustache +++ b/modules/openapi-generator/src/main/resources/java-micronaut/server/controller.mustache @@ -8,7 +8,12 @@ import io.micronaut.core.convert.format.Format; import io.micronaut.security.annotation.Secured; import io.micronaut.security.rules.SecurityRule; {{/useAuth}} +{{#reactive}} import reactor.core.publisher.Mono; +{{/reactive}} +{{#wrapInHttpResponse}} +import io.micronaut.http.HttpResponse; +{{/wrapInHttpResponse}} {{#imports}} import {{import}}; {{/imports}} @@ -30,7 +35,7 @@ import io.swagger.annotations.*; {{>common/generatedAnnotation}} {{^generateControllerAsAbstract}} -@Controller("${context-path}") +@Controller {{/generateControllerAsAbstract}} public {{#generateControllerAsAbstract}}abstract {{/generateControllerAsAbstract}}class {{classname}} { {{#operations}} @@ -95,7 +100,7 @@ public {{#generateControllerAsAbstract}}abstract {{/generateControllerAsAbstract @Secured({{openbrace}}{{#vendorExtensions.x-roles}}{{{.}}}{{^-last}}, {{/-last}}{{/vendorExtensions.x-roles}}{{closebrace}}) {{/useAuth}} {{!the method definition}} - public {{#returnType}}Mono<{{{returnType}}}>{{/returnType}}{{^returnType}}Mono{{/returnType}} {{nickname}}{{#generateControllerAsAbstract}}Api{{/generateControllerAsAbstract}}({{#allParams}} + public {{>common/operationReturnType}} {{nickname}}{{#generateControllerAsAbstract}}Api{{/generateControllerAsAbstract}}({{#allParams}} {{>server/params/queryParams}}{{>server/params/pathParams}}{{>server/params/headerParams}}{{>server/params/bodyParams}}{{>server/params/formParams}}{{>server/params/cookieParams}}{{^-last}}, {{/-last}}{{#-last}} {{/-last}}{{/allParams}}) { {{^generateControllerAsAbstract}} @@ -114,7 +119,7 @@ public {{#generateControllerAsAbstract}}abstract {{/generateControllerAsAbstract * * This method will be delegated to when the controller gets a request */ - public abstract {{#returnType}}Mono<{{{returnType}}}>{{/returnType}}{{^returnType}}Mono{{/returnType}} {{nickname}}({{#allParams}}{{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}); + public abstract {{>common/operationReturnType}} {{nickname}}({{#allParams}}{{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}); {{/generateControllerAsAbstract}} {{^-last}} diff --git a/modules/openapi-generator/src/main/resources/java-micronaut/server/controllerImplementation.mustache b/modules/openapi-generator/src/main/resources/java-micronaut/server/controllerImplementation.mustache index 91e582a17b5b..e11de9861c52 100644 --- a/modules/openapi-generator/src/main/resources/java-micronaut/server/controllerImplementation.mustache +++ b/modules/openapi-generator/src/main/resources/java-micronaut/server/controllerImplementation.mustache @@ -2,7 +2,12 @@ package {{controllerPackage}}; import io.micronaut.http.annotation.Controller; +{{#reactive}} import reactor.core.publisher.Mono; +{{/reactive}} +{{#wrapInHttpResponse}} +import io.micronaut.http.HttpResponse; +{{/wrapInHttpResponse}} import {{package}}.{{classname}}; {{#imports}} import {{import}}; @@ -18,13 +23,13 @@ import java.util.Arrays; {{/fullJavaUtil}} -@Controller("${context-path}") +@Controller public class {{controllerClassname}} extends {{classname}} { {{#operations}} {{#operation}} {{!the method definition}} @Override - public {{#returnType}}Mono<{{{returnType}}}>{{/returnType}}{{^returnType}}Mono{{/returnType}} {{nickname}}({{#allParams}}{{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}) { + public {{>common/operationReturnType}} {{nickname}}({{#allParams}}{{{dataType}}} {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}) { {{>server/controllerOperationBody}} } {{^-last}} diff --git a/modules/openapi-generator/src/main/resources/java-micronaut/server/controllerOperationBody.mustache b/modules/openapi-generator/src/main/resources/java-micronaut/server/controllerOperationBody.mustache index fc374fe0993f..cbfe9e504c0c 100644 --- a/modules/openapi-generator/src/main/resources/java-micronaut/server/controllerOperationBody.mustache +++ b/modules/openapi-generator/src/main/resources/java-micronaut/server/controllerOperationBody.mustache @@ -1,8 +1,7 @@ {{^generateControllerFromExamples}} {{!The body needs to be implemented by user}} - // TODO implement {{nickname}}() body; - {{#returnType}}Mono<{{{returnType}}}>{{/returnType}}{{^returnType}}Mono{{/returnType}} result = Mono.empty(); - return result; + // TODO implement {{nickname}}(); + {{#reactive}}{{#wrapInHttpResponse}}return Mono.fromCallable(HttpResponse::ok);{{/wrapInHttpResponse}}{{^wrapInHttpResponse}}return Mono.empty();{{/wrapInHttpResponse}}{{/reactive}}{{^reactive}}{{#wrapInHttpResponse}}return HttpResponse.ok();{{/wrapInHttpResponse}}{{^wrapInHttpResponse}}{{#returnType}}return null;{{/returnType}}{{/wrapInHttpResponse}}{{/reactive}} {{/generateControllerFromExamples}} {{#generateControllerFromExamples}} {{!The body is generated to verify that example values are passed correctly}} @@ -12,6 +11,27 @@ assert {{paramName}}.equals({{paramName}}Expected) : "The parameter {{paramName}} was expected to match its example value"; {{/isFile}} {{/allParams}} - - return Mono.fromCallable(() -> {{^returnType}}""{{/returnType}}{{#returnType}}{{#vendorExtensions.example}}{{{vendorExtensions.example}}}{{/vendorExtensions.example}}{{^vendorExtensions.example}}null{{/vendorExtensions.example}}{{/returnType}}); + {{! + return type present + }}{{#returnType}}return {{! + reactive start + }}{{#reactive}}Mono.fromCallable(() -> {{/reactive}}{{! + wrapInHttpResponse start + }}{{#wrapInHttpResponse}}HttpResponse.ok({{/wrapInHttpResponse}}{{! + body + }}{{#vendorExtensions.example}}{{{vendorExtensions.example}}}{{/vendorExtensions.example}}{{^vendorExtensions.example}}{{^wrapInHttpResponse}}null{{/wrapInHttpResponse}}{{/vendorExtensions.example}}{{! + wrapInHttpResponse end + }}{{#wrapInHttpResponse}}){{/wrapInHttpResponse}}{{! + reactive end + }}{{#reactive}}){{/reactive}};{{/returnType}}{{! + return type not present + }}{{^returnType}}{{! + reactive + }}{{#reactive}}return {{! + wrapInHttpResponse + }}{{#wrapInHttpResponse}}Mono.fromCallable(HttpResponse::ok){{/wrapInHttpResponse}}{{^wrapInHttpResponse}}Mono.fromCallable(() -> null){{/wrapInHttpResponse}};{{/reactive}}{{! + not reactive + }}{{^reactive}}{{! + wrapInHttpResponse + }}{{#wrapInHttpResponse}}return HttpResponse.ok();{{/wrapInHttpResponse}}{{/reactive}}{{/returnType}} {{/generateControllerFromExamples}} \ No newline at end of file diff --git a/modules/openapi-generator/src/main/resources/java-micronaut/server/test/controller_test.groovy.mustache b/modules/openapi-generator/src/main/resources/java-micronaut/server/test/controller_test.groovy.mustache index 63768f40f5a4..de981e9639d8 100644 --- a/modules/openapi-generator/src/main/resources/java-micronaut/server/test/controller_test.groovy.mustache +++ b/modules/openapi-generator/src/main/resources/java-micronaut/server/test/controller_test.groovy.mustache @@ -19,7 +19,9 @@ import io.micronaut.core.type.Argument import jakarta.inject.Inject import spock.lang.Specification import spock.lang.Ignore +{{#reactive}} import reactor.core.publisher.Mono +{{/reactive}} import java.io.File import java.io.FileReader @@ -34,7 +36,7 @@ class {{classname}}Spec extends Specification { EmbeddedServer server @Inject - @Client('${context-path}') + @Client HttpClient client @Inject @@ -63,7 +65,7 @@ class {{classname}}Spec extends Specification { {{/allParams}} when: - {{#returnType}}{{{returnType}}} result = {{/returnType}}controller.{{operationId}}({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}).block() + {{#returnType}}{{{returnType}}} result = {{/returnType}}controller.{{operationId}}({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}){{#reactive}}.block(){{/reactive}}{{#wrapInHttpResponse}}.body(){{/wrapInHttpResponse}} then: {{^generateControllerFromExamples}} diff --git a/modules/openapi-generator/src/main/resources/java-micronaut/server/test/controller_test.mustache b/modules/openapi-generator/src/main/resources/java-micronaut/server/test/controller_test.mustache index 2e34bd72124b..ffacd3ee795d 100644 --- a/modules/openapi-generator/src/main/resources/java-micronaut/server/test/controller_test.mustache +++ b/modules/openapi-generator/src/main/resources/java-micronaut/server/test/controller_test.mustache @@ -20,7 +20,9 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Assertions; import jakarta.inject.Inject; +{{#reactive}} import reactor.core.publisher.Mono; +{{/reactive}} import java.io.File; import java.io.FileReader; import java.io.IOException; @@ -44,7 +46,7 @@ public class {{classname}}Test { EmbeddedServer server; @Inject - @Client("${context-path}") + @Client HttpClient client; @Inject @@ -74,7 +76,7 @@ public class {{classname}}Test { {{/allParams}} // when - {{#returnType}}{{{returnType}}} result = {{/returnType}}controller.{{operationId}}({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}).block(); + {{#returnType}}{{{returnType}}} result = {{/returnType}}controller.{{operationId}}({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}){{#reactive}}.block(){{/reactive}}{{#wrapInHttpResponse}}.body(){{/wrapInHttpResponse}}; // then {{^generateControllerFromExamples}} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/micronaut/MicronautServerCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/micronaut/MicronautServerCodegenTest.java index f172729162d9..7a4e20c2392b 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/micronaut/MicronautServerCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/micronaut/MicronautServerCodegenTest.java @@ -237,4 +237,56 @@ public void generateAuthRolesWithExtension() { assertFileContainsRegex(controllerPath + "UsersController.java", "IS_ANONYMOUS[^;]{0,100}getUserProfile"); assertFileContainsRegex(controllerPath + "UsersController.java", "IS_AUTHENTICATED[^;]{0,100}updateProfile"); } + + @Test + public void doGenerateMonoWrapHttpResponse() { + JavaMicronautServerCodegen codegen = new JavaMicronautServerCodegen(); + codegen.additionalProperties().put(JavaMicronautServerCodegen.OPT_REACTIVE, "true"); + codegen.additionalProperties().put(JavaMicronautServerCodegen.OPT_WRAP_IN_HTTP_RESPONSE, "true"); + String outputPath = generateFiles(codegen, PETSTORE_PATH, CodegenConstants.MODELS, CodegenConstants.APIS); + + // Constructor should have properties + String controllerPath = outputPath + "src/main/java/org/openapitools/controller/"; + assertFileContains(controllerPath + "PetController.java", "Mono>"); + } + + @Test + public void doGenerateMono() { + JavaMicronautServerCodegen codegen = new JavaMicronautServerCodegen(); + codegen.additionalProperties().put(JavaMicronautServerCodegen.OPT_REACTIVE, "true"); + codegen.additionalProperties().put(JavaMicronautServerCodegen.OPT_WRAP_IN_HTTP_RESPONSE, "false"); + String outputPath = generateFiles(codegen, PETSTORE_PATH, CodegenConstants.MODELS, CodegenConstants.APIS); + + // Constructor should have properties + String controllerPath = outputPath + "src/main/java/org/openapitools/controller/"; + assertFileContains(controllerPath + "PetController.java", "Mono"); + assertFileNotContains(controllerPath + "PetController.java", "HttpResponse"); + } + + @Test + public void doGenerateWrapHttpResponse() { + JavaMicronautServerCodegen codegen = new JavaMicronautServerCodegen(); + codegen.additionalProperties().put(JavaMicronautServerCodegen.OPT_REACTIVE, "false"); + codegen.additionalProperties().put(JavaMicronautServerCodegen.OPT_WRAP_IN_HTTP_RESPONSE, "true"); + String outputPath = generateFiles(codegen, PETSTORE_PATH, CodegenConstants.MODELS, CodegenConstants.APIS); + + // Constructor should have properties + String controllerPath = outputPath + "src/main/java/org/openapitools/controller/"; + assertFileContains(controllerPath + "PetController.java", "HttpResponse"); + assertFileNotContains(controllerPath + "PetController.java", "Mono"); + } + + @Test + public void doGenerateNoMonoNoWrapHttpResponse() { + JavaMicronautServerCodegen codegen = new JavaMicronautServerCodegen(); + codegen.additionalProperties().put(JavaMicronautServerCodegen.OPT_REACTIVE, "false"); + codegen.additionalProperties().put(JavaMicronautServerCodegen.OPT_WRAP_IN_HTTP_RESPONSE, "false"); + String outputPath = generateFiles(codegen, PETSTORE_PATH, CodegenConstants.MODELS, CodegenConstants.APIS); + + // Constructor should have properties + String controllerPath = outputPath + "src/main/java/org/openapitools/controller/"; + assertFileContains(controllerPath + "PetController.java", "Pet"); + assertFileNotContains(controllerPath + "PetController.java", "Mono"); + assertFileNotContains(controllerPath + "PetController.java", "HttpResponse"); + } } diff --git a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/AnotherFakeApi.java index 26e3afaff52b..1656631481ae 100644 --- a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/AnotherFakeApi.java +++ b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/AnotherFakeApi.java @@ -42,5 +42,5 @@ public interface AnotherFakeApi { @Consumes(value={"application/json"}) Mono call123testSpecialTags( @Body @NotNull @Valid ModelClient _body - ); + ); } diff --git a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeApi.java b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeApi.java index d2de1f5d0e63..4fdbd1dc1a86 100644 --- a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeApi.java +++ b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeApi.java @@ -47,9 +47,9 @@ public interface FakeApi { @Post(uri="/fake/create_xml_item") @Produces(value={"application/xml"}) @Consumes(value={"application/json"}) - Mono createXmlItem( + Mono createXmlItem( @Body @NotNull @Valid XmlItem xmlItem - ); + ); /** * Test serialization of outer boolean types * @@ -61,7 +61,7 @@ Mono createXmlItem( @Consumes(value={"*/*"}) Mono fakeOuterBooleanSerialize( @Body @Nullable Boolean _body - ); + ); /** * Test serialization of object with outer number type * @@ -73,7 +73,7 @@ Mono fakeOuterBooleanSerialize( @Consumes(value={"*/*"}) Mono fakeOuterCompositeSerialize( @Body @Nullable @Valid OuterComposite _body - ); + ); /** * Test serialization of outer number types * @@ -85,7 +85,7 @@ Mono fakeOuterCompositeSerialize( @Consumes(value={"*/*"}) Mono fakeOuterNumberSerialize( @Body @Nullable BigDecimal _body - ); + ); /** * Test serialization of outer string types * @@ -97,7 +97,7 @@ Mono fakeOuterNumberSerialize( @Consumes(value={"*/*"}) Mono fakeOuterStringSerialize( @Body @Nullable String _body - ); + ); /** * For this test, the body for this request much reference a schema named `File`. * @@ -106,9 +106,9 @@ Mono fakeOuterStringSerialize( @Put(uri="/fake/body-with-file-schema") @Produces(value={"application/json"}) @Consumes(value={"application/json"}) - Mono testBodyWithFileSchema( + Mono testBodyWithFileSchema( @Body @NotNull @Valid FileSchemaTestClass _body - ); + ); /** * testBodyWithQueryParams * @@ -118,10 +118,10 @@ Mono testBodyWithFileSchema( @Put(uri="/fake/body-with-query-params") @Produces(value={"application/json"}) @Consumes(value={"application/json"}) - Mono testBodyWithQueryParams( + Mono testBodyWithQueryParams( @QueryValue(value="query") @NotNull String query, @Body @NotNull @Valid User _body - ); + ); /** * To test \"client\" model * To test \"client\" model @@ -134,7 +134,7 @@ Mono testBodyWithQueryParams( @Consumes(value={"application/json"}) Mono testClientModel( @Body @NotNull @Valid ModelClient _body - ); + ); /** * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 @@ -157,7 +157,7 @@ Mono testClientModel( @Post(uri="/fake") @Produces(value={"application/x-www-form-urlencoded"}) @Consumes(value={"application/json"}) - Mono testEndpointParameters( + Mono testEndpointParameters( @NotNull @DecimalMin("32.1") @DecimalMax("543.2") BigDecimal number, @NotNull @DecimalMin("67.8") @DecimalMax("123.4") Double _double, @NotNull @Pattern(regexp="^[A-Z].*") String patternWithoutDelimiter, @@ -172,7 +172,7 @@ Mono testEndpointParameters( @Nullable @Format("yyyy-MM-dd'T'HH:mm:ss.SSSXXXX") OffsetDateTime dateTime, @Nullable @Size(min=10, max=64) String password, @Nullable String paramCallback - ); + ); /** * To test enum parameters * To test enum parameters @@ -189,7 +189,7 @@ Mono testEndpointParameters( @Get(uri="/fake") @Produces(value={"application/x-www-form-urlencoded"}) @Consumes(value={"application/json"}) - Mono testEnumParameters( + Mono testEnumParameters( @Header(name="enum_header_string_array") @Nullable List enumHeaderStringArray, @Header(name="enum_header_string", defaultValue="-efg") @Nullable String enumHeaderString, @QueryValue(value="enum_query_string_array") @Nullable List enumQueryStringArray, @@ -198,7 +198,7 @@ Mono testEnumParameters( @QueryValue(value="enum_query_double") @Nullable Double enumQueryDouble, @Nullable List enumFormStringArray, @Nullable String enumFormString - ); + ); /** * Fake endpoint to test group parameters (optional) * Fake endpoint to test group parameters (optional) @@ -212,14 +212,14 @@ Mono testEnumParameters( */ @Delete(uri="/fake") @Consumes(value={"application/json"}) - Mono testGroupParameters( + Mono testGroupParameters( @QueryValue(value="required_string_group") @NotNull Integer requiredStringGroup, @Header(name="required_boolean_group") @NotNull Boolean requiredBooleanGroup, @QueryValue(value="required_int64_group") @NotNull Long requiredInt64Group, @QueryValue(value="string_group") @Nullable Integer stringGroup, @Header(name="boolean_group") @Nullable Boolean booleanGroup, @QueryValue(value="int64_group") @Nullable Long int64Group - ); + ); /** * test inline additionalProperties * @@ -228,9 +228,9 @@ Mono testGroupParameters( @Post(uri="/fake/inline-additionalProperties") @Produces(value={"application/json"}) @Consumes(value={"application/json"}) - Mono testInlineAdditionalProperties( + Mono testInlineAdditionalProperties( @Body @NotNull Map param - ); + ); /** * test json serialization of form data * @@ -240,10 +240,10 @@ Mono testInlineAdditionalProperties( @Get(uri="/fake/jsonFormData") @Produces(value={"application/x-www-form-urlencoded"}) @Consumes(value={"application/json"}) - Mono testJsonFormData( + Mono testJsonFormData( @NotNull String param, @NotNull String param2 - ); + ); /** * To test the collection format in query parameters * @@ -255,11 +255,11 @@ Mono testJsonFormData( */ @Put(uri="/fake/test-query-parameters") @Consumes(value={"application/json"}) - Mono testQueryParameterCollectionFormat( + Mono testQueryParameterCollectionFormat( @QueryValue(value="pipe") @NotNull List pipe, @QueryValue(value="ioutil") @NotNull List ioutil, @QueryValue(value="http") @NotNull List http, @QueryValue(value="url") @NotNull List url, @QueryValue(value="context") @NotNull List context - ); + ); } diff --git a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeClassnameTags123Api.java b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeClassnameTags123Api.java index 5b9658621789..d7b134fe5bc9 100644 --- a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeClassnameTags123Api.java +++ b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/FakeClassnameTags123Api.java @@ -42,5 +42,5 @@ public interface FakeClassnameTags123Api { @Consumes(value={"application/json"}) Mono testClassname( @Body @NotNull @Valid ModelClient _body - ); + ); } diff --git a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/PetApi.java b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/PetApi.java index a49acded5819..7697468a7e91 100644 --- a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/PetApi.java +++ b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/PetApi.java @@ -41,9 +41,9 @@ public interface PetApi { @Post(uri="/pet") @Produces(value={"application/json"}) @Consumes(value={"application/json"}) - Mono addPet( + Mono addPet( @Body @NotNull @Valid Pet _body - ); + ); /** * Deletes a pet * @@ -52,10 +52,10 @@ Mono addPet( */ @Delete(uri="/pet/{petId}") @Consumes(value={"application/json"}) - Mono deletePet( + Mono deletePet( @PathVariable(name="petId") @NotNull Long petId, @Header(name="api_key") @Nullable String apiKey - ); + ); /** * Finds Pets by status * Multiple status values can be provided with comma separated strings @@ -67,7 +67,7 @@ Mono deletePet( @Consumes(value={"application/json"}) Mono> findPetsByStatus( @QueryValue(value="status") @NotNull List status - ); + ); /** * Finds Pets by tags * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. @@ -79,7 +79,7 @@ Mono> findPetsByStatus( @Consumes(value={"application/json"}) Mono> findPetsByTags( @QueryValue(value="tags") @NotNull Set tags - ); + ); /** * Find pet by ID * Returns a single pet @@ -91,7 +91,7 @@ Mono> findPetsByTags( @Consumes(value={"application/json"}) Mono getPetById( @PathVariable(name="petId") @NotNull Long petId - ); + ); /** * Update an existing pet * @@ -100,9 +100,9 @@ Mono getPetById( @Put(uri="/pet") @Produces(value={"application/json"}) @Consumes(value={"application/json"}) - Mono updatePet( + Mono updatePet( @Body @NotNull @Valid Pet _body - ); + ); /** * Updates a pet in the store with form data * @@ -113,11 +113,11 @@ Mono updatePet( @Post(uri="/pet/{petId}") @Produces(value={"application/x-www-form-urlencoded"}) @Consumes(value={"application/json"}) - Mono updatePetWithForm( + Mono updatePetWithForm( @PathVariable(name="petId") @NotNull Long petId, @Nullable String name, @Nullable String status - ); + ); /** * uploads an image * @@ -133,7 +133,7 @@ Mono uploadFile( @PathVariable(name="petId") @NotNull Long petId, @Nullable String additionalMetadata, @Nullable File _file - ); + ); /** * uploads an image (required) * @@ -149,5 +149,5 @@ Mono uploadFileWithRequiredFile( @PathVariable(name="petId") @NotNull Long petId, @NotNull File requiredFile, @Nullable String additionalMetadata - ); + ); } diff --git a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/StoreApi.java b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/StoreApi.java index 48b5ca5681f9..17b77d80594a 100644 --- a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/StoreApi.java +++ b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/StoreApi.java @@ -38,9 +38,9 @@ public interface StoreApi { */ @Delete(uri="/store/order/{order_id}") @Consumes(value={"application/json"}) - Mono deleteOrder( + Mono deleteOrder( @PathVariable(name="order_id") @NotNull String orderId - ); + ); /** * Returns pet inventories by status * Returns a map of status codes to quantities @@ -61,7 +61,7 @@ Mono deleteOrder( @Consumes(value={"application/json"}) Mono getOrderById( @PathVariable(name="order_id") @NotNull @Min(1L) @Max(5L) Long orderId - ); + ); /** * Place an order for a pet * @@ -73,5 +73,5 @@ Mono getOrderById( @Consumes(value={"application/json"}) Mono placeOrder( @Body @NotNull @Valid Order _body - ); + ); } diff --git a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/UserApi.java b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/UserApi.java index 64d347f66a11..41f8102271c7 100644 --- a/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/UserApi.java +++ b/samples/client/petstore/java-micronaut-client/src/main/java/org/openapitools/api/UserApi.java @@ -40,9 +40,9 @@ public interface UserApi { @Post(uri="/user") @Produces(value={"*/*"}) @Consumes(value={"application/json"}) - Mono createUser( + Mono createUser( @Body @NotNull @Valid User _body - ); + ); /** * Creates list of users with given input array * @@ -51,9 +51,9 @@ Mono createUser( @Post(uri="/user/createWithArray") @Produces(value={"*/*"}) @Consumes(value={"application/json"}) - Mono createUsersWithArrayInput( + Mono createUsersWithArrayInput( @Body @NotNull List _body - ); + ); /** * Creates list of users with given input array * @@ -62,9 +62,9 @@ Mono createUsersWithArrayInput( @Post(uri="/user/createWithList") @Produces(value={"*/*"}) @Consumes(value={"application/json"}) - Mono createUsersWithListInput( + Mono createUsersWithListInput( @Body @NotNull List _body - ); + ); /** * Delete user * This can only be done by the logged in user. @@ -73,9 +73,9 @@ Mono createUsersWithListInput( */ @Delete(uri="/user/{username}") @Consumes(value={"application/json"}) - Mono deleteUser( + Mono deleteUser( @PathVariable(name="username") @NotNull String username - ); + ); /** * Get user by user name * @@ -86,7 +86,7 @@ Mono deleteUser( @Consumes(value={"application/json"}) Mono getUserByName( @PathVariable(name="username") @NotNull String username - ); + ); /** * Logs user into the system * @@ -99,14 +99,14 @@ Mono getUserByName( Mono loginUser( @QueryValue(value="username") @NotNull String username, @QueryValue(value="password") @NotNull String password - ); + ); /** * Logs out current logged in user session * */ @Get(uri="/user/logout") @Consumes(value={"application/json"}) - Mono logoutUser(); + Mono logoutUser(); /** * Updated user * This can only be done by the logged in user. @@ -117,8 +117,8 @@ Mono loginUser( @Put(uri="/user/{username}") @Produces(value={"*/*"}) @Consumes(value={"application/json"}) - Mono updateUser( + Mono updateUser( @PathVariable(name="username") @NotNull String username, @Body @NotNull @Valid User _body - ); + ); } diff --git a/samples/client/petstore/java-micronaut-client/src/main/resources/application.yml b/samples/client/petstore/java-micronaut-client/src/main/resources/application.yml index 49d8cc32a022..8a26449b1a70 100644 --- a/samples/client/petstore/java-micronaut-client/src/main/resources/application.yml +++ b/samples/client/petstore/java-micronaut-client/src/main/resources/application.yml @@ -1,5 +1,4 @@ base-path: "http://petstore.swagger.io:80/v2/" -context-path: "/v2/" micronaut: application: diff --git a/samples/server/petstore/java-micronaut-server/src/main/java/org/openapitools/controller/PetController.java b/samples/server/petstore/java-micronaut-server/src/main/java/org/openapitools/controller/PetController.java index ed7a35b7f37a..5e39bc8a7f24 100644 --- a/samples/server/petstore/java-micronaut-server/src/main/java/org/openapitools/controller/PetController.java +++ b/samples/server/petstore/java-micronaut-server/src/main/java/org/openapitools/controller/PetController.java @@ -29,7 +29,7 @@ import io.swagger.annotations.*; @Generated(value="org.openapitools.codegen.languages.JavaMicronautServerCodegen") -@Controller("${context-path}") +@Controller public class PetController { /** * Add a new pet to the store @@ -59,9 +59,8 @@ public class PetController { public Mono addPet( @Body @NotNull @Valid Pet pet ) { - // TODO implement addPet() body; - Mono result = Mono.empty(); - return result; + // TODO implement addPet(); + return Mono.empty(); } /** @@ -86,13 +85,12 @@ public Mono addPet( @ApiResponse(code = 400, message = "Invalid pet value")}) @Delete(uri="/pet/{petId}") @Produces(value = {}) - public Mono deletePet( + public Mono deletePet( @PathVariable(value="petId") @NotNull Long petId, @Header(value="api_key") @Nullable String apiKey ) { - // TODO implement deletePet() body; - Mono result = Mono.empty(); - return result; + // TODO implement deletePet(); + return Mono.empty(); } /** @@ -122,9 +120,8 @@ public Mono deletePet( public Mono> findPetsByStatus( @QueryValue(value="status") @NotNull List status ) { - // TODO implement findPetsByStatus() body; - Mono> result = Mono.empty(); - return result; + // TODO implement findPetsByStatus(); + return Mono.empty(); } /** @@ -154,9 +151,8 @@ public Mono> findPetsByStatus( public Mono> findPetsByTags( @QueryValue(value="tags") @NotNull List tags ) { - // TODO implement findPetsByTags() body; - Mono> result = Mono.empty(); - return result; + // TODO implement findPetsByTags(); + return Mono.empty(); } /** @@ -184,9 +180,8 @@ public Mono> findPetsByTags( public Mono getPetById( @PathVariable(value="petId") @NotNull Long petId ) { - // TODO implement getPetById() body; - Mono result = Mono.empty(); - return result; + // TODO implement getPetById(); + return Mono.empty(); } /** @@ -219,9 +214,8 @@ public Mono getPetById( public Mono updatePet( @Body @NotNull @Valid Pet pet ) { - // TODO implement updatePet() body; - Mono result = Mono.empty(); - return result; + // TODO implement updatePet(); + return Mono.empty(); } /** @@ -248,14 +242,13 @@ public Mono updatePet( @Post(uri="/pet/{petId}") @Produces(value = {}) @Consumes(value = {"application/x-www-form-urlencoded"}) - public Mono updatePetWithForm( + public Mono updatePetWithForm( @PathVariable(value="petId") @NotNull Long petId, @Nullable String name, @Nullable String status ) { - // TODO implement updatePetWithForm() body; - Mono result = Mono.empty(); - return result; + // TODO implement updatePetWithForm(); + return Mono.empty(); } /** @@ -289,8 +282,7 @@ public Mono uploadFile( @Nullable String additionalMetadata, @Nullable CompletedFileUpload _file ) { - // TODO implement uploadFile() body; - Mono result = Mono.empty(); - return result; + // TODO implement uploadFile(); + return Mono.empty(); } } diff --git a/samples/server/petstore/java-micronaut-server/src/main/java/org/openapitools/controller/StoreController.java b/samples/server/petstore/java-micronaut-server/src/main/java/org/openapitools/controller/StoreController.java index f80e06ed121f..4b1364e8fb7d 100644 --- a/samples/server/petstore/java-micronaut-server/src/main/java/org/openapitools/controller/StoreController.java +++ b/samples/server/petstore/java-micronaut-server/src/main/java/org/openapitools/controller/StoreController.java @@ -27,7 +27,7 @@ import io.swagger.annotations.*; @Generated(value="org.openapitools.codegen.languages.JavaMicronautServerCodegen") -@Controller("${context-path}") +@Controller public class StoreController { /** * Delete purchase order by ID @@ -46,12 +46,11 @@ public class StoreController { @ApiResponse(code = 404, message = "Order not found")}) @Delete(uri="/store/order/{orderId}") @Produces(value = {}) - public Mono deleteOrder( + public Mono deleteOrder( @PathVariable(value="orderId") @NotNull String orderId ) { - // TODO implement deleteOrder() body; - Mono result = Mono.empty(); - return result; + // TODO implement deleteOrder(); + return Mono.empty(); } /** @@ -75,9 +74,8 @@ public Mono deleteOrder( @Get(uri="/store/inventory") @Produces(value = {"application/json"}) public Mono> getInventory() { - // TODO implement getInventory() body; - Mono> result = Mono.empty(); - return result; + // TODO implement getInventory(); + return Mono.empty(); } /** @@ -103,9 +101,8 @@ public Mono> getInventory() { public Mono getOrderById( @PathVariable(value="orderId") @NotNull @Min(1L) @Max(5L) Long orderId ) { - // TODO implement getOrderById() body; - Mono result = Mono.empty(); - return result; + // TODO implement getOrderById(); + return Mono.empty(); } /** @@ -131,8 +128,7 @@ public Mono getOrderById( public Mono placeOrder( @Body @NotNull @Valid Order order ) { - // TODO implement placeOrder() body; - Mono result = Mono.empty(); - return result; + // TODO implement placeOrder(); + return Mono.empty(); } } diff --git a/samples/server/petstore/java-micronaut-server/src/main/java/org/openapitools/controller/UserController.java b/samples/server/petstore/java-micronaut-server/src/main/java/org/openapitools/controller/UserController.java index a321e00086b7..9e7a6456025d 100644 --- a/samples/server/petstore/java-micronaut-server/src/main/java/org/openapitools/controller/UserController.java +++ b/samples/server/petstore/java-micronaut-server/src/main/java/org/openapitools/controller/UserController.java @@ -28,7 +28,7 @@ import io.swagger.annotations.*; @Generated(value="org.openapitools.codegen.languages.JavaMicronautServerCodegen") -@Controller("${context-path}") +@Controller public class UserController { /** * Create user @@ -49,12 +49,11 @@ public class UserController { @Post(uri="/user") @Produces(value = {}) @Consumes(value = {"application/json"}) - public Mono createUser( + public Mono createUser( @Body @NotNull @Valid User user ) { - // TODO implement createUser() body; - Mono result = Mono.empty(); - return result; + // TODO implement createUser(); + return Mono.empty(); } /** @@ -76,12 +75,11 @@ public Mono createUser( @Post(uri="/user/createWithArray") @Produces(value = {}) @Consumes(value = {"application/json"}) - public Mono createUsersWithArrayInput( + public Mono createUsersWithArrayInput( @Body @NotNull List user ) { - // TODO implement createUsersWithArrayInput() body; - Mono result = Mono.empty(); - return result; + // TODO implement createUsersWithArrayInput(); + return Mono.empty(); } /** @@ -103,12 +101,11 @@ public Mono createUsersWithArrayInput( @Post(uri="/user/createWithList") @Produces(value = {}) @Consumes(value = {"application/json"}) - public Mono createUsersWithListInput( + public Mono createUsersWithListInput( @Body @NotNull List user ) { - // TODO implement createUsersWithListInput() body; - Mono result = Mono.empty(); - return result; + // TODO implement createUsersWithListInput(); + return Mono.empty(); } /** @@ -130,12 +127,11 @@ public Mono createUsersWithListInput( @ApiResponse(code = 404, message = "User not found")}) @Delete(uri="/user/{username}") @Produces(value = {}) - public Mono deleteUser( + public Mono deleteUser( @PathVariable(value="username") @NotNull String username ) { - // TODO implement deleteUser() body; - Mono result = Mono.empty(); - return result; + // TODO implement deleteUser(); + return Mono.empty(); } /** @@ -161,9 +157,8 @@ public Mono deleteUser( public Mono getUserByName( @PathVariable(value="username") @NotNull String username ) { - // TODO implement getUserByName() body; - Mono result = Mono.empty(); - return result; + // TODO implement getUserByName(); + return Mono.empty(); } /** @@ -190,9 +185,8 @@ public Mono loginUser( @QueryValue(value="username") @NotNull @Pattern(regexp="^[a-zA-Z0-9]+[a-zA-Z0-9\\.\\-_]*[a-zA-Z0-9]+$") String username, @QueryValue(value="password") @NotNull String password ) { - // TODO implement loginUser() body; - Mono result = Mono.empty(); - return result; + // TODO implement loginUser(); + return Mono.empty(); } /** @@ -212,10 +206,9 @@ public Mono loginUser( @ApiResponse(code = 0, message = "successful operation")}) @Get(uri="/user/logout") @Produces(value = {}) - public Mono logoutUser() { - // TODO implement logoutUser() body; - Mono result = Mono.empty(); - return result; + public Mono logoutUser() { + // TODO implement logoutUser(); + return Mono.empty(); } /** @@ -239,12 +232,11 @@ public Mono logoutUser() { @Put(uri="/user/{username}") @Produces(value = {}) @Consumes(value = {"application/json"}) - public Mono updateUser( + public Mono updateUser( @PathVariable(value="username") @NotNull String username, @Body @NotNull @Valid User user ) { - // TODO implement updateUser() body; - Mono result = Mono.empty(); - return result; + // TODO implement updateUser(); + return Mono.empty(); } } diff --git a/samples/server/petstore/java-micronaut-server/src/main/resources/application.yml b/samples/server/petstore/java-micronaut-server/src/main/resources/application.yml index 932949d0b39c..dfac8f729024 100644 --- a/samples/server/petstore/java-micronaut-server/src/main/resources/application.yml +++ b/samples/server/petstore/java-micronaut-server/src/main/resources/application.yml @@ -1,10 +1,10 @@ -context-path: "/v2/" micronaut: application: name: petstore-micronaut-server server: port: 8080 + context-path: "/v2" security: # authentication: bearer | cookie | session | idtoken